2017-01-18 15 views
2

私はSpark 2.0.2を使用しています。また、データセット付き機械学習のための "ml"ライブラリも使用しています。私がしたいのは、クロスバリデーションを使ってアルゴリズムを実行し、前述のメトリック(精度、精度、リコール、ROC、混同行列)を抽出することです。私のデータラベルはバイナリです。Spark ml libのクロスバリデーションから正確精度、リコール、ROCを得るには?

MulticlassClassificationEvaluatorを使用することで、「avgMetrics」にアクセスすることでアルゴリズムの精度を得ることができます。また、BinaryClassificationEvaluatorを使用することで、ROCの下の領域を取得できます。しかし、私はそれらを使うことはできません。 希望のメトリックをすべて抽出できる方法はありますか?

答えて

0

Apache Sparkが提供する評価指標ガイドに従うことができます。 文書が提供しているすべての評価指標を含む

  • プレシジョン(陽性的中率)、リコール(真陽性率)、 F-対策、受信者動作特性(ROC)、エリアROC曲線下 、下面積精度リコール曲線。ここで

はリンクです:https://spark.apache.org/docs/latest/mllib-evaluation-metrics.html

+2

はあなたに感謝、これはRDDベースであり、それは「mllibを使用しています" としょうかん。私はデータフレームとデータセットと "ml" libを扱います。 – user3309479

+0

ああ申し訳ありません。この[リンク](https://www.mapr.com/blog/predicting-breast-cancer-using-apache-spark-machine-learning-logistic-regression)をチェックしてください。私はmlにあまり慣れていない。 – Darshan

0

は、あなたの結果を評価するためにMLlibを使用しようとしました。

私は、あなたがここでデモを見ることができますMLlib

MulticlassMetricsを使用し、RDDにデータセットを変換しました:Spark DecisionTreeExample.scala

private[ml] def evaluateClassificationModel(
     model: Transformer, 
     data: DataFrame, 
     labelColName: String): Unit = { 
    val fullPredictions = model.transform(data).cache() 
    val predictions = fullPredictions.select("prediction").rdd.map(_.getDouble(0)) 
    val labels = fullPredictions.select(labelColName).rdd.map(_.getDouble(0)) 
    // Print number of classes for reference. 
    val numClasses = MetadataUtils.getNumClasses(fullPredictions.schema(labelColName)) match { 
     case Some(n) => n 
     case None => throw new RuntimeException(
     "Unknown failure when indexing labels for classification.") 
    } 
    val accuracy = new MulticlassMetrics(predictions.zip(labels)).accuracy 
    println(s" Accuracy ($numClasses classes): $accuracy") 
    } 
+0

ありがとう – user3309479

関連する問題