2016-11-11 6 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は、パイプラインなしでエバリュエーターを使用する方法を示しています。

非常に興味深いリンクのどれもevaluatorを使用していないようです。 https://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は、最後に表示された評価者の結果です。実際に

リンクの1つが手でメトリックを計算します。

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

私はPERF倍レベルまたは多分平均/分散の指標を得ることが期待されるだろう。

+0

あなたは 'paramGrid'値あたりの性能指標に興味がありますか? – mtoto

+0

並べ替え私は、パラメータ設定AまたはアルゴリズムBが他の設定/アルゴリズムよりも優れているかどうかを確認したい。 –

答えて

1

CrossValidatorModelには、折りたたみ全体にわたって平均平均クロスバリデーションメトリックが最も高いモデル(別名bestModel)だけでなく、評価された各パラメータマップのメトリックも含まれています。これらをつかむために

、あなたは例えば、avgMetricsと組み合わせてgetEstimatorParamMaps方法を使用することができます。

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

どうもありがとうございました。 –

+0

しかし、variance/std-devに関するメトリクスを得ることはできませんか? –