2017-10-06 7 views
0

나는 4 개의 서로 다른 데이터 세트를 가지고 있으며 각 데이터 세트는 2 개의 클래스 중 하나에 속하는 2 차원 샘플을 포함합니다 : 1 또는 2 각 샘플의 클래스 레이블 (1 또는 2)은 마지막 열에 있습니다. 첫 번째와 두 번째 열은 샘플을 나타내는 2D 점의 좌표를 포함합니다. 내 작업입니다 K의 최고의 가치를 찾으 K-NN을 위해k의 최상의 가치를 찾는 방법 k-NN의 경우?

  1. 및 Scikit

나는 기계 학습 및 파이썬에 새로운 오전를 사용하여 1-NN의 결과와 비교합니다. 최선의 k를 찾는 법을 알려주고 어떤 방도를 선택해야 하는지를 알려주십시오.

답변

1

귀하의 경우 khyperparameter입니다. 이를 조정하려면 데이터 세트를 열차 및 테스트 버킷으로 분할하고 값 k (예 : 1 ~ 20)에 대해 테스트의 각 요소를 여러 번 분류해야합니다. 모든 경우에 정확도 (또는 정밀도/리콜)를 계산하십시오.

그런 다음 모든 k에 대해 정확도 값을 플롯하고 "k"작은 정확도를 제공하는 충분히 작은 k를 선택하십시오. 일반적으로 사람들은 차트의 기울기를보고 이전 값 k-1과 같이 가장 작은 값인 k을 선택하면 정확도가 크게 떨어집니다.

k은 데이터에 따라 크게 달라질 수 있습니다. 예를 들어, 아래 표 (신용 : https://kevinzakka.github.io/2016/07/13/k-nearest-neighbor/)에서 가장 좋은 오 분류 오류가 발생하므로 k의 좋은 선택은 8 일 것입니다.

enter image description here

이 링크도 도움이 될 수 있습니다 : 당신의 응답을 https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm#Parameter_selection

+0

감사합니다. 나는 또 다른 의심을 가지고있다 ... 나는 k 값을 찾지 만, 하나 이상의 k에 대해서 같은 정확도를 갖는다. 그래서 k를 선택해야하는이 조건에서? 최소 k 값 또는 최대 k 값? – dinesh12

+0

일반적으로 min k는 시스템이 동일한 결과를 산출하는 데 필요한 정보가 적기 때문에 더 좋습니다. 실험 전반에 걸쳐 서로 다른 k에 대해 실험을 여러 번 실행하고 평균 정확도를 시도 할 수도 있습니다. 알고리즘의 견고성이 향상 될 수 있습니다. –