簡體   English   中英

如何將 sklearn 的標准縮放器與 make_pipeline 一起使用?

[英]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.

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