《Spark机器学习进阶实战》——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,与使用朴素贝叶斯得到的结果相差不大。
- 点赞
- 收藏
- 关注作者
评论(0)