#python #pandas #scikit-learn
Вопрос:
Я пытаюсь преобразовать прогнозируемое масштабированное значение обратно в его первоначальный масштаб. Вот код, который я использовал до сих пор:
pipe = Pipeline([
('std_scaler', StandardScaler()),
('sbs_selector', SBSFeatureSelector(sbs.subsets_, k=5)),
('lineReg', LinearRegression())
])
pipe.fit(X_train, y_train)
y_val_pred = pipe.predict(X_val)
test=pd.read_csv('./Kaggle-Bike-Sharing-Demand-Challenge/test.csv')
X_test = test.iloc[:,1:]
y_pred_log = pipe.predict(X_test)
y_pred = ......
Теперь я хочу преобразовать обратно в исходные масштабные и целочисленные значения и сохранить их y_pred
. Как я могу это сделать?
Комментарии:
1. У каждого масштабирующего устройства в sklearn есть
inverse_transform
метод, поэтому, если вы достанете его из конвейера и выполните операции отдельно, вы можете это сделатьunscaled_data = pipe.inverse_transform(data)
Вы можете обратиться к документации scikit-learn.org/stable/modules/generated/…2. Я попробовал y_pred = pipe.inverse_transform(y_pred_log), но я получаю ошибку : Ошибка атрибута: объект «SBSFeatureSelector» не имеет атрибута «inverse_transform»
3. Ах, моя вина. Не труба, но нужно выполнить масштабирование, моделировать один за другим без использования трубопровода, тогда вы могли бы сделать
std_scaler.inverse_transform
4. Пожалуйста, дайте мне знать, как я могу это сделать в текущем коде? И я не хочу удалять трубопровод
5. Не уверен, что есть способ сделать это внутри конвейера. Вы можете удалить только масштабер или, если вы не хотите этого делать, просто установите новый масштабер для целей обратного преобразования.