공부/AIFFEL

FUNDAMENTAL 11. 가랏, 몬스터볼! 전설의 포켓몬 찾아 삼만리

dong_dong_2 2021. 1. 22. 15:57

FUNDAMENTAL 11. 가랏, 몬스터볼! 전설의 포켓몬 찾아 삼만리
1. 안녕, 포켓몬과 인사해
    - 우리가 다룰 데이터는 포켓몬 게임의 데이터이다.
    - 이 데이터를 통해서 EDA(Exploratory Data Analysis, 탐색적 데이터 분석)을 할 것임
    - 데이터를 보고 일반 포켓몬과 전설 포켓몬을 분류해보기
2. 포켓몬 데이터 불러오기
    - pd.read_csv
    - 원본 데이터를 보존하기 위해 EDA할 데이터를 copy로 만들기
    - 일반 포켓몬과 전설 포켓몬 데이터 살펴보기 : head, tail
3. 전설 포켓몬? 먼저 샅샅이 살펴보자! (1) 결측치와 전체 칼럼
    - 결측치 확인하기 : isnull, isna
    - 전체 칼럼 이해하기 : columns
4. 전설 포켓몬? 먼저 샅샅이 살펴보자! (2) ID와 이름
    - set을 이용하여 ID와 이름의 unique 보기
5. 전설 포켓몬? 먼저 샅샅이 살펴보자! (3) 포켓몬의 속성
    - 포켓몬 데이터의 각 열들 살펴보기
    - 데이터 분포 확인하기 : figure, subplot, show, countplot, pivot_table
6. 전설 포켓몬? 먼저 샅샅이 살펴보자! (4) 모든 스탯의 총합
    - 데이터 열 중 스탯에 해당하는 6개 속성 값의 합 = total(열 이름)
    - 총 스탯과 전설 포켓몬의 관계가 있는지 살펴보기 : scatterplot
7. 전설 포켓몬? 먼저 샅샅이 살펴보자! (5) 세부 스탯
    - 각 스탯들과 전설 포켓몬의 관계가 있는지 살펴보기
8. 전설 포켓몬? 먼저 샅샅이 살펴보자! (6) 세대
    - 세대에 따라 전설 포켓몬 수 확인하기 : countplot
9. 전설의 포켓몬과 일반 포켓몬, 그 차이는?

    - Total값 : subplot, set_size_inches, scatterplot, show

   - 이름 : pd.concat, reset_index, lambda함수, countplot

10. 모델에 넣기위해! 데이터 전처리하기 (1) 이름의 길이가 10 이상인가?
    - 이름의 길이(name_count)와 토큰 추출(one-hot encoding으로 처리)
    - 이름의 길이가 10이상인가 확인하는 열 만들기
    - 토큰 추출을 위해 알파벳이 아닌 문자 확인(isalpha), 공백 및 특수문자 처리(replace), 이름을 띄어쓰기 / 대문자 기준으로 분리하기 위해 정규표현식 사용(findall("[A-Z][a-z]*")
11. 모델에 넣기위해! 데이터 전처리하기 (2) type1 & type2! 범주형 데이터 전처리하기
    - 범주형 데이터 전처리는 정수인코딩(Integer Encoding)과 원-핫인코딩(One Hot Encoding)이 있다.
    - 정수인코딩은 각 카테고리를 숫자로 변환하는 방식이고, 원-핫인코딩은 단 한 개의 1과 나머지는 0으로 이루어진 벡터로 변환하는 방식이다.
12. 가랏, 몬스터볼! (1) 가장 기본 데이터로 만드는 베이스라인
    - 원본 데이터를 사용하여 모델을 만들고 학습 시킨다.
    - 성능이 안 좋을지 모르지만, 성능 하한선을 제공함으로써 우리가 만들 모델을 평가하는 지표로 쓰일 수 있다.
    - 여기서는 sklearn패키지의 train_test_split로 데이터를 나누고 모델은 의사결정나무(decision tree)를 썼다.
    - 전설 포켓몬 분포가 불균형적 이므로 accuracy 말고 recall를 지표로 모델을 판단했다.

13. 가랏, 몬스터볼! (2) 피쳐 엔지니어링 데이터로 학습시키면 얼마나 차이가 날까
    - 우리가 지금까지 열심히 전처리 해온 데이터로 모델을 학습시킨다.
    - columns 중 문자열이 아닌 것만 이용하여 학습 시킨다.
    - 베이스라인 모델과 동일하게 데이터를 나누고 학습시킨다.
    - 결과적으로 전처리한 데이터가 훨씬 좋은 성능을 보였다.