加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在Naive Bayes模型的BinaryClassificationMetrics

发布时间:2020-12-16 18:49:24 所属栏目:安全 来源:网络整理
导读:我对BinaryClassificationMetrics(Mllib)输入感到困惑.根据 Apache Spark 1.6.0,我们需要从已经预测的变换的DataFrame中传递类型的预测和标签(RDD [(Double,Double)]),概率(向量) rawPrediction(向量). 我已经从Predicted和label列创建了RDD [(Double,Double
我对BinaryClassificationMetrics(Mllib)输入感到困惑.根据 Apache Spark 1.6.0,我们需要从已经预测的变换的DataFrame中传递类型的预测和标签(RDD [(Double,Double)]),概率(向量)& rawPrediction(向量).

我已经从Predicted和label列创建了RDD [(Double,Double)].在NavieBayesModel上执行BinaryClassificationMetrics评估后,我能够检索ROC,PR等.但是值有限,我无法使用从中生成的值绘制曲线. Roc包含4个值,PR包含3个值.

它是准备PredictedandLabel的正确方法还是我需要使用rawPrediction列或Probability列而不是Predicted列?

解决方法

准备这样:

import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.classification.{NaiveBayes,NaiveBayesModel}

val df = sqlContext.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")
val predictions = new NaiveBayes().fit(df).transform(df)

val preds = predictions.select("probability","label").rdd.map(row => 
  (row.getAs[Vector](0)(0),row.getAs[Double](1)))

并评估:

import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics

new BinaryClassificationMetrics(preds,10).roc

如果预测只有0或1个桶可以像你的情况一样更低.尝试更复杂的数据,如下所示:

val anotherPreds = df1.select(rand(),$"label").rdd.map(row => (row.getDouble(0),row.getDouble(1)))
new BinaryClassificationMetrics(anotherPreds,10).roc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读