Як інтерпретувати класифікаційний звіт у 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
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)

Нарешті, ми використаємо функцію 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*(.43*.36)/(.43+.36)
  • Оцінка F1: 0,40 .

Оскільки це значення не дуже близьке до 1, це говорить нам про те, що модель погано прогнозує, чи будуть гравці обрані чи ні.

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

Примітка . Ви можете знайти повну документацію для функції classification_report() тут .

Додаткові ресурси

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

Як виконати логістичну регресію в Python
Як створити матрицю плутанини в Python
Як розрахувати збалансовану точність у Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *