统计建模:分类性能评价(混淆矩阵和ROC曲线)

在数据本身严重有偏的情况下,准确率很容易达到一个很高的数值,因此需要寻找另外的性能评价方法。

混淆矩阵

混淆矩阵:将数据按待分的类别分组后,统计各组中模型分类或预测结果的矩阵
二分类

  • 总例数: T o t a l = T P + F P + F N + T N \small{Total = TP + FP + FN + TN} Total=TP+FP+FN+TN

  • 准确率: A C C = T P + T N T o t a l \small{ACC} = \frac{TP+TN}{Total} ACC=TotalTP+TN

  • TPR or Sen = T P T P + F N \frac{TP}{TP +FN} TP+FNTP (真阳性率、召回率、敏感性、检出率)
    取值 [ 0,1 ] 越接近 1 性能越好

  • TNR or Spe = T N F P + T N \frac{TN}{FP +TN} FP+TNTN (真阴性率、特异性、选择性)
    取值 [ 0,1 ] 越接近 1 性能越好

  • PPV or precision = T P T P + F P \frac{TP}{TP +FP} TP+FPTP (精度、阳性预测值)
    取值 [ 0,1 ] 越接近 1 性能越好

  • NPV = T N T N + F N \frac{TN}{TN +FN} TN+FNTN (阴性预测值)

mport pandas as pd
import numpy as np
from sklearn import datasets
from scipy import stats
import matplotlib.pyplot as plt

iris = datasets.load_iris()    #可直接获取鸢尾花数据集

plt.figure(figsize=(12,15))

for n in range(4):
    print(n)
    for m in range(3):
        x=(iris.data[m*50:m*50+50,n]-iris.data[m*50:m*50+50,n].mean()) / iris.data[m*50:m*50+50,n].std()
        plt.subplot(4, 3, n*3 + m + 1)
        stats.probplot(x, dist='norm', plot=plt)
        
        plt.text(-2,2,iris.feature_names[n])
        if n == 0:
            plt.title(iris.target_names[m])
        else:
            plt.title('')
        
        plt.xlim([-2.5,2.5])
        plt.ylim([-2.5,2.5])
        plt.plot([-2.5,2.5],[-2.5,2.5],c='g')

from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(iris.data, iris.target,test_size=0.2,random_state=0)

from sklearn.naive_bayes import GaussianNB
clf=GaussianNB()
clf.fit(X_train, Y_train)
y_pred=clf.predict(X_test)

Y = pd.DataFrame(np.transpose([Y_test, y_pred]), columns={'true_type','predict_type'})


from sklearn.metrics import confusion_matrix
print(confusion_matrix(y_pred, Y_test))

from sklearn.metrics import classification_report
print(classification_report(y_pred, Y_test))

线性二分类(ROC曲线进行评价)

  • 可以就参数的区分性能做专门评价
  • ROC曲线(接收者操作特征曲线)
  • 绘制方法:对同样的测试集,改变线性划分的阈值,随着阈值的改变,分类的敏感性和特异性都会改变,以敏感性为纵坐标,1-特异性为横坐标,将选取不同阈值的结果在图中以散点画出,散点连成的曲线就是ROC曲线。
  • ROC曲线越远离45度对角线,分类性能越好。
  • 量化指标:采用曲线下面积 AUC,AUC ∈ \in [ 0,1 ]
    越靠近 1,参数线性区分性能越好;靠近 0.5 时,接近随机划分;小于 0.5 时,分类倒置。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值