我使用的是Spark 2.0.2。我也使用“ml”库进行数据集机器学习。我想要做的是运行交叉验证算法并提取所提到的指标(准确性,精确度,召回率,ROC,混淆矩阵)。我的数据标签是二进制的。
通过使用MulticlassClassificationEvaluator,我只能通过访问“avgMetrics”来获得算法的准确性。此外,通过使用BinaryClassificationEvaluator,我可以获得ROC下的区域。但我不能同时使用它们。 那么,有没有办法可以提取所有想要的指标?
答案 0 :(得分:2)
尝试使用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")
}
答案 1 :(得分:1)
您可以按照Apache Spark提供的官方评估指标指南进行操作。 该文件提供了所有评估指标,包括
以下是链接:https://spark.apache.org/docs/latest/mllib-evaluation-metrics.html