机器学习中不同衡量指标的对比(python)

混淆矩阵

机器学习中不同衡量指标的对比(python)_第1张图片

TP(True Positive):被正确预测的正例。即该数据的真实值为正例,预测值也为正例的情况;
TN(True Negative):被正确预测的反例。即该数据的真实值为反例,预测值也为反例的情况;
FP(False Positive):被错误预测的正例。即该数据的真实值为反例,但被错误预测成了正例的情况;
FN(False Negative):被错误预测的反例。即该数据的真实值为正例,但被错误预测成了反例的情况。

代码块:

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

准确率

准确率(Accuracy)表示分类正确的样本占总样本个数的比例。
在这里插入图片描述
缺点: 只有当数据集各个类别的样本比例比较均衡时,Accuracy这个指标才是一个比较好的衡量标准。

代码示例:

from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)

精确率

在这里插入图片描述

代码示例:

from skearn.metrics import precision_score
precision_score(y_true, y_pred, average='micro')

参数
y_true: 一维数组,或标签指示符/ 稀疏矩阵,实际(正确的)标签.
y_pred: 一维数组,或标签指示符 / 稀疏矩阵,分类器返回的预测标签.
labels :列表,可选值. 当average != binary时被包含的标签集合,如果average是None的话还包含它们的顺序.在数据中存在的标签可以被排除,比如计算一个忽略多数负类的多类平均值时,数据中没有出现的标签会导致宏平均值(marco average)含有0个组件. 对于多标签的目标,标签是列索引. 默认情况下,y_true和y_pred中的所有标签按照排序后的顺序使用.
pos_label : 字符串或整型,默认为1. 如果average = binary并且数据是二进制时需要被报告的类.若果数据是多类的或者多标签的,这将被忽略;设置labels=[pos_label]和average !=
binary就只会报告设置的特定标签的分数. average : 字符串,可选值为[None, ‘binary’ (默认),‘micro’, ‘macro’, ‘samples’, ‘weighted’]. 多类或 者多标签目标需要这个参数.如果为None,每个类别的分数将会返回. 否则,它决定了数据的平均值类型.
‘binary’: 仅报告由pos_label指定的类的结果.这仅适用于目标(y_{true, pred})是二进制的情况.
‘micro’: 通过计算总的真正性、假负性和假正性来全局计算指标.
‘macro’: 为每个标签计算指标,找到它们未加权的均值. 它不考虑标签数量不平衡的情况.
‘weighted’:为每个标签计算指标,并通过各类占比找到它们的加权均值(每个标签的正例数).它解决了’macro’的标签不平衡问题;它可以产生不在精确率和召回率之间的F-score.
‘samples’: 为每个实例计算指标,找到它们的均值(只在多标签分类的时候有意义,并且和函数accuracy_score不同).
sample_weight : 形状为[样本数量]的数组,可选参数. 样本权重.
返回值
precision:浮点数(如果average不是None) 或浮点数数组, shape =[唯一标签的数量] 二分类中正类的精确率或者在多分类任务中每个类的精确率的加权平均.

召回率

在这里插入图片描述

代码示例:

from skearn.metrics import recall_score
recall_score(y_true, y_pred, average='macro')

F1 score

在这里插入图片描述

代码示例:

from skearn.metrics import f1_score
f1_score(y_true, y_pred, average='macro')

最近学习到了这里,码一下。
参考链接:https://zhuanlan.zhihu.com/p/405658103

你可能感兴趣的:(机器学习,python,人工智能)