建立參數網格
接下來,你需要建立一組要搜尋的數值網格,來尋找最佳的超參數。子模組 pyspark.ml.tuning 提供了名為 ParamGridBuilder 的類別正是用來做這件事的(你也許開始發現規律了:PySpark 幾乎每件事都有對應的子模組!)。
你將使用 .addGrid() 與 .build() 方法來建立可用於交叉驗證的網格。.addGrid() 方法需要一個模型參數(也就是你幾個練習前建立的模型 Estimator、lr 的屬性)以及一個你想嘗試的數值清單。
.build() 方法不需要任何引數,會回傳之後要用到的網格。
本練習屬於課程
PySpark 基礎
練習說明
- 匯入子模組
pyspark.ml.tuning,並以別名tune使用。 - 不帶引數呼叫類別建構子
ParamGridBuilder()。將結果存為grid。 - 對
grid呼叫.addGrid(),第一個引數為lr.regParam,第二個引數為np.arange(0, .1, .01)。第二個引數是從numpy模組(以np匯入)來的函式,會建立從 0 到 .1、以 .01 為間距的數列。用回傳結果覆寫grid。 - 再次更新
grid:第二次呼叫.addGrid(),為lr.elasticNetParam建立只包含[0, 1]的網格。 - 對
grid呼叫.build(),並以輸出結果覆寫它。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Import the tuning submodule
import ____ as ____
# Create the parameter grid
grid = tune.____
# Add the hyperparameter
grid = grid.addGrid(____, np.arange(0, .1, .01))
grid = grid.addGrid(____, ____)
# Build the grid
grid = grid.build()