《Spark机器学习进阶实战》——3.4.4 模型性能评估

举报
华章计算机 发表于 2019/06/01 22:37:20 2019/06/01
【摘要】 本书摘自《Spark机器学习进阶实战》——书中的第3章,第3.4.4节,作者是马海平、于俊、吕昕、向海。

3.4.4 模型性能评估

接下来评估上一节得到的模型的性能。二分类常用ROC曲线和P-R曲线。我们选取了类0和类1的SVM分类器。

如图3-8所示是ROC曲线,表示了在不同阈值下,TRP与FPR的对应关系。

image.png

图3-8 应用数据的ROC曲线

如图3-9所示的P-R曲线,表示模型随着阈值的改变,准确率和召回率的对应关系。P-R曲线下的面积为平均准确率,可以从图中看出面积接近于1。

image.png

图3-9 应用数据的P-R曲线

MLlib中内置了计算P-R和ROC曲线下的面积的方法,代码如下:

val scoreAndLabels = test.map { point =>

val score = model.predict(point.features)

  (score, point.label)

}

// 获得评价指标

val metrics = new BinaryClassificationMetrics(scoreAndLabels)

val auc = metrics.areaUnderROC()

对比于朴素贝叶斯分类器的性能,我们使用正确率这个指标。计算朴素贝叶斯分类器的正确率的代码如下:

val predictions = model.transform(testData)

val evaluator = new MulticlassClassificationEvaluator()

  .setLabelCol("label").setPredictionCol("prediction").setMetricName("accuracy")

val accuracy = evaluator.evaluate(predictions)

println("Accuracy: " + accuracy)

得到Accuracy: 0.8499387287548618。使用10个SVM分类器联合分类的正确率为Accuracy: 0.8527451347806302,与使用朴素贝叶斯得到的结果相差不大。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。