1.准确率(accuracy)
from sklearn.metrics import accuracy_score
acc = accuracy_score(train_y,pred_y,normalize=True)
normalize=True 返回准确率,False则返回分类正确的个数
准确率的局限性:
1.类别不平衡时。
2.仅关注某一类,然而该类占比极小。
2.精度/查准率(precision)
from sklearn.metrics import precision_score
pre = precision_score(train_y,pred_y,average = None)
average: None :各个类别的精度列表
macro:各个类别的精度平均值(注意类别不平衡)
weight:各个类别加权
micro:多标签问题中,大类被忽略
购物推荐中比较重要
3.召回率(recall)
from sklearn.metrics import recall_score
pre = recall_score(train_y,pred_y,average = None)
average: None :各个类别的精度列表
macro:各个类别的精度平均值(注意类别不平衡)
weight:各个类别加权(权重 = 类别中的样本数量)
micro:多标签问题中,大类被忽略
犯罪检索,疾病监测中比较重要
4.F1值
F1 = 2 * P * R/(P+R)
控制单变量时,F1值是单调递增的。
from sklearn.metrics import f1_score
f1_score(train_y, y_pred, pos_label = 1, average = None)
pos_label指正例的类别。
或者使用下面的方法,一次性输出P,R and f1.
import warnings
warnings.filterwarnings("ignore")
train_y = [1,0,1,0,1,0,1,0,1,1]
y_pred = [0,0,0,0,0,0,0,0,0,0]
from sklearn.metrics import classification_report
target_names=['a','b']
print(classification_report(train_y, y_pred, target_names = target_names))
5.ROC曲线
在面对类别不平衡是,ROC曲线作为评价标准很有用。
查看这个链接
ROC
from sklearn.metrics import roc_curve
roc_curve(train_y,y_pred_prob,pos_label = 1)
pos_label指正例的类别。