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


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

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

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

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

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

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

К счастью, при настройке модели классификации в Python мы можем использовать функциюclassification_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
np.random.seed (1)

#create DataFrame
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)

Наконец, мы будем использовать функциюclassification_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 были задрафтованы.

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

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

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

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

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