1.TP、TN、FP、FN
- 先粘一个官方形式的。
用新冠来举例理解。下方正方形为样本,其中
- 圆的部分认定为检测后是阳性的,其余部分为检测为阴性的(但是现在的情况是检测并不完全准确,有可能检测时阴性,但实际上已经有新冠,只是无症状)
- 现在只看园内,园的左半绿色部分意思是:实际上这个人是新冠患者;右办粉色部分则为实际并不是新冠患者;那么圆内绿色部分则为 ‘真阳’对应‘正类检索为正类’TP,粉色部分为‘假阳’对应‘正类检索为负类’FN。
- 这样我们就确定了圆内两个部分的实际情况,以已确定的情况为标准看圆外,正方形左半部分检测为阴,但实际是阳性,那么他就为‘假阴’对应‘负类检索为正类’FP;正方形右边正好与左边部分相反,检测为阴,实际也是阴性,那么就为‘真阴’对应‘负类检索为负类’TN。
准确率、精准率、召回率、F1值
- 准确率(Accuracy)。就是所有的预测正确(正类负类)的占总的比重。解释为:(预测为正,实际也为正的数量)与(预测为负,实际也为负)的和除以全部四种情况(TP+TN+FP+FN)的比率
-
精准率(Precision)。识别的正例占素有实际正例的比例。通俗来讲就是针对我们预测结果而言的,真实为正的样本占预测为正样本的占比。预测为正有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP)
-
召回率(Recall)。识别的正例占素有实际正例的比例。解释为样本中的正例有多少被预测正确了。有两种可能,一种是把原来的正类预测成正类(TP),另一种就是把原来的正类预测为负类(FN)
- F1值(H-mean值)。用一个F1值来综合评估精确率和召回率,它是精确率和召回率的调和均值,当精确率和召回率都高时,F1值也会高。
Python代码
from sklearn.linear_model import LogisticRegression #逻辑回归模型
from sklearn.metrics import accuracy_score #准确率(Accuracy)
from sklearn.metrics import precision_score #精准率(Precision)
from sklearn.metrics import recall_score #召回率(Recall)
from sklearn.metrics import classification_report #分类报告(包含准确,精准,召回的结果)
from sklearn.metrics import roc_auc_score #计算AUC,评估模型好坏
lr = LogisticRegression(solver=?) #solver 选择算法
lr.fit(x_train,y_train) #训练模型
lr.predict(x_test) #预测
lr.predict_proba(x_test) #模型预测正例的概率
roc_auc_score(y_test,lr.predict_proba(x_test)[:,1]) #放入真实的结果和模型预测出的概率