Jak interpretować raport klasyfikacyjny w sklearn (z przykładem)


Kiedy używamy modeli klasyfikacyjnych w uczeniu maszynowym, używamy trzech typowych wskaźników do oceny jakości modelu:

1. Dokładność : Procent prawidłowych pozytywnych przewidywań w porównaniu do wszystkich pozytywnych przewidywań.

2. Przypomnienie : Procent prawidłowych pozytywnych przewidywań w porównaniu do całkowitej liczby faktycznie pozytywnych przewidywań.

3. Wynik F1 : Średnia ważona harmoniczna precyzji i zapamiętywania. Im model jest bliższy 1, tym jest on lepszy.

  • Wynik F1: 2* (Precyzja * Przywołanie) / (Precyzja + Przywołanie)

Korzystając z tych trzech metryk, możemy zrozumieć, jak dobrze dany model klasyfikacji jest w stanie przewidzieć wyniki dla określonychzmiennych odpowiedzi .

Na szczęście podczas dopasowywania modelu klasyfikacji w Pythonie możemy użyć funkcjiclassification_report () z biblioteki sklearn , aby wygenerować te trzy metryki.

Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.

Przykład: Jak korzystać z raportu klasyfikacji w sklearn

W tym przykładzie dopasujemy model regresji logistycznej, który wykorzystuje punkty i asysty, aby przewidzieć, czy 1000 różnych koszykarzy z college’u zostanie powołanych do NBA.

Najpierw zaimportujemy niezbędne pakiety, aby wykonać regresję logistyczną w Pythonie:

 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

Następnie utworzymy ramkę danych zawierającą informacje o 1000 koszykarzach:

 #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

Uwaga : Wartość 0 oznacza, że gracz nie został wybrany, natomiast wartość 1 oznacza, że gracz został wybrany.

Następnie podzielimy nasze dane na zbiór uczący i testowy oraz dopasujemy model regresji logistycznej:

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

Na koniec użyjemy funkcjiclassification_report () do wydrukowania metryk klasyfikacyjnych naszego modelu:

 #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

Oto jak zinterpretować wynik:

Wyjaśnienie : spośród wszystkich graczy, których model przewidywał, że zostaną powołani do draftu, faktycznie tak było tylko 43% .

Przypomnienie : spośród wszystkich graczy, którzy zostali faktycznie powołani do draftu, model poprawnie przewidział ten wynik tylko dla 36% z nich.

Wynik F1 : Ta wartość jest obliczana w następujący sposób:

  • Wynik F1: 2* (Precyzja * Przywołanie) / (Precyzja + Przywołanie)
  • Wynik F1: 2*(0,43*0,36)/(0,43+0,36)
  • Ocena F1: 0,40 .

Ponieważ wartość ta nie jest zbyt bliska 1, mówi nam to, że model słabo przewiduje, czy gracze zostaną powołani do draftu, czy nie.

Wsparcie : Te wartości po prostu mówią nam, ilu graczy należało do każdej klasy w testowym zbiorze danych. Widzimy, że spośród graczy w testowym zbiorze danych 160 nie zostało wybranych, a 140 tak.

Uwaga : Pełną dokumentację funkcjiclassification_report() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe tutoriale dostarczają dodatkowych informacji na temat używania modeli klasyfikacji w Pythonie:

Jak przeprowadzić regresję logistyczną w Pythonie
Jak utworzyć macierz zamieszania w Pythonie
Jak obliczyć zrównoważoną precyzję w Pythonie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *