Как создать матрицу путаницы в Python


Логистическая регрессия — это тип регрессии, который мы можем использовать, когда переменная ответа является двоичной.

Одним из распространенных способов оценки качества модели логистической регрессии является создание матрицы путаницы , которая представляет собой таблицу 2 × 2, в которой показаны прогнозируемые значения из модели и фактические значения из тестового набора данных.

Чтобы создать матрицу путаницы для модели логистической регрессии в Python, мы можем использовать функцию путаницы_matrix() из пакета sklearn :

from sklearn import metrics
metrics. confusion_matrix (y_actual, y_predicted)

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

Пример: создание матрицы путаницы в Python

Предположим, у нас есть следующие два массива, которые содержат фактические значения переменной ответа вместе с прогнозируемыми значениями модели логистической регрессии:

#define array of actual values
y_actual = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

#define array of predicted values
y_predicted = [0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]

Мы можем использовать функцию путаницы_матрицы () из sklearn, чтобы создать матрицу путаницы для этих данных:

from sklearn import metrics

#create confusion matrix
c_matrix = metrics. confusion_matrix (y_actual, y_predicted)

#print confusion matrix
print(c_matrix)

[[6 4]
 [2 8]]

Если мы хотим, мы можем использовать функцию crosstab() из pandas, чтобы сделать более визуально привлекательную матрицу путаницы:

import pandas as pd

y_actual = pd.Series (y_actual, name='Actual')
y_predicted = pd.Series (y_predicted, name='Predicted')

#create confusion matrix
print(pd.crosstab (y_actual, y_predicted))

Predicted 0 1
Actual 
0 6 4
1 2 8

В столбцах показаны прогнозируемые значения для переменной ответа, а в строках — фактические значения.

Мы также можем рассчитать точность, точность и полноту, используя функции из пакета sklearn:

#print accuracy of model
print(metrics. accuracy_score (y_actual, y_predicted))

0.7

#print precision value of model
print(metrics. precision_score (y_actual, y_predicted))

0.667

#print recall value of model
print(metrics. recall_score (y_actual, y_predicted))

0.8

Вот краткий обзор точности, точности и отзыва:

  • Точность : процент правильных прогнозов
  • Точность : правильные положительные прогнозы по отношению к общему количеству положительных прогнозов.
  • Вспомнить : исправить положительные прогнозы по отношению к общему количеству фактических положительных результатов.

А вот как каждая из этих метрик была рассчитана в нашем примере:

  • Точность : (6+8) / (6+4+2+8) = 0,7
  • Точность : 8/(8+4) = 0,667
  • Напомним : 8 / (2+8) = 0,8

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

Введение в логистическую регрессию
3 типа логистической регрессии
Логистическая регрессия против линейной регрессии