Преобразование из масштабированного значения обратно в исходный масштаб

#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. Не уверен, что есть способ сделать это внутри конвейера. Вы можете удалить только масштабер или, если вы не хотите этого делать, просто установите новый масштабер для целей обратного преобразования.