簡體   English   中英

如何將標准化應用於訓練和測試數據集

[英]How to apply standardization to train and test datasets

比方說,我有一個10要素數據集X形狀的[100, 10]y形狀的目標數據集[100, 1] 例如,在用sklearn.model_selection.train_test_split將兩者拆分后,我獲得了:

  • X_train: [70, 10]
  • X_test: [30, 10]
  • y_train: [70, 1]
  • y_test: [30, 1]

應用標准化的正確方法是什么?

我嘗試過:

from sklearn import preprocessing
scaler = preprocessing.StandardScaler()

scaler.fit(X_train)

X_train_std = scaler.transform(X_train)
X_test_std = scaler.transform(X_test)

但是如果我嘗試使用模型進行預測,那么當我嘗試反比例縮放以查看MAE時,就會出現錯誤

from sklearn import linear_model
lr = linear_model.LinearRegression()
lr.fit(X_train_std, y_train)
y_pred_std = lr.predict(X_test_std)

y_pred = scaler.inverse_transform(y_pred_std) # error here


我還有另一個問題。 由於我有目標值,因此我應該使用

scaler = preprocessing.StandardScaler()

X_train_std = scaler.fit_transform(X_train, y_train)
X_test_std = scaler.transform(X_test)

而不是第一個代碼塊?


我是否還必須將轉換應用於y_trainy_test數據集? 我有點困惑

應該將StandardScaler僅用於特征矩陣X。

因此,所有fittransforminverse_transform方法inverse_transform需要X。

請注意,在擬合模型之后,您可以訪問以下屬性:

  1. mean_mean_中每個特征的X_train
  2. scale_ :在每個功能的標准差X_train

transform方法對每個樣本i進行(X[i, col] - mean_[col] / scale_[col]) 而每個樣本iinverse_transform方法(X[i, col] * scale_[col] + mean_[col])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM