1. 使用sklearn.metric包中的性能度量函数

sklearn LogisticRegression 生成图像_模型评价指标

1.1 分类器性能度量

  • 精度-召回率-F度量
  • 损失函数
  • 接收机操作曲线

1.2 只限于二元单标签分类问题的评估指标

  1. metrics.precision_recall_curve(y_true,probas_pred)在不同概率阈值下计算precision-recall形成的曲线。
  2. metrics.roc_curve(y_true, y_score, pos_label=None, sample_weight=None,drop_intermediate=True) 计算ROC曲线。

1.3用于二元多标签分类问题的评估指标

  1. metrics.average_precision_score(y_true, y_score, average="macro", pos_label=1,sample_weight=None) 计算预测得分的平均精度(mAP)
  2. metrics.roc_auc_score(y_true, y_score, average="macro", sample_weight=None, max_fpr=None): 计算预测得分的AUC值。

1.4用于多分类问题的评估指标

####1.4.1 多分类单标签
confusion_matrix(y_true, y_pred, labels=None, sample_weight=None) 计算混淆矩阵
返回值
C : array, shape = [n_classes, n_classes] Confusion matrix
sklearn LogisticRegression 生成图像_多分类_02实际是i类被分类为j类的数量
hinge_loss(y_true, pred_decision, labels=None, sample_weight=None) 计算hinge loss
hinge loss 算法参考

1.4.2 多分类
  1. accuracy_score(y_true, y_pred, normalize=True, sample_weight=None): 参数normalize为true,返回小数(float),否则返回分类正确的个数(int)
  2. classification_report(y_true, y_pred, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False) 返回值
    report:string / dict
    返回每个类别的precision, recall, F1 score
    如果output_dict=True,字典结构如下:
{'label 1': {'precision':0.5,
                         'recall':1.0,
                         'f1-score':0.67,
                         'support':1},
             'label 2': { ... },
              ...
            }

output_dict 默认是None

r = metrics.classification_report(y_true,y_pred, labels=["ant", "bird", "cat"])

sklearn LogisticRegression 生成图像_召回率_03


3. 其他一些

metrics.f1_score()
metrics.fbeta_score()
metrics.hamming_loss()
metrics.log_loss()
metrics.zero_one_loss()

metrics.precision_score()
metrics.recall_score()

1.5 如何将二元分类任务扩展到多类或者多标签任务中

  1. 将多类任务划分为多个二分类任务,并对数据集做相应划分
  2. 计划二元分类的评价指标,将子分类的分类结果做平均
  3. 有5中不同的平均方式macro,micro,weighted,samples,Nonemacro(宏平均)与micro(微平均)的区别average=None 不平均,输出列表,每个类别的结果。
  4. sklearn LogisticRegression 生成图像_召回率_04


  5. sklearn LogisticRegression 生成图像_多分类_05


Macro-averaging与Micro-averaging的不同之处在于:Macro-averaging赋予每个类相同的权重,然而Micro-averaging赋予每个样本决策相同的权重。

1.6 分类器性能评估指标相应函数

1.6.1 精度-召回率-F度量

precision_recall_curve 二分类
多分类

metrics.precision_score()
metrics.recall_score()
metrics.average_precision_score()
metrics.f1_score()
metrics.fbeta_score()
metrics.precision_recall_fscore_support()
1.6.2 损失函数
metrics.hamming_loss()
metrics.log_loss()
metrics.zero_one_loss()
1.6.3 接收机操作曲线

接收机操作曲线(Reciver operating curve) 二分类
MCC指标(Matthews Correlation Coefficient) 二分类
杰拉德系数(Jaccard Similarity Coefficient)多分类

2 sklearn 分类器性能指标

2.1 准确率

accuracy_score(y_true, y_pred, normalize=True, sample_weight=None) 参数normalize为true,返回小数(float),否则返回分类正确的个数(int)

2.2 混淆矩阵

混淆矩阵(confusion matrix),也成为错误矩阵(error matrix),每一行表示实际为实际样本个数,每一列为预测样本个数。所有正确分类都在对角线上。

sklearn LogisticRegression 生成图像_模型评价指标_06


当类别不平衡时,通过accuracy作为衡量分类器的指标不可靠。只依据accuracy评判,容易产生误导人的结果。通过混淆矩阵计算precision(精确度)和recall(召回率、查全率)

根据上面的混淆矩阵,得出cat类别的tabele of confusion

sklearn LogisticRegression 生成图像_模型评价指标_07


confusion_matrix(y_true, y_pred, labels=None, sample_weight=None) 计算混淆矩阵、

返回C

labels=None返回矩阵的类别按顺序排列

y_pred = [1,1,1,2,0,0,1]
y_true = [1,1,1,2,1,0,1]
c = metrics.confusion_matrix(y_true,y_pred)
print(c)

sklearn LogisticRegression 生成图像_召回率_08


带标签形式

y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
c =metrics.confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])

sklearn LogisticRegression 生成图像_模型评价指标_09

2.3 精确率、召回率、F1_score、Fbeta_score

table of confusion

sklearn LogisticRegression 生成图像_模型评价指标_10

  • TPR
    True Positive Rate,正阳率,也叫Recall召回率,sensitivity敏感度,probability of detection检测概率,分母是实际样本中正样本的数量。sklearn LogisticRegression 生成图像_混淆矩阵_11P是训练样本中正样本的数量
  • FPR
    False Positive Rate,假阳率,fall out, probability of false alarm(虚警率)。分母是实际样本中负样本的数量
    sklearn LogisticRegression 生成图像_混淆矩阵_12
  • PrecisionF
    精确度。分母是所有预测为正样本的数量。被挑出的正样本中,真是标签为正所占的比例。sklearn LogisticRegression 生成图像_模型评价指标_13
  • Accuracy
    准确率。所有样本分类正确的概率
    sklearn LogisticRegression 生成图像_混淆矩阵_14
  • F1_score 综合评价指标
    sklearn LogisticRegression 生成图像_召回率_15
  • Fbeta_score
    Fbeta_score在F1_score的基础上添加了调节参数sklearn LogisticRegression 生成图像_召回率_16
    sklearn LogisticRegression 生成图像_混淆矩阵_17
    sklearn LogisticRegression 生成图像_混淆矩阵_18sklearn LogisticRegression 生成图像_混淆矩阵_19=sklearn LogisticRegression 生成图像_召回率_20;
    sklearn LogisticRegression 生成图像_多分类_21越小,precision的作用越大;
    sklearn LogisticRegression 生成图像_多分类_21越大,Recall的作用越大;
  • MCC

2.4 分类器评估标准之ROC曲线

ROC曲线描述了在不同阈值下TPR随FPR变化的情况。ROC曲线以FPRX轴,以TPRY轴.

  • 点(0,1) 100%灵敏度,0%的虚警率,完美分类器。
  • 如果以对角线划分ROC空间,对角线以上的是好的分类器,对角线是坏分类器。在对角线是随机的结果。一个坏的分类器可以通过逆转得到一个好的分类器。
  • 下图中的A、B、C三个分类器。
  • A 虚警率低、敏感度高,分类效果好
  • B 随机分类器
  • C 虚警率高,灵敏度低,坏的分类器
  • sklearn LogisticRegression 生成图像_混淆矩阵_23 C的逆转分类器,虚警率低,灵敏度高,好分类器。
2.4.1 ROC曲线怎么绘制

计算在不同阈值下对应的FPR和TPR

fpr,tpr,threshold = sklearn.metrics.roc_curve(y_true, y_score, pos_label=None,
sample_weight=None,drop_intermediate=True)

返回值
fpr、tpr
threshold

y_true = np.array([1, 1, 2, 2])
y_pred = np.array([0.1, 0.4, 0.35, 0.8])
fpr,tpr,threshold =metrics.roc_curve(y_true,y_pred,pos_label=2)
print('threshold',threshold)
print('fpr',fpr)
print('tpr',tpr)
threshold [1.8  0.8  0.4  0.35 0.1 ]
fpr [0.  0.  0.5 0.5 1. ]
tpr [0.  0.5 0.5 1.  1. ]
2.4.2 ROC曲线怎么绘制(连续分布)

连续分布的tprfpr的计算.

T是选定的分割阈值

sklearn LogisticRegression 生成图像_召回率_24

sklearn LogisticRegression 生成图像_混淆矩阵_25

sklearn LogisticRegression 生成图像_模型评价指标_26

3 sklearn中分类器评估方法

损失函数用来度量模型预测输出与真实标签间不一致的程度。

  • 0-1损失
    sklearn LogisticRegression 生成图像_混淆矩阵_27
  • hinge 损失
    sklearn LogisticRegression 生成图像_多分类_28
    y-标签值,f(x) - 预测值
  • Logistic 损失
    sklearn LogisticRegression 生成图像_模型评价指标_29
  • 对数损失或交叉熵损失
    sklearn LogisticRegression 生成图像_混淆矩阵_30

3.1 对数损失或交叉熵损失

在多元分类任务中,假定有K个类别,则类标签集合就是sklearn LogisticRegression 生成图像_多分类_31。用one-hot方式编码标签,sklearn LogisticRegression 生成图像_多分类_32表示第sklearn LogisticRegression 生成图像_模型评价指标_33个样本是第sklearn LogisticRegression 生成图像_模型评价指标_34类。每个样本标签都是一个one-hot向量,该向量中只有一个元素为1。N个样本的标签矩阵sklearn LogisticRegression 生成图像_混淆矩阵_35就是一个sklearn LogisticRegression 生成图像_模型评价指标_36的矩阵

sklearn LogisticRegression 生成图像_多分类_37


分类器预测每个样本的属于每个类别的概率,预测矩阵sklearn LogisticRegression 生成图像_混淆矩阵_35也是一个sklearn LogisticRegression 生成图像_模型评价指标_36的矩阵

sklearn LogisticRegression 生成图像_模型评价指标_40


sklearn LogisticRegression 生成图像_召回率_41

N-样本总数,K-类别数。sklearn LogisticRegression 生成图像_多分类_42标签值,sklearn LogisticRegression 生成图像_多分类_43预测值。

y_true=[0,0,1,1]
y_pred = [[0.2,0.8],[0.3,0.7],[0.2,0.8],[0.5,0.5]]
log_loss = metrics.log_loss(y_true,y_pred)

log_loss函数会将标签转成one-hot编码

3.2 汉明损失

  • 在多分类任务中,汉明损失与0-1损失相同
  • 在多标签任务中,汉明损失是根据标签类别计算的
    sklearn LogisticRegression 生成图像_召回率_44

4. sklearn中回归器评估方法

4.1 解释方差(Explained Variance Score)

explained_variance_score(y_true, y_pred,sample_weight=None,multioutput='uniform_average')sklearn LogisticRegression 生成图像_召回率_45

4.2 平均绝对误差(MAE)

mean_absolute_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')sklearn LogisticRegression 生成图像_召回率_46

4.3 平均平方误差(Mean Squared Error)

mean_squared_error(y_true, y_pred, sample_weight=None, multioutput='uniform_average')sklearn LogisticRegression 生成图像_模型评价指标_47

4.4 sklearn LogisticRegression 生成图像_召回率_48

r2_score(y_true, y_pred, sample_weight=None, multioutput="uniform_average")

sklearn LogisticRegression 生成图像_模型评价指标_49
sklearn LogisticRegression 生成图像_召回率_48表征模型对未来样本预测能力

用于回归问题
决定系数R2 ,衡量模型预测能力好坏(真实和预测的 相关程度百分比)
Y_true是真实的数据,y_pred是预测的数据。

使用r2_score()方法可以看到,预测数据和真实数据越接近,R2越大。当然最大值是 1 一个模型的R2
值为0还不如直接用平均值来预测效果好;而一个R2值为1的模型则可以对目标变量进行完美的预测。从0至1之间的数值,则表示该模型中目标变量中有百分之多少能够用特征来解释。模型也可能出现负值的R2,这种情况下模型所做预测有时会比直接计算目标变量的平均值差很多。
参考

sklearn LogisticRegression 生成图像_多分类_51


参考

4.5 平均中值误差(Median Absolute Error)

对于异常值有很强的鲁棒性

median_absolute_error(y_true, y_pred)

sklearn LogisticRegression 生成图像_召回率_52

  • 4.1~4.5都有multi_output参数,用于指定在多目标回归问题中,单个目标获得分以什么样的形式平均起来。
  • 如果传入一个shape为(n_output,)的ndarray,那么ndarray中的每个元素视为对单个预测得分的加权值。
  • 如果multi_output=raw_values,那么所有预测目标的回归损失单独返回到shape为(n_output,)的数组中。n_output——回归变量的个数。
  • 解释方差(Explained Variance Score)和sklearn LogisticRegression 生成图像_多分类_53还可以接受variance_weighted作为multi_output的参数,根据预测目标的方差对相应的回归目标的预测得分进行加权