web-dev-qa-db-ja.com

Spark mllibの相互検証から精度、再現率、ROCを取得する方法は?

私はSpark 2.0.2。を使用しています。データセットを使用した機械学習にも「ml」ライブラリを使用しています。やりたいことは、相互検証を使用してアルゴリズムを実行し、前述のメトリック(精度、精度、再現率、ROC、混同行列)データラベルはバイナリです。

MulticlassClassificationEvaluatorを使用すると、「avgMetrics」にアクセスすることによってのみアルゴリズムの精度を取得できます。また、BinaryClassificationEvaluatorを使用すると、ROCの下の領域を取得できます。ただし、両方を使用することはできません。では、必要なメトリックをすべて抽出する方法はありますか?

9
user3309479

MLlibを使用して結果を評価しようとしました。

データセットをRDDに変換し、MLlibで MulticlassMetrics を使用しました

ここでデモを見ることができます: 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")
  }
2
ShuoshuoFan

Apache Sparkが提供する公式の評価指標ガイドに従うことができます。このドキュメントは、以下を含むすべての評価指標を提供しています

  • 精度(正の予測値)、再現(真の正のレート)、Fメジャー、受信者動作特性(ROC)、ROC曲線の下の領域、精度-再現曲線の下の領域。

ここにリンクがあります: https://spark.Apache.org/docs/latest/mllib-evaluation-metrics.html

1
Darshan