模型评估
Posted cheryol
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模型评估相关的知识,希望对你有一定的参考价值。
7.1 分类模型评估
1、二分类
混淆矩阵中对角线的元素代表正确分类的数量;
非对角线元素代表错误分类的数量。
所以最为理想的模型(拿测试集来看),应该是一个对角阵。若无法得到对角阵,对角线上的数字之和如果占统治地位也是可以的。
片面的追求查准率可能会降低召回率
2、多分类
recall参数中的average()的取值:
binary表示二分类
micro表示多元混淆矩阵中的第一种方法
macro表示的是一种不加权的平均
weighted表示加权的平均
3、 反应分类效果的图及ROC曲线阈值的选取
(1)ROC、AUC
选取标准:让TPR尽可能的大,FPR尽可能的小,所以选取其拐点
AUC表示的是ROC曲线下的面积,可以直接反应ROC曲线像左上方靠近的程度。
如何做ROC曲线?
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_curve.html#sklearn.metrics.roc_curve
xy_lst = [(X_train, Y_train), (X_validation, Y_validation), (X_test, Y_test)] import matplotlib.pyplot as plt from sklearn.metrics import roc_curve,auc,roc_auc_score f = plt.figure() for i in range(len(xy_lst)): X_part = xy_lst[i][0] Y_part = xy_lst[i][1] Y_pred = mdl.predict(X_part) # Y_pred = mdl.predict_classes(X_part)#用predict()时输出的是连续值,使用predict_classes()时输出的是分类标注 # print(i) print(Y_pred) Y_pred = np.array(Y_pred[:,1]).reshape((1,-1))[0] # from sklearn.metrics import accuracy_score, recall_score, f1_score # print(i, ‘---:‘, ‘Nural Network‘, ‘准确率:‘, accuracy_score(Y_part, Y_pred), # ‘召回率:‘, recall_score(Y_part, Y_pred), # ‘F1分数:‘, f1_score(Y_part, Y_pred)) f.add_subplot(1,3,i+1) fpr,tpr,thresholds = roc_curve(Y_part,Y_pred) plt.plot(fpr,tpr) plt.shaow() #这两个函数功能一样 print(‘Nural Network‘,‘AUC‘,auc(fpr,tpr)) print(‘Nural Network‘,‘AUC Score‘,roc_auc_score(Y_part,Y_pred)) ‘‘‘ Nural Network AUC 0.9610879734019506 Nural Network AUC Score 0.9610879734019506 Nural Network AUC 0.961721658936862 Nural Network AUC Score 0.961721658936862 Nural Network AUC 0.9637020039792525 Nural Network AUC Score 0.9637020039792525 ‘‘‘
(2)增益图与KS图
其中KS图中关注的是,TPR曲线与FPR曲线的差距,这个差距反映了对正类样本的区分度。
以上是关于模型评估的主要内容,如果未能解决你的问题,请参考以下文章