我習慣于通過以下方式運行 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)
?
uj5u.com熱心網友回復:
對,那是正確的。將預處理烘焙到管道中也是一個好主意,以避免獨立擴展測驗和訓練資料集的常見缺陷。
呼叫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_
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/490912.html
標籤:Python scikit-学习 管道 训练数据 测试数据
上一篇:如何檢測api的變化
