马修斯相关系数(MCC)是一个我们可以用来评估分类模型性能的指标。
它的计算方法是:
MCC= (tp*tn - fp*fn) / √(tp+fp)(tp+fn)(tn+fp)(tn+fn)
其中:
- TP:真阳性的数量
- TN:真阴性的数量
- FP:假阳性的数量
- FN:假阴性的数量
当两个类别不平衡时,这个指标特别有用--也就是说,一个类别比另一个类别出现得多。
MCC的值从-1到1不等,其中:
- -1表示预测的类和实际的类之间完全不一致
- 0是完全随机猜测的同义词
- 1表示预测类和实际类之间完全一致。
例如,假设一个体育分析家使用逻辑回归模型来预测400个不同的大学篮球运动员是否被选入NBA。
下面的混淆矩阵总结了该模型的预测结果。
为了计算该模型的MCC,我们可以使用以下公式。
- MCC= (tp*tn - fp*fn) / √(tp+fp)(tp+fn)(tn+fp)(tn+fn)
- MCC= (15*375-5*5) / √(15+5)(15+5)(375+5)(375+5)
- MCC= 0.7368
马修斯相关系数原来是0.7368。这个数值有点接近于1,这表明该模型在预测球员是否会被选上方面做得很好。
下面的例子显示了如何使用Python中sklearn库的**matthews_corrcoef()**函数来计算这种确切情况下的MCC。
例子:在Python中计算马修斯相关系数
下面的代码显示了如何定义一个预测类数组和一个实际类数组,然后在Python中计算模型的马修斯相关系数:
import numpy as np
from sklearn.metrics import matthews_corrcoef
#define array of actual classes
actual = np.repeat([1, 0], repeats=[20, 380])
#define array of predicted classes
pred = np.repeat([1, 0, 1, 0], repeats=[15, 5, 5, 375])
#calculate Matthews correlation coefficient
matthews_corrcoef(actual, pred)
0.7368421052631579
MCC是0.7368。这与我们之前手工计算的数值相匹配。
注意:你可以在这里找到matthews_corrcoef()函数的完整文档。
其他资源
下面的教程解释了如何在Python中计算分类模型的其他常用指标: