《Spark机器学习进阶实战》——3.4.4 模型性能评估
【摘要】 本书摘自《Spark机器学习进阶实战》——书中的第3章,第3.4.4节,作者是马海平、于俊、吕昕、向海。
3.4.4 模型性能评估
接下来评估上一节得到的模型的性能。二分类常用ROC曲线和P-R曲线。我们选取了类0和类1的SVM分类器。
如图3-8所示是ROC曲线,表示了在不同阈值下,TRP与FPR的对应关系。
图3-8 应用数据的ROC曲线
如图3-9所示的P-R曲线,表示模型随着阈值的改变,准确率和召回率的对应关系。P-R曲线下的面积为平均准确率,可以从图中看出面积接近于1。
图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)