【问题标题】:Multiclass classification error metrics in Apache SparkApache Spark 中的多类分类错误指标
【发布时间】:2018-07-02 09:02:48
【问题描述】:

是否可以在 Apache Spark 的多类分类问题中找到错误指标(精度和召回率)。我正在使用 Spark 的 MlLib 中的逻辑回归来构建我的模型,并希望使用错误指标来评估我的模型。

【问题讨论】:

    标签: apache-spark apache-spark-mllib logistic-regression multiclass-classification


    【解决方案1】:

    来自MLlib docs

    假设你的测试数据在test

    import org.apache.spark.mllib.classification.LogisticRegressionWithLBFGS
    import org.apache.spark.mllib.evaluation.MulticlassMetrics
    import org.apache.spark.mllib.regression.LabeledPoint
    import org.apache.spark.mllib.util.MLUtils
    
    val predictionAndLabels = test.map { case LabeledPoint(label,
       features) =>
         val prediction = model.predict(features)
         (prediction, label)
    }
    
    val metrics = new MulticlassMetrics(predictionAndLabels)
    

    混淆矩阵

    println("Confusion matrix:")
    println(metrics.confusionMatrix)
    

    总体统计

    val accuracy = metrics.accuracy
    println("Summary Statistics")
    println(s"Accuracy = $accuracy")
    

    标签精度

    val labels = metrics.labels
    labels.foreach { l =>
      println(s"Precision($l) = " + metrics.precision(l))
    }
    

    按标签召回

    labels.foreach { l =>
      println(s"Recall($l) = " + metrics.recall(l))
    }
    

    标签的误报率

    labels.foreach { l =>
      println(s"FPR($l) = " + metrics.falsePositiveRate(l))
    }
    

    F-按标签测量

    labels.foreach { l =>
      println(s"F1-Score($l) = " + metrics.fMeasure(l))
    }
    

    加权统计

    println(s"Weighted precision: ${metrics.weightedPrecision}")
    println(s"Weighted recall: ${metrics.weightedRecall}")
    println(s"Weighted F1 score: ${metrics.weightedFMeasure}")
    println(s"Weighted false positive rate: ${metrics.weightedFalsePositiveRate}")
    

    【讨论】:

    • 好的,谢谢。我猜这是使用 RDD API。有没有办法使用 DataFrame API 做同样的事情,因为它更加优化。
    • AFAIK 只有基于 RDD 的 API,我可能错了
    • @RajnilGuha 如果你需要数据框 API,你应该在你的问题中澄清这一点,另外你应该提供你迄今为止尝试过的内容(可以说,使用的 API 很明显) .我希望现在清楚为什么这样的 3 行“问题”会被关闭和否决......
    • @naveenmarri 在 Spark ML 中确实有一个 MulticlassClassificationEvaluator 提供加权精度和召回率;还要检查docs for tuning
    • @RajnilGuha 一个尝试很可能是到目前为止我的代码,从这一点开始我需要计算这个&那个......否则你希望有人出现有他/她自己的端到端场景,这可能适合也可能不适合您的情况 - 实际上这正是这里发生的事情,受访者花时间帮助你,只是事后被告知“这很好,但我不希望它用于 RDD API”(甚至没有得到一个支持作为所花费时间的基本礼貌)......
    猜你喜欢
    • 2019-05-24
    • 2015-09-12
    • 2017-01-03
    • 2017-04-09
    • 2018-12-03
    • 2021-05-14
    • 2016-04-27
    • 2015-07-26
    相关资源
    最近更新 更多