如何在Python中计算马修斯相关系数

648 阅读2分钟

马修斯相关系数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中计算分类模型的其他常用指标:

Python中的Logistic回归简介
如何在Python中计算F1分数
如何在Python中计算平衡准确率