더북(TheBook)

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) ------ for 문을 반복하면서 K 값 변경
    y_pred = classifier.predict(X_test)
    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 입니다.

K 값이 50일 때 정확도가 93%였다면 K 값이 1일 때는 정확도가 100%로 높아졌습니다. 이와 같이 K-최근접 이웃 알고리즘은 K 값에 따라 성능이 달라질 수 있으므로 초기 설정이 매우 중요합니다.

 

 


  4 실행 결과가 책과 다를 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.