以西瓜数据集为例,我们来详细解释一下什么是TP、TN、FP以及FN。
一、基础概念
TP:被模型预测为正类的正样本
TN:被模型预测为负类的负样本
FP:被模型预测为正类的负样本
FN:被模型预测为负类的正样本
二、通俗理解(以西瓜数据集为例)
以西瓜数据集为例,我们来通俗理解一下什么是TP、TN、FP、FN。
TP:被模型预测为好瓜的好瓜(是真正的好瓜,而且也被模型预测为好瓜)
TN:被模型预测为坏瓜的坏瓜(是真正的坏瓜,而且也被模型预测为坏瓜)
FP:被模型预测为好瓜的坏瓜(瓜是真正的坏瓜,但是被模型预测为了好瓜)
FN:被模型预测为坏瓜的好瓜(瓜是真正的好瓜,但是被模型预测为了坏瓜)
准确率
定义:对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。
公式:
缺点:在正负样本不平衡的情况下,这个指标有很大的缺陷。
代码:
## accuracy
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 1]
print('ACC:',accuracy_score(y_true, y_pred))
ACC: 0.75
精确率
定义:精确率是检索出相关文档数与检索出的文档总数的比率(正确分类的正例个数占分类为正例的实例个数的比例),衡量的是检索系统的查准率。
公式:
代码:
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 1, 1]
print('Precision',metrics.precision_score(y_true, y_pred))
Precision 1.0
召回率
定义:召回率是指检索出的相关文档数和文档库中所有的相关文档数的比率(正确分类的正例个数占实际正例个数的比例),衡量的是检索系统的查全率。
公式:
代码:
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 1, 1]
print('Recall',metrics.recall_score(y_true, y_pred))
Recall 0.3333333333333333
F1
定义:F1分数(F1-score)是分类问题的一个衡量指标。它是精确率和召回率的调和平均数,最大为1,最小为0。
代码:
from sklearn import metrics
y_pred = [0, 1, 0, 0]
y_true = [0, 1, 1, 1]
print('F1-score:',metrics.f1_score(y_true, y_pred))
F1-score: 0.5
AUC
定义:AUC是一个模型评价指标,只能用于二分类模型的评价. AUC是Area under curve的首字母缩写。 Area under curve是什么呢,从字面理解,就是一条曲线下面区域的面积。
代码:
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:',roc_auc_score(y_true, y_scores))
AUC socre: 0.75