2016-11-11 79 views
0

如何獲得評估者在火花管道中的結果?火花管道評估

val evaluator = new BinaryClassificationEvaluator() 

val cv = new CrossValidator() 
    .setEstimator(pipeline) 
    .setEvaluator(evaluator) 
    .setEstimatorParamMaps(paramGrid) 
    .setNumFolds(10) 

變換操作的結果只包含標籤,概率和預測。

有可能獲得「最佳模型」,但我更願意獲得評估指標。

這裏https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-mllib/spark-mllib-evaluators.html他們展示瞭如何在沒有管道的情況下使用評估器。

沒有一個非常有趣的鏈接似乎使用evaluatorhttps://benfradet.github.io/blog/2015/12/16/Exploring-spark.ml-with-the-Titanic-Kaggle-competition,這裏是https://developer.ibm.com/spark/blog/2016/02/22/predictive-model-for-online-advertising-using-spark-machine-learning-pipelines/或官方示例https://github.com/apache/spark/blob/39e2bad6a866d27c3ca594d15e574a1da3ee84cc/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala是最後顯示評估者的結果。

事實上的鏈接,由手來計算所述度量:

cvAccuracy = cvPrediction.filter(cvPrediction['label'] == cvPrediction['prediction']).count()/float(cvPrediction.count 

我本來期望獲得關於一個PERF倍水平或者可能是一個平均值/方差的度量標準。

+0

你有興趣每'paramGrid'值的性能指標? – mtoto

+0

類別。我想檢查參數設置A或算法B是否比其他設置/算法更好。 –

回答

1

CrossValidatorModel不僅包含具有最高平均交叉驗證度量標準的最佳模型(又稱爲bestModel),而且還評估了每個參數映射的度量標準。

要抓住這些,你可以使用組合getEstimatorParamMapsavgMetrics,例如:

val cvModel = cv.fit(training) 
cvModel.getEstimatorParamMaps.zip(cvModel.avgMetrics) 
+1

非常感謝 - 正是我一直在尋找的東西。 –

+0

但是不可能獲得有關方差/ std-dev的指標? –