본문 바로가기

Programming/Machine Learning

BMI 학습하기

bmi_500.csv
0.01MB

목표

- 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