Как рассчитать коэффициент корреляции мэтьюза в python
Коэффициент корреляции Мэтьюза (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 баскетболистов из разных колледжей выбраны в НБА.
Следующая матрица путаницы суммирует прогнозы, сделанные моделью:
Для расчета MCC модели мы можем использовать следующую формулу:
- MCC = (TP*TN – FP*FN) / √ (TP+FP)(TP+FN)(TN+FP)(TN+FN)
- МСС = (15*375-5*5) / √ (15+5)(15+5)(375+5)(375+5)
- МКК = 0,7368
Коэффициент корреляции Мэтьюза оказывается равным 0,7368 . Это значение несколько близко к единице, что указывает на то, что модель неплохо справляется с прогнозированием того, будут ли игроки выбраны на драфте или нет.
В следующем примере показано, как рассчитать MCC для этого конкретного сценария с помощью функции matthews_corrcoef() из библиотеки sklearn в Python.
Пример: расчет коэффициента корреляции Мэтьюза в 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
Как рассчитать оценку F1 в Python
Как рассчитать сбалансированную точность в Python