Как рассчитать коэффициент корреляции Мэтьюса в Python

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

МСС составляет 0,7368.Это соответствует значению, которое мы рассчитали ранее вручную.

Примечание.Полную документацию по функции matthews_corrcoef() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как рассчитать другие общие показатели для моделей классификации в Python:

Введение в логистическую регрессию в Python
Как рассчитать счет F1 в Python
Как рассчитать сбалансированную точность в Python

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.