지도 학습(Supervised Learning) :
훈련하기 위한 데이터가 존재할 때 사용할 수 있는 기계학습(Machine Learning)의 한 방법
훈련 데이터(training data)는 입력(input)과 정답(label, target)으로 구성
사용할 지도학습 알고리즘
K-최근접 이웃 알고리즘(K-Nearest Neighbors algorithm, KNN)
새로운 데이터가 주어졌을 때, 근처 k 개의 데이터 중에서 특성(feature)이 비슷한 범주로 새로운 데이터를 분류하는 방법
사용할 데이터 확인
bmi_500.csv
import pandas as pd
df = pd.read_csv('bmi_500.csv', index_col='Label')
print(df.head())
print(df.index.unique())
총 4개의 컬럼과 6종류의 레이블이 있음을 확인
import matplotlib.pyplot as plt
def easy_scatter(label, color):
t = df.loc[label]
plt.scatter(t['Weight'], t['Height'], color=color, label=label)
easy_scatter('Extreme Obesity', 'black')
easy_scatter('Weak', 'blue')
easy_scatter('Obesity', 'pink')
easy_scatter('Overweight', 'red')
easy_scatter('Extremely Weak', 'yellow')
easy_scatter('Normal', 'green')
plt.legend()
plt.show()
데이터 불러오기
사용할 라이브러리와 데이터를 로드
# import modules
import pandas as pd
from sklearn import metrics
from sklearn.neighbors import KNeighborsClassifier
# load data
df = pd.read_csv('bmi_500.csv')
X = df.loc[:, 'Height' : 'Weight']
y = df.loc[:, 'Label']
print(X.shape) # (500, 2)
print(y.shape) # (500, )
훈련 셋과 평가 셋 분리
input value( X, 독립변수)는 2dimension 임을 확인
**패키지 사용 시
from sklearn.model_selection import train_test_split
# train test split
X_train = X.iloc[:350, :]
X_test = X.iloc[350:,:]
y_train = y.iloc[:350]
y_test = y.iloc[350:]
모델 훈련 및 정확도 평가
model이라는 knn 분류 클래스의 객체를 생성
데이터 학습 후 accuracy 측정
# model train
model = KNeighborsClassifier(n_neighbors=10)
model.fit(X_train, y_train)
# accuracy
y_pred = model.predict(X_test)
res = metrics.accuracy_score(y_test, y_pred) # acc : 93 %
새로운 데이터 예측
키 185cm 몸무게 43kg 인 사람과 100cm, 20kg 인 사람의
비만도 예측
model.predict([[185, 43], [100, 20]])
# ['Extremely Weak' 'Normal']
'Programming > [Machine Learning]' 카테고리의 다른 글
[Python] 머신 러닝 간단한 xor 예제 (0) | 2021.07.20 |
---|