我使用PySpark 2.0進行Kaggle比賽。我想知道模型(RandomForest
)的行爲取決於不同的參數。 ParamGridBuilder()
允許爲單個參數指定不同的值,然後執行(我猜)整個參數集的笛卡爾乘積。假設我DataFrame
已定義:Pyspark - 獲取使用ParamGridBuilder創建的模型的所有參數
rdc = RandomForestClassifier()
pipeline = Pipeline(stages=STAGES + [rdc])
paramGrid = ParamGridBuilder().addGrid(rdc.maxDepth, [3, 10, 20])
.addGrid(rdc.minInfoGain, [0.01, 0.001])
.addGrid(rdc.numTrees, [5, 10, 20, 30])
.build()
evaluator = MulticlassClassificationEvaluator()
valid = TrainValidationSplit(estimator=pipeline,
estimatorParamMaps=paramGrid,
evaluator=evaluator,
trainRatio=0.50)
model = valid.fit(df)
result = model.bestModel.transform(df)
行,所以現在我能有一個手工製作的功能,以獲取簡單的信息:
def evaluate(result):
predictionAndLabels = result.select("prediction", "label")
metrics = ["f1","weightedPrecision","weightedRecall","accuracy"]
for m in metrics:
evaluator = MulticlassClassificationEvaluator(metricName=m)
print(str(m) + ": " + str(evaluator.evaluate(predictionAndLabels)))
現在我想幾件事情:
- 什麼是最佳模型的參數嗎?這篇文章部分回答了這個問題:How to extract model hyper-parameters from spark.ml in PySpark?
- 所有模型的參數是什麼?
- 每個模型的結果(又名回憶,準確性等)是什麼?我只發現
print(model.validationMetrics)
顯示(它似乎)包含每個模型的準確性的列表,但我不知道要引用哪個模型。
如果我能檢索所有這些信息,我應該能夠顯示圖形,條形圖和工作,就像我對Panda和sklearn
所做的一樣。
謝謝你,我現在可以得到的評價指標,每個模型。不幸的是,''zip(model.validationMetrics,model.getEstimatorParamMaps()) ''不適用於模型。當我打印model.params時,它什麼都沒顯示(我相信我的paramGrid工作) – GwydionFR
是的,這個建議只是關於'TrainValidationSplitModel'。我添加了鍵入提示以避免混淆。 – zero323