Pipeline
1 | 0. Data 수집 |
도메인 지식 확보하기
- Data를 내려받아 쓰는 경우 Docs가 있다면 잘 읽어보고 데이터를 이해한다
- Docs가 없고 도메인 지식이 없을 경우 구글링을 하거나 책을 통해 공부한다
- 웬만하면 내가 관심있는 분야를 선정한다
데이터 불러오기
Pandas DataFrame에 맞게 불러온다
seaborn에서 불러올 때
1 | import pandas as pd |
file에서 불러올 때
1 | import pandas as pd |
Data 파악하기
HEAD
1 | import pandas as pd |
Tidy Data인지 확인하기
데이터 양에 비해 Wide Format인지 아직 판단하기 이르지만
언뜻 봐서 melt할만한 Column은 없어보인다.
Wide Format 데이터의 양에 비해 Column이 많은 DataFrame, 즉 가로로 넓은 형태의 데이터 형태를 말한다.
info로 데이터 정보 확인하기
1 | import pandas as pd |
info로 알 수 있는 것들
1 | 1. 데이터 갯수 => 150개 (데이터 양이 적다. 하지만 예제 데이터이니 일단 한번 끝까지 해보자) |
미싱데이터 시각화 하기
info로 미싱데이터를 확인 했지만 혹시 어정쩡하게 미싱 데이터가 있거나
미싱데이터의 분포를 쉽게 확인하려면 그래프를 그리자
1 | import missingno as mino |
Label Encoding
info를 확인 했을 때 species data를 숫자형으로 바꿔야 된다고 판단 했었고 target 데이터의 값이 문자이면
학습을 할 수 없기 때문에 숫자로 인코딩 해준다 (인코딩과 동시에 dtype 자동변경)
Scikit LabelEncoder 활용하기
1 | import pandas as pd |
Replace 활용하기
1 | import pandas as pd |
Train-Test Set 분리하기
Train, Test set을 분리할 때는 보유한 데이터의 숫자를 감안해서 쪼갠다
데이터의 갯수가 만개 이하일 때는 보통 Train : Test 비율 80 : 20 또는 75 : 25로 분할한다
그러나 그 이상으로 데이터가 많을 경우 최대한 Train 데이터 비율을 늘려 사용한다.
출처: Brunch
1 | from sklearn.model_selection import train_test_split |
데이터 분석하기
데이터의 숨은 의미를 찾아보자!
수치로 데이터 형태, 분포, 경향 확인하기
1 | import pandas as pd |
describe 그래프로 보기
describe는 숫자로 나오기 때문에 한눈에 파악하기 힘들다
따라서 그래프로 확인!
1 | import pandas as pd |
sepal_width 데이터에서 outlier, 즉 소수의 데이터가 데이터 분포에서 멀리 떨어져 있는 경우가 포착되었다.
하지만 데이터의 갯수도 적고 크게 벗어난 갖이 아니므로 그냥 냅두자
데이터간 산점도 그래프 그리기
1 | import pandas as pd |
왜도, 첨도 그래프 그리기
1 | import pandas as pd |
왜도 왜도는 데이터가 대칭이 아닌 정도를 나타낸다. 만약 왜도의 값이 음수이면 오른쪽으로 치우친 정도를 나타내고 왜도의 값이 양수이면 왼쪽으로 치우친 정도를 나타낸다.
첨도 첨도는 데이터가 중간값 분포의 정도를 나타낸다. 보통 첨도의 값이 3보다 작으면 완만한 분포를 나타내고 첨도의 값이 3보다 크면 뾰족한 분포를 나타낸다. 지금 데이터에서는 음수면 완만 양수면 뾰족이라고 생각하면 된다.
Data 전처리하기
연습용 데이터라 딱히 전처리할게 없음.. 그래도 학습용으로 추후에 추가할 것.
모델링 하기
iris data는 정형데이터에 target data 갯수가 유한개 이므로 classification 방법 중
가장 무난한 logistic regression으로 분류를 시작해보자
Scikit으로 기계학습 하는 순서
1 | 1. 활용할 모델 이름 import |
LogisticRegression
1 | from sklearn.linear_model import LogisticRegression |
성능 검사하기
Cross_val_score를 통해 대략적인 성능을 확인해보자
Cross_val_score
1 | from sklearn.model_selection import cross_val_score |
결과 분석 Logistic regression으로 분류하고 cross_val_score를 확인해본 결과 0.835라는 정확도가
나왔기 때문에 iris data는 앞으로 도전해볼 모델도 분류 모델임을 먼저 시도해보는 것이 좋을 것이라고 판단된다.
K-Means
1 | from sklearn.neighbors import KNeighborsClassifier |
SVM
1 | from sklearn.svm import SVC |
Naive Bayes
1 | from sklearn.naive_bayes import GaussianNB |
학습 모델로 새로운 값 예측 해보기
1 | # 학습된 값들 |
Train - Test - split으로 정확도 보기
1 | import seaborn as sns |