机器学习:性能度量_分类_混淆矩阵、查准率(precision)、查全率(recall)

一、混淆矩阵

1.二分类

对于二分类问题,分类器在测试集上的预测或者正确或者不正确,令

  • TP(True Positive):分类器将正类预测为正类的数量。
  • FN(False Negative):分类器将正类预测为负类的数量。
  • FP(False Positive):分类器将负类预测为正类的数量。
  • TN(True Negative):分类器将负类预测为负类的数量。
真值情况 预测结果
正类 反类
正类 TP FN
反类 FP TN

2.confusion_matrix

2.1原型
sklearn.metrics.confusion_matrix(y_true,y_pred,labels=None)

2.2参数

  • y_true:样本集的真实标记。
  • y_pred:分类器对样本集预测的预测值。
  • labels:指定混淆矩阵中出现哪些类别。

2.3示例代码

from sklearn.metrics import confusion_matrix
y_true = [1,1,1,1,1,0,0,0,0,0]
y_pred = [0,0,1,1,0,0,0,0,0,0]
print("Confusion Matrix:\n",confusion_matrix(y_true,y_pred))
Confusion Matrix:
 [[5 0]
 [3 2]]

3.多分类

多分类仍然可以使用混淆矩阵

from sklearn.metrics import confusion_matrix
y_true = [1,2,2,1,1,0,1,1,0,2]
y_pred = [1,2,1,1,1,0,2,1,0,1]
print("Confusion Matrix:\n",confusion_matrix(y_true,y_pred))
Confusion Matrix:
 [[2 0 0]
 [0 4 1]
 [0 2 1]]

二、查准率(precision)

1.查准率的定义: p r e c i s i o n = T P T P + F P

2.含义:所有被预测为正类中真正正类的比例。

3.precision_score

3.1原型

  • sklearn.metrics.precision_score(y_true,y_pred,labels=None,pos_label=1,average=’binary’,sample_weight=None)

3.2参数

  • y_true:样本集的真实标记。
  • y_pred:分类器对样本集预测的预测值。
  • pos_label:一个字符串或整数,指定哪个标记值属于正类。
  • average:一个字符串,用于多分类问题。
  • sample_weight:样本权重,默认每个样本的权重为1。

3.3示例代码

from sklearn.metrics import accuracy_score,precision_score
y_true = [1,1,1,1,1,0,0,0,0,0]
y_pred = [0,0,1,1,0,0,0,0,0,0]
print("Accuracy Score:",accuracy_score(y_true,y_pred,normalize=True))
print("Precision Score",precision_score(y_true,y_pred))
Accuracy Score: 0.7
Precision Score 1.0

三、召回率(recall)

1.召回率定义: r e c a l l = T P T P + F N

2.含义:所有正类中,被找出的正类的比例。

3.recall_score

3.1原型

  • sklearn.metrics.recall_score(y_true,y_pred,labels=None,pos_labels=1,average=’binary’,sample_weight=None)

3.2参数

  • y_true:样本集的真实标记。
  • y_pred:分类器对样本集预测的预测值。
  • pos_label:一个字符串或整数,指定哪个标记值属于正类。
  • average:一个字符串,用于多分类问题。
  • sample_weight:样本权重,默认每个样本的权重为1。

3.3示例代码

扫描二维码关注公众号,回复: 2171411 查看本文章
from sklearn.metrics import accuracy_score,precision_score,recall_score
y_true = [1,1,1,1,1,0,0,0,0,0]
y_pred = [0,0,1,1,0,0,0,0,0,0]
print("Accuracy Score:",accuracy_score(y_true,y_pred,normalize=True))
print("Precision Score",precision_score(y_true,y_pred))
print("Recall Score",recall_score(y_true,y_pred))
Accuracy Score: 0.7
Precision Score 1.0
Recall Score 0.4

猜你喜欢

转载自blog.csdn.net/bqw18744018044/article/details/81024891