Я запускаю модель KNN на фрейме данных, пытаясь предсказать определенную функцию. Я пытаюсь выяснить, могу ли я, в зависимости от того, какую строку повторять, посмотреть, могут ли конкретные найденные «соседи» иметь определенное логическое значение, которое я определяю.
Например, допустим, я хотелитерировать по кадрам данных авторов, и я хотел предсказать ценность их книг, основываясь на количестве страниц и глав в книге. Однако в моем примере я хочу только сравнить авторов одного и того же возраста и предложить прогноз, основанный на авторах того же возраста. Я предполагаю, что где-то в коде мне нужно поместить логическое значение, я просто не уверен, где?
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor
from sklearn.metrics import mean_squared_error
features = ['chapters','pages']
knn = KNeighborsRegressor(n_neighbors=16, algorithm='brute')
knn.fit(train[features], train['value'])
predictions = knn.predict(test[features])
Вот «тест» для фрейма данных:
author age pages chapters value
green 34 324 10 9
white 21 432 24 6
smith 59 567 43 3
berg 34 229 8 11
carter 34 213 10 9
bing 21 501 34 15
moon 59 132 7 7
Итак, я хотел бы найти все КНН для автора, зеленые, но только те, кто того же возраста,34, как он есть. И когда он доходит до белого автора, найдите только KNN с тем же самым возрастом 21. Другими словами, мне нужно иметь возраст от KNN == возраст автора, которого он предсказывает.