numpy.pandas/pandas 문법과 메서드/matplotlib/train&test 모델 학습을 종합적으로 활용해 보는 시간!! 떨린다😂 겸사겸사 다시 정리해보자! 화이팅!!😆
※ EDA(Exploratory Data Analysis, 탐색적 데이터 분석)
데이터셋 이해 -> 데이터 가져오기
> mkdir -p ~/aiffel/pokemon_eda/data
> ln -s ~/data* ~/aiffel/pokemon_eda/data
컬럼명 | data type | 설명 |
---|---|---|
# | int | 포켓몬 Id number |
Name | str | 포켓몬 이름(unique) |
Type1 | str | 첫번째 속성 |
Type2 | str | 두번째 속성(없는 경우 결측값 NaN) |
Total | int | 총 Stats 합 |
HP | int | 포켓몬 체력 |
Attack | int | 물리 공격 |
Defense | int | 물리 방어력 |
Sp.Atk | int | 특수 공격력 |
Sp.Def | int | 특수 공격에 대한 방어력 |
Speed | int | 수치가 높을 수록 선공격권 획득 |
Generation | int | 포켓몬 세대(1~6세대) |
Legendary | bool | 전설의 포켓몬 True/False |
(이걸 어떻게 정리하나??🙄)
총 65마리의 전설의 포켓몬이 9개의 Total값만 가진다는 것은, 약 7.22마리 끼리는 같은 Total 스탯 값을 가진다는 의미
약 3.77마리만 같은 Total 스탯 값을 가짐
Total값의 다양성 : 일반포켓몬 = 전설포켓몬의 2배
일반 포켓몬이 갖지 못하는 전설 포켓몬의 Total값 : 680, 720, 770, 780
Total은 속성값의 다양성과 특수성(unique)을 확인함.
전설 포켓몬 여부를 예측하는데 영향을 주는 요소
그렇다는데... 이해는 잘 안가....그래서 정리를 어찌해야할지...
머신러닝을 수행할 사이킷런(scikit-learn)모델은 문자열을 입력값으로 허용하지 않음
숫자 데이터 또는 부울(bool) 데이터 등으로 전처리 과정(원-핫인코딩)이 필요
name_count 컬럼을 생성 후 길이가 10을 넘는지 아닌지에 대한 categorical 컬럼을 생성
legendary 포켓몬에서 많이 등장하는 이름 토큰 추출
» 토큰 포함 여부를 원-핫 인코딩(One-Hot Encoding) 처리
[바꿀횟수]
) : 문자열 변경[A-Z]
: 대문자 중 하나[a-z]
: 소문자 중 하나*
:하나 이상인 패턴 (*
는 정규표현식 중에서 "반복"을 나타내는 기호)가설검정
실제 True | 실제 False | |
---|---|---|
통계적결정 True | TP(True Positive) 옳은 결정() | FP(False Positive) 제2종오류( = 검정력) |
통계적결정 False | FN(False Negative) 제1종오류( = 유의수준) | TN(True Negative) 옳은 결정() |
정확도(Accuracy) : 실제값으로 얼마나 가까이 있는지 나타냄
$$ (Accurancy) = \frac{TP + TN}{TP+TN +FP+FN} $$
정밀도(Precision)
재현율(Recall)
성능평가 종류
- confusion_matrix(y_true, y_pred)
- accuracy_score(y_true, y_pred)
- precision_score(y_true, y_pred)
- recall_score(y_true, y_pred)
- fbeta_score(y_true, y_pred, beta)
- f1_score(y_true, y_pred)
- classfication_report(y_true, y_pred)
- roc_curve
- auc
분류 성능평가
피쳐 엔지니어링(Feature Engineering)
정리 깔끔하게 하셨네요!👍 6번은 노드에 없던 내용 같은데, 따로 찾으신 내용인가 보네요.