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 실행 결과가 책과 다를 수 있습니다.

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