ML с sklearn: функция подгонки KNeighborRegressor застряла на большой БД - PullRequest
0 голосов
/ 20 сентября 2018

Я уже некоторое время работаю со средствами sklearn, но сейчас у меня есть эта странная проблема.Я просто пытаюсь построить Регрессор KNN с помощью sklearn, но выполнение длится вечно, а при отладке похоже, что выполнение функции подгонки занимает вечность.Я должен упомянуть, что набор данных большой (~ 25 000 записей, с 10 функциями), но все же - я жду час сейчас и никаких результатов.

Что может вызвать это?

Соответствующий кусок кода:

 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 42)
regressor = neighbors.KNeighborsRegressor(n_neighbors = n, algorithm = algorithm, weights = weights)
regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)
train_score = regressor.score(X_train, y_train)
test_score = regressor.score(X_test, y_test)

1 Ответ

0 голосов
/ 20 сентября 2018

Такова природа КНН.Сложность алгоритмического времени: KNN: O(nd), где n - количество точек данных, а d - размерность (в вашем случае n = 25k, d = 10)

. KNN рассмотрит все точки данных и выберет вершину * 1005.* ближайшие соседи.Так что, если ваши данные большие, это займет больше времени.K является гиперпараметром, и вы можете настроить его, используя GridSearchCV или RandomizedSearchCV

У вас есть следующие опции:

  1. Уменьшить данные(т. е. уменьшить количество точек данных, скажем, от 25k до 15K)
  2. Увеличение размера системной памяти и скорости процессора ИЛИ запустить KNN в облаке
  3. Подождите, пока KNN не завершится
  4. Не использовать KNN, если у вас есть ограничение задержки

Вы также можете попробовать SVM с ядром RBF, так как это хорошее приближение к KNN и это займет меньше времени

...