Как делать прогнозы с использованием модели K-ближайших соседей (KNN), когда данные нормализованы (Python) - PullRequest
0 голосов
/ 04 апреля 2020

Я создал модель KNN в Python (Module = Scikitlearn), используя три переменные ( Age, Distance, Allowance ) в качестве переменных-предикторов, с целью их использования для прогнозирования результат для целевой переменной ( Метод путешествия ).

При построении модели мне пришлось нормализовать данные для трех переменных-предикторов ( Возраст, расстояние, Допуск на поездку ). Это повысило точность моей модели по сравнению с ненормализацией данных.

Теперь, когда я построил модель, я хочу сделать прогноз. Но как мне ввести переменные предиктора, чтобы сделать прогноз, когда модель была обучена на нормализованных данных.

Я хочу ввести KNN.predict([[30,2000,40]]), чтобы выполнить прогноз, где Возраст = 30; Расстояние = 2000; Allowance = 40. Но так как данные были нормализованы, я не могу придумать, как это сделать. Я использовал следующий код для нормализации данных:
X = preprocessing.StandardScaler().fit(X).transform(X.astype(float))

1 Ответ

1 голос
/ 04 апреля 2020

На самом деле ответ находится в коде, который вы предоставили!

Как только вы подойдете к экземпляру preprocessing.StandardScaler(), он запоминает, как масштабировать данные. Попробуйте это

scaler = preprocessing.StandardScaler().fit(X)
# scaler is an object that knows how to normalize data points
X_normalized = scaler.transform(X.astype(float))
# used scalar to normalize the data points in X
# Note, this is what you have done, just in two steps. 
# I just capture the scaler object 
#
# ... Train your model on X_normalized
#
# Now predict
other_data = [[30,2000,40]]
other_data_normalized = scaler.transform(other_data)
KNN.predict(other_data_normalized)

Обратите внимание, что я дважды использовал scaler.transform таким же образом

См. StandardScaler.transform

...