在 pipelines 中使用自訂函式轉換器
先前有人告訴你,感測器在肥胖族群上的表現可能較差。你之前用權重處理過這件事,但現在你認為這項資訊也許能用於特徵工程,因此你決定把個體的記錄體重,改成是否肥胖的指標。你想用 pipelines 來完成這件事。已可使用 numpy(作為 np)、RandomForestClassifier()、FunctionTransformer() 以及 GridSearchCV()。
本練習屬於課程
在 Python 設計機器學習工作流程
練習說明
- 定義一個自訂特徵擷取器。此函式會輸出其輸入的修改版拷貝。
- 將第 1 欄的每個值,替換為是否高於該欄平均值乘上某個倍數門檻的指標。
- 將上述特徵擷取器轉換為一個 transformer,並與隨機森林分類器一同放入 pipeline 中。
- 使用 grid search CV,在你的特徵擷取器中嘗試將乘數常數
multiplier設為 1、2、3。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Define a feature extractor to flag very large values
def more_than_average(X, multiplier=1.0):
Z = ____
Z[:,1] = ____ > multiplier*np.mean(Z[:,1])
return Z
# Convert your function so that it can be used in a pipeline
pipe = Pipeline([
('ft', ____(____)),
('clf', RandomForestClassifier(random_state=2))])
# Optimize the parameter multiplier using GridSearchCV
params = ____
grid_search = GridSearchCV(pipe, param_grid=params)