#scikit-learn #regression #scaling
#scikit-learn #регрессия #масштабирование
Вопрос:
Представьте себе простую задачу регрессии, в которой вы используете градиентный спуск. Для правильной реализации вам нужно будет масштабировать значения, используя среднее значение всего обучающего набора данных. Представьте, что ваша модель уже обучена, и вы вводите в нее другой пример, который хотите предсказать. Как вы правильно масштабируете его по отношению к предыдущему набору данных? Включаете ли вы новый пример в обучающий набор, а затем масштабируете его со средним значением этого обучающего набора данных новые точки данных? Как это должно быть сделано правильно?
Говоря о новых точках данных, я имею в виду то, чего модель раньше не видела ни при обучении, ни при тестировании. Как вы обрабатываете масштабирование для всего, что вы передаете regr.predict(), если масштабирование обучающего набора выполняется по всему набору, а не по одному наблюдению.
Представьте, что у вас есть ndarray функций:
to_predict = [10, 12, 1, 330, 1311, 225].
Набор данных, используемый для обучения и тестирования, уже колеблется около 0 для каждого объекта. Принимая во внимание приведенный ниже ответ (псевдокод, вот почему я спрашиваю, как это сделать правильно):
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
new_Xs = X_train.append(to_predict)
X_train_std_with_new = scalar.fit_transform(new_Xs)
scaled_to_predit = X_train_std_with_new[-1]
regr.predict(scaled_to_predict) ??
Комментарии:
1. Есть ли причина, по которой вы не можете масштабировать обучение / тестирование перед обучением? Чтобы избежать упомянутой вами проблемы, рекомендуется масштабировать данные перед обучением