Спокойной ночи,
Я хотел бы использовать модель ближайшего соседа для регрессии с неоднородными весами. Я видел в Руководстве пользователя , что я могу использовать weights='distance'
в объявлении модели, и тогда веса будут обратно пропорциональны расстоянию, но результаты, которые я получаю, были не такими, как я хотел.
Я видел в Документации , что я могу использовать функцию для весов (с учетом расстояний), используемых в прогнозе, поэтому я создал следующую функцию:
from sklearn.neighbors import KNeighborsRegressor
import numpy
nparray = numpy.array
def customized_weights(distances: nparray)->nparray:
for distance in distances:
if (distance >= 100 or distance <= -100):
yield 0
yield (1 - abs(distance)/100)
И объявили метод так:
knn: KNeighborsRegressor = KNeighborsRegressor(n_neighbors=50, weights=customized_weights ).fit(X_train, y_train)
До этой части все работает нормально. Но когда я попытался предсказать с помощью модели, я получил ошибку:
File "knn_with_weights.py", line 14, in customized_weights
if (distance >= 100 or distance <= -100):
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Я не понял, что сделал не так. В Документации написано, что моя функция должна иметь массив расстояний в качестве параметра и должна возвращать эквивалентные веса. Что я сделал не так?
Заранее спасибо.