Как интерпретировать отчет о классификации в sklearn (с примером)


Когда мы используем модели классификации в машинном обучении, мы используем три общих показателя для оценки качества модели:

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

2. Напомним : процент правильных положительных прогнозов по сравнению с общим количеством фактических положительных прогнозов.

3. Оценка F1 : средневзвешенное гармоническое значение точности и полноты. Чем ближе модель к 1, тем лучше модель.

  • Оценка F1: 2* (точность * отзыв) / (точность + отзыв)

Используя эти три показателя, мы можем понять, насколько хорошо данная модель классификации способна прогнозировать результаты для определенных переменных ответа .

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

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

Пример: как использовать отчет о классификации в sklearn

В этом примере мы воспользуемся моделью логистической регрессии, которая использует очки и результативные передачи, чтобы предсказать, будут ли 1000 баскетболистов из разных колледжей выбраны в НБА.

Сначала мы импортируем необходимые пакеты для выполнения логистической регрессии в Python:

 import pandas as pd
import numpy as np
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. metrics import classification_report

Далее мы создадим фрейм данных, содержащий информацию о 1000 баскетболистах:

 #make this example reproducible
n.p. random . seeds (1)

#createDataFrame
df = pd. DataFrame ({' points ': np. random . randint (30, size=1000),
                   ' assists ': np. random . randint (12, size=1000),
                   ' drafted ': np. random . randint (2, size=1000)})

#view DataFrame
df. head ()

	points assists drafted
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0

Примечание . Значение 0 указывает на то, что игрок не был выбран на драфте, а значение 1 указывает на то, что игрок был выбран.

Далее мы разделим наши данные на обучающий набор и тестовый набор и подгоним модель логистической регрессии:

 #define the predictor variables and the response variable
X = df[[' points ', ' assists ']]
y = df[' drafted ']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.3,random_state=0)  

#instantiate the model
logistic_regression = LogisticRegression()

#fit the model using the training data
logistic_regression. fit (X_train,y_train)

#use model to make predictions on test data
y_pred = logistic_regression. predict (X_test)

Наконец, мы воспользуемся функцией классификация_report() для печати показателей классификации нашей модели:

 #print classification report for model
print (classification_report(y_test, y_pred))

              precision recall f1-score support

           0 0.51 0.58 0.54 160
           1 0.43 0.36 0.40 140

    accuracy 0.48 300
   macro avg 0.47 0.47 0.47 300
weighted avg 0.47 0.48 0.47 300

Вот как интерпретировать результат:

Уточнение : из всех игроков, чья модель предсказывала, что они будут выбраны, на самом деле это сделали только 43% .

Напоминание : среди всех фактически выбранных игроков модель правильно предсказала этот результат только для 36% из них.

Оценка F1 : это значение рассчитывается следующим образом:

  • Оценка F1: 2* (точность * отзыв) / (точность + отзыв)
  • Оценка F1: 2*(0,43*0,36)/(0,43+0,36)
  • Рейтинг F1: 0,40 .

Поскольку это значение не очень близко к 1, это говорит нам о том, что модель плохо предсказывает, будут ли выбраны игроки или нет.

Поддержка : эти значения просто говорят нам, сколько игроков принадлежало к каждому классу в тестовом наборе данных. Мы видим, что из игроков в тестовом наборе данных 160 не были задрафтованы, а 140 — были.

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

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

Следующие руководства предоставляют дополнительную информацию об использовании моделей классификации в Python:

Как выполнить логистическую регрессию в Python
Как создать матрицу путаницы в Python
Как рассчитать сбалансированную точность в Python

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

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