分类常用评价指标

混淆矩阵

Predict
PositiveNegative
RealPositiveTPFN
NegativeFPTN

准确率

准确率(Accuracy)是指有在所有的判断中有多少判断正确的(即正类被预测为正类,负类被预测为负类)
accuracy=TP+TNTP+FP+FN+TN accuracy=\frac{TP+TN}{TP+FP+FN+TN} accuracy=TP+FP+FN+TNTP+TN

精确率

精确率(Precision)是指在预测为正类的样本中有多少为真正的正类
Precision=TPTP+FP Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

召回率

召回率(Recall)是指正类样本中有多少被预测为正类
Recall=TPTP+FN Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

特异率

特异率(Specificity)是指负类样本中有多少被预测为负类
Specificity=TNTN+FP Specificity=\frac{TN}{TN + FP} Specificity=TN+FPTN

F-Measure

有时精确率与召回率是矛盾的,F-Measure是精确率和召回率的加权调和平均
Fα−Measure=(α2+1)×Precision×Recallα2×(Precision+Recall) F_\alpha-Measure=\frac{(\alpha^2+1)\times Precision \times Recall}{\alpha^2 \times (Precision + Recall)} FαMeasure=α2×(Precision+Recall)(α2+1)×Precision×Recall
α=1\alpha=1α=1时,即为最常见的F1-Measure
F1=2×Precision×RecallPrecision+Recall F1=\frac{2 \times Precision \times Recall}{Precision + Recall} F1=Precision+Recall2×Precision×Recall

马修斯相关系数

马修斯相关系数(Matthews Correlation Coefficient)本质上是一个描述实际分类与预测分类之间的相关系数,它的取值范围为[0,1][0,1][0,1],取值为1时表示对受试对象的完美预测,取值为0时表示预测的结果还不如随机预测的结果,-1是指预测分类和实际分类完全不一致。
MCC=TP×TN−FP×FN(TP+FP)×(TP+FN)×(TN+FP)×(TN+FN) MCC=\frac{TP \times TN - FP \times FN}{\sqrt{(TP+FP) \times (TP+FN) \times (TN+FP) \times (TN+FN)}} MCC=(TP+FP)×(TP+FN)×(TN+FP)×(TN+FN)TP×TNFP×FN

### 多分类模型评估常用指标 #### 准确率 (Accuracy) 准确率是指所有预测正确的样本占总样本的比例。对于多分类问题而言,这是最直观但也可能是最具误导性的衡量标准之一,特别是在类别不平衡的情况下。 \[ \text{Accuracy} = \frac{\text{TP + TN}}{\text{P + N}} \] 其中 TP 表示真正例(True Positive),TN 表示真负例(True Negative), P 和 N 分别代表正类和负类的实际数目[^1]。 ```python from sklearn.metrics import accuracy_score y_true = [0, 1, 2, 2, 2] y_pred = [0, 0, 2, 2, 1] print(f'Accuracy: {accuracy_score(y_true, y_pred)}') ``` #### 精确度 (Precision) 精确度反映了被预测为某个特定类别的实例中有多少确实是该类别成员。在多标签或多分类场景下,可以通过宏平均(Macro Average)或微平均(Micro Average)的方式计算总体精度。 \[ \text{Precision}_i = \frac{\text{TP}_i}{\text{TP}_i+\text{FP}_i} \] 这里 \( i \) 是指第 \( i \) 类[^4]。 ```python from sklearn.metrics import precision_score precision_macro = precision_score([0, 1, 2], [0, 0, 2], average='macro') print(f'Macro Precision: {precision_macro}') ``` #### 召回率 (Recall) 召回率表示实际属于某类的对象中有多大比例被成功识别出来。同样适用于多分类情况下的宏观/微观均值形式。 \[ \text{Recall}_i=\frac{\mathrm{T} \mathrm{P}_{i}}{\mathrm{~T} \mathrm{P}_{i}+\mathrm{FN}_{i}} \] \( FN_i \) 指的是假阴性(False Negatives)[^3]。 ```python from sklearn.metrics import recall_score recall_macro = recall_score([0, 1, 2], [0, 0, 2], average='macro') print(f'Macro Recall: {recall_macro}') ``` #### F1分数 (F1 Score) 作为精确度与召回率之间的调和平均数,F1得分提供了一个综合考量两者平衡程度的单一数值。 \[ \text{F1-Score}=2 * (\text{Precision}\times\text{Recall}) /(\text{Precision}+\text{Recall}) \] 此公式可用于单个二元分类器,也可以通过宏平均或微平均应用于多个类别上[^5]。 ```python from sklearn.metrics import f1_score f1_macro = f1_score([0, 1, 2], [0, 0, 2], average='macro') print(f'Macro F1 Score: {f1_macro}') ``` #### ROC曲线下面积(AUC-ROC Curve Area Under the Curve) 尽管传统意义上ROC曲线主要用于二元分类任务,但对于多分类问题,则可通过一对多(one-vs-rest)策略构建相应的ROC图并求得其下面积AUC来量化各分类效果的好坏。较高的AUC意味着更好的区分能力[^2]。 ```python import numpy as np from sklearn.preprocessing import label_binarize from sklearn.multiclass import OneVsRestClassifier from sklearn.svm import SVC from sklearn.metrics import roc_auc_score # 假设X_train, X_test, y_train, y_test已经定义好 classifier = OneVsRestClassifier(SVC(kernel="linear", probability=True)) y_score = classifier.fit(X_train, y_train).decision_function(X_test) roc_auc_ovr = roc_auc_score(label_binarize(y_test, classes=[0, 1, 2]), y_score, multi_class='ovr', average='weighted') print(f'AUC of OvR SVM is {roc_auc_ovr:.2f}') ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值