【问题标题】:Evaluation metrics on Spark ML multiclass classification problemSpark ML 多类分类问题的评估指标
【发布时间】:2019-05-24 21:24:00
【问题描述】:

我正在寻找一个使用 Spark-Scala 的多类分类示例,但我还没有找到。具体来说,我想训练一个分类模型并查看训练和测试数据的所有相关指标。

Spark ML(基于 DataFrame 的 API)是否支持多类问题的混淆矩阵?

我正在寻找 Spark v 2.2 及更高版本的示例。端到端的示例将非常有用。我在这里找不到混淆矩阵评估 -

https://spark.apache.org/docs/2.3.0/ml-classification-regression.html

【问题讨论】:

    标签: apache-spark-ml


    【解决方案1】:

    假设model 是您的训练模型,test 是测试集, 这是python中计算混淆矩阵的代码sn-p:

    import pandas as pd
    from pyspark.mllib.evaluation import MulticlassMetrics
    predictionAndLabels = model.transform(test).select('label', 'prediction')
    metrics = MulticlassMetrics(predictionAndLabels.rdd.map(lambda x: tuple(map(float, x))))
    
    confusion_matrix = metrics.confusionMatrix().toArray()
    labels = [int(l) for l in metrics.call('labels')]
    confusion_matrix = pd.DataFrame(confusion_matrix , index=labels, columns=labels)
    

    注意metrics.labels由于某种原因没有在pyspark中实现,所以我们直接调用scala后端

    【讨论】:

      【解决方案2】:

      这应该是:

      val metrics = new MulticlassMetrics(predictionAndLabels)
      println(metrics.confusionMatrix)
      

      分类指标在这里: https://spark.apache.org/docs/2.3.0/mllib-evaluation-metrics.html

      【讨论】:

      • 感谢链接。但是这些指标在基于 Dataframe 的 API 中也可用吗?- 我的意思是 ml API。
      • 看起来不是,但您可以轻松地将 DF 转换为 rdd:val rows: RDD[Row] = df.rdd
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 2017-04-19
      • 1970-01-01
      • 2017-06-10
      • 2019-10-13
      • 2020-11-06
      • 2020-03-01
      相关资源
      最近更新 更多