Как рассчитать коэффициент корреляции мэтьюза в 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *