在前两篇文章里(《分类模型的评估(一)》和《分类模型的评估(二)》),针对二分类问题,我们分别讨论了
- 评估某个给定分类结果的指标:查准率(Precision)、查全率(Recall)以及F-score
- 综合评估分类模型整体效果的指标:ROC曲线-AUC值
这篇文章将借助一个具体的例子来讨论上述指标的代码实现(使用Python)
一、什么是Python
Python是一门计算机编程语言,它在数据科学领域的应用极其广泛,具体的江湖地位可用图1来表示。
限于篇幅,Python的安装和语法介绍在此就不展开了,有需要的同学可以参考这个网页。
其实我在这里单列一节出来讲Python,主要是为了展示我画的图1。
二、数据集以及模型简介
为了更具体地讨论实现,我们使用美国个人收入的普查数据来搭建模型(源自美国加州大学欧文分校,点击这里下载)。数据中具体的变量以及说明如表1所示。
需要被预测的年收入分类(label)是一个二元变量,因此使用逻辑回归来解决这个二分类问题。另外为了建模方便,我们在这里只使用数值型自变量。
注意:本篇文章的完整代码这里
三、Precision,Recall以及F-score
针对一个给定的预测结果,Precision,Recall以及F-score的实现十分简单,如下所示。其中参数“pred”是模型的预测结果、“label”是真实结果、beta是F-score的beta权重。
import numpy as np
def PrecisionRecallFscore(pred, label, beta=1):
"""
计算预测结果的Precision, Recall以及Fscore
"""
bins = np.array([0, 0.5, 1])
tp, fp, fn, tn = np.histogram2d(label, pred, bins=bins)[0].flatten()
precision = tp / (tp + fp)
recall = tp / (tp + fn)
fscore = (1 +