Я пытаюсь изучить KNN, работая над набором данных по раку молочной железы, предоставленным репозиторием UCI. Общий размер набора данных составляет 699 с 9 непрерывными переменными и 1 переменной класса.
Я проверил свою точность на наборе перекрестной проверки. Для К = 21 и К = 19. Точность составляет 95,7%.
from sklearn.neighbors import KNeighborsClassifier
neigh = KNeighborsClassifier(n_neighbors=21)
neigh.fit(X_train, y_train)
y_pred_val = neigh.predict(X_val)
print accuracy_score(y_val, y_pred_val)
Но для K = 1 я получаю Точность = 97,85% K = 3, Точность = 97,14
Я читаю
Выбор k очень важен. Небольшое значение k означает, что шум будет иметь большее влияние на результат. Большое значение делает его дорогостоящим в вычислительном отношении и в некотором роде противоречит основной философии KNN (то, что точки, которые находятся рядом, могут иметь аналогичные плотности или классы). Простой подход к выбору k заключается в том, что k = n ^ (1/2). здесь
Какое значение K следует учитывать для моей модели. Можете ли вы, ребята, объяснить логику, стоящую за этим?
Заранее спасибо!