반응형
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import numpy as np
실습에 사용할 라이브러리를 import 합니다.
dir = './gdrive/My Drive/Colab Notebooks/'
trainData = np.genfromtxt(dir+'process_data_train.csv',delimiter=',', skip_header=1)
X_train = trainData[:,:-1]
y_train = trainData[:,-1]
testData = np.genfromtxt(dir+'process_data_test.csv',delimiter=',', skip_header=1)
X_test = testData[:,:-1]
y_test = testData[:,-1]
이제 실습에 활용할 데이터를 읽어옵니다. 좋은 라이브러리를 활용해 csv 파일을 쉽게 임포트 시킬 수 있습니다. 여러 오픈된 데이터를 가지고 실습하셔도 좋을 것 같습니다.
neighbors_value = 3
kNN_classifier = KNeighborsClassifier(n_neighbors = neighbors_value)
분류할 클래스 수를 정의합니다. 이 값에 따라 결과가 많이 달라질 수 있습니다.
kNN_classifier.fit(X_train,y_train)
이제 로드한 데이터를 가지고, 학습을 실시합니다.
y_hat = kNN_classifier.predict(X_test)
accuracy = accuracy_score(y_test,y_hat)
print(accuracy)
"""
0.7272727272727273
"""
테스트 데이터를 넣어봅니다. 그리고 해당 데이터와 예측 데이터를 비교해봅니다. 정확도가 약 0.72 가 나온 것을 확인할 수 있습니다.
import matplotlib.pyplot as plt
test_result = []
k_neighbors = [1,3,5,7,9,11,13,15]
for k_neighbor in k_neighbors:
kNN_classifier = KNeighborsClassifier(n_neighbors = k_neighbor)
kNN_classifier.fit(X_train,y_train)
y_hat = kNN_classifier.predict(X_test)
accuracy = accuracy_score(y_test,y_hat)
test_result.append(accuracy)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(k_neighbors, test_result, '-x', c='blue', label="Accuracy of test")
plt.xlabel('the number of neighbors')
plt.ylabel('accuracy')
plt.legend(loc='upper right')
plt.show()
이제 분류할 수에 따라 accuracy가 어떻게 변하는지 알아보겠습니다. 중간 값에서는 정확도가 떨어지는 것을 확인할 수 있었습니다. 그 후로는 비슷한 수준으로 예측하는 것을 알 수 있습니다.
반응형
'SW > 머신러닝' 카테고리의 다른 글
머신러닝 : 역사, 개념, 종류에 대해 알아보기 (0) | 2019.12.26 |
---|---|
머신러닝과 스마트 팩토리 : 정의와 관련 개념 (0) | 2019.12.25 |
python : 머신러닝 : LinearRegression, Ridge, Lasso : 예제, 실습 (0) | 2019.11.24 |
머신 러닝에서 파이썬이 왜 그렇게 인기가 있을까요? (0) | 2019.11.02 |
머신러닝 : feature learning : 개념 (0) | 2019.10.08 |