Page 14 -
P. 14
코드 3-4 모델 정확도
from sklearn.metrics import accuracy_score
y_pred = knn.predict(X_test)
print("정확도: {}".format(accuracy_score(y_test, y_pred)))
그러면 다음 결과가 출력됩니다.
정확도: 0.9333333333333333
참고로 정확도 실행 결과가 책 결과와 다를 수 있습니다. train_test_split() 메서드는 데이터를
무작위로 분할하므로 코드를 실행할 때마다 정확도에 차이가 있습니다. 여러 차례 실행한 후 평균
을 찾는 것이 좋습니다.
K=50일 때 예측 값이 약 93%로, 수치가 높습니다. 그럼 이제 최적의 K 값을 구하고 그것에 대한
정확도를 살펴보겠습니다.
for 문을 이용하여 K 값을 1부터 10까지 순환하면서 최적의 K 값과 정확도를 찾습니다.
코드 3-5 최적의 K 찾기
k = 10
acc_array = np.zeros(k)
for k in np.arange(1, k+1, 1): K는 1에서 10까지 값을 취함
classifier = KNeighborsClassifier(n_neighbors=k).fit(X_train, y_train)
y_pred = classifier.predict(X_test) for 문을 반복하면서 K 값 변경
acc = metrics.accuracy_score(y_test, y_pred)
acc_array[k-1] = acc
max_acc = np.amax(acc_array)
acc_list = list(acc_array)
k = acc_list.index(max_acc)
print("정확도", max_acc, "으로 최적의 k는", k+1, "입니다.")
다음은 최적의 K와 그에 대한 정확도 결과입니다. 4
정확도 1.0 으로 최적의 k는 1 입니다.
4 실행 결과가 책과 다를 수 있습니다.
070