私はSpark 2.0.2。を使用しています。データセットを使用した機械学習にも「ml」ライブラリを使用しています。やりたいことは、相互検証を使用してアルゴリズムを実行し、前述のメトリック(精度、精度、再現率、ROC、混同行列)データラベルはバイナリです。
MulticlassClassificationEvaluatorを使用すると、「avgMetrics」にアクセスすることによってのみアルゴリズムの精度を取得できます。また、BinaryClassificationEvaluatorを使用すると、ROCの下の領域を取得できます。ただし、両方を使用することはできません。では、必要なメトリックをすべて抽出する方法はありますか?
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")
}
Apache Sparkが提供する公式の評価指標ガイドに従うことができます。このドキュメントは、以下を含むすべての評価指標を提供しています
ここにリンクがあります: https://spark.Apache.org/docs/latest/mllib-evaluation-metrics.html