Это может быть медленно по своей сути. Я не очень знаком с этим набором данных, но, глядя на него в Kaggle, похоже, он содержит более 4 миллионов точек данных. Со страницы sklearn в KNN:
Для каждой итерации сложность времени равна O (n_components x n_samples> x min (n_samples, n_features)).
Также сохраняйте вимейте в виду, что для большого набора данных knn придется измерить расстояние между данной точкой данных и всеми точками данных в обучающем наборе, чтобы сделать прогноз, который в вычислительном отношении дорог.
Использование больших чисел на kдля очень большого набора данных вы можете получить очень низкую производительность. То, что я мог бы сделать, это:
1) посмотреть, сколько времени занимает подгонка knn с одним значением k и делать прогнозы для тренировочного набора с одним значением k. Если это займет много времени, то, как я подозреваю, это ваша проблема.
К сожалению, иногда для очень больших наборов данных мы ограничены в выборе алгоритма временной сложностью алгоритмов, которые мы хотели бы использовать. Например, регрессия гребня ядра - это отличный алгоритм, который просто плохо масштабируется для больших наборов данных из-за необходимости найти обратную матрицу, которая имеет кубическую сложность по времени.