목표
- 500명의 키와 몸무게, 비만도 라벨을 이용해 비만을 판단하는 모델을 만들어보자.
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics # 평가를 위한 모듈
tbl = pd.read_csv('data/bmi_500.csv', index_col='Label')
tbl.head()
tbl.loc['Normal']
tbl.info() # 전체 row수, 결측치 여부, 컬럼별 정보
tbl.describe() # 기술통계 확인
tbl.index.unique()
각 비만도 등급별로 시각화
def myScatter(label, color):
tmp = tbl.loc[label]
plt.scatter(tmp['Weight'],
tmp['Height'],
c = color,
label = label)
plt.figure(figsize=(5,5)) # 가로, 세로 크기
myScatter('Extremely Weak','black')
myScatter('Weak','blue')
myScatter('Normal','green')
myScatter('Overweight','pink')
myScatter('Obesity','purple')
myScatter('Extreme Obesity','red')
plt.legend(loc='upper right')
plt.xlabel('Weight')
plt.ylabel('Height')
plt.show()
모델링
1. 문제와 답으로 분리
2. 훈련셋과 평가셋으로 분리
3. 모델생성 및 하이퍼파라미터 조정
4. 학습 및 평가
data = pd.read_csv('data/bmi_500.csv')
data.head()
X = data.loc[ : , 'Height':'Weight' ]
y = data.loc[ : , 'Label']
print(X.shape)
print(y.shape)
X_train = X.iloc[:350, :]
X_test = X.iloc[350:, :]
y_train = y.iloc[:350]
y_test = y.iloc[350:]
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)
knn_model = KNeighborsClassifier(n_neighbors=10)
knn_model.fit(X_train,y_train)
pre = knn_model.predict(X_test)
metrics.accuracy_score(pre,y_test)
활용하기
knn_model.predict([[100,20],[185,43]])
'Programming > Machine Learning' 카테고리의 다른 글
버섯데이터 분류 (0) | 2020.02.17 |
---|---|
iris 품종분류 (0) | 2020.02.17 |
서울시 구별 CCTV 현황 분석 (0) | 2020.02.16 |
Matplotlib교통사고데이터실습 (0) | 2020.02.16 |
Matplotlib 실습 (0) | 2020.02.16 |