[英]How to use sklearn's standard scaler with make_pipeline?
我習慣於通過以下方式運行 sklearn 的標准縮放器:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
scaled_X_train = scaler.transform(X_train)
其中X_train
是一個包含我的訓練數據集中特征的數組。
然后我可以使用相同的縮放器來縮放我的測試數據集X_test
中的特征:
scaled_X_test = scaler.transform(X_test)
我知道我也可以使用 sklearn 的make_pipeline
在模型中“烘焙”縮放器:
from sklearn.pipeline import make_pipeline
clf = make_pipeline(preprocessing.StandardScaler(), RandomForestClassifier(n_estimators=100))
但是那我該如何使用縮放器呢? 像我通常那樣調用模型是否足夠,即:
clf.fit(X_train,y_train)
接着:
y_pred = clf.predict(X_test)
?
對,那是正確的。 將預處理烘焙到管道中也是一個好主意,以避免獨立擴展測試和訓練數據集的常見缺陷。
調用clf.fit(X_train,y_train)
時,管道將在 X_train 上擬合 Scaler,然后使用該擬合來預處理您的測試數據集。
請參閱“常見陷阱和推薦做法”文檔開頭的示例。
我們建議使用流水線,它可以更輕松地將轉換與估計器鏈接起來,並減少忘記轉換的可能性。
因此,您自己不“使用” Scaler 的事實是符合設計的。
話雖如此,如果您出於某種原因想要從管道獨立訪問縮放器,例如檢查它的值,您可以這樣做:
clf.fit(X_train,y_train)
# For example, get the first step of the pipeline steps[0]
# then get the actual scaler object [1]
clf.steps[0][1].scale_
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.