Sklearn'de sınıflandırma raporu nasıl yorumlanır (örnekle)


Makine öğreniminde sınıflandırma modellerini kullandığımızda modelin kalitesini değerlendirmek için üç ortak ölçüm kullanırız:

1. Doğruluk : Toplam pozitif tahminlere kıyasla doğru pozitif tahminlerin yüzdesi.

2. Hatırlama : Toplam fiili pozitif tahminlere kıyasla doğru pozitif tahminlerin yüzdesi.

3. F1 Puanı : Hassasiyet ve hatırlamanın ağırlıklı harmonik ortalaması. Model 1’e ne kadar yakınsa model o kadar iyidir.

  • F1 Puanı: 2* (Hassaslık * Geri Çağırma) / (Hassaslık + Geri Çağırma)

Bu üç ölçümü kullanarak, belirli bir sınıflandırma modelinin belirli yanıt değişkenlerine ilişkin sonuçları ne kadar iyi tahmin edebildiğini anlayabiliriz.

Neyse ki, Python’da bir sınıflandırma modeli yerleştirirken, bu üç ölçümü oluşturmak için sklearn kütüphanesindeki class_report() fonksiyonunu kullanabiliriz.

Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.

Örnek: Sklearn’de sınıflandırma raporu nasıl kullanılır?

Bu örnek için, 1000 farklı üniversite basketbol oyuncusunun NBA’e alınıp alınmayacağını tahmin etmek için puanları ve asistleri kullanan bir lojistik regresyon modeli uygulayacağız.

Öncelikle Python’da lojistik regresyon gerçekleştirmek için gerekli paketleri içe aktaracağız:

 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

Daha sonra 1000 basketbolcunun bilgilerini içeren veri çerçevesini oluşturacağız:

 #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

Not : 0 değeri, oyuncunun draft edilmediğini, 1 değeri ise oyuncunun draft edildiğini gösterir.

Daha sonra verilerimizi bir eğitim seti ve bir test seti olarak ayıracağız ve lojistik regresyon modeline uyarlayacağız:

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

Son olarak modelimizin sınıflandırma metriklerini yazdırmak için class_report() fonksiyonunu kullanacağız:

 #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

Sonucun nasıl yorumlanacağı aşağıda açıklanmıştır:

Açıklama : Modellerinin draft edileceğini öngördüğü oyuncuların yalnızca %43’ü gerçekten öyleydi.

Hatırlatma : Aslında seçilen tüm oyuncular arasında model, bu sonucu yalnızca %36’sı için doğru bir şekilde tahmin etti.

F1 Puanı : Bu değer şu şekilde hesaplanır:

  • F1 Puanı: 2* (Hassaslık * Geri Çağırma) / (Hassaslık + Geri Çağırma)
  • F1 puanı: 2*(.43*.36)/(.43+.36)
  • F1 derecesi: 0,40 .

Bu değer 1’e çok yakın olmadığı için bu bize modelin oyuncuların draft edilip edilmeyeceğini tahmin etme konusunda zayıf olduğunu gösteriyor.

Destek : Bu değerler bize basitçe test veri setindeki her sınıfa kaç oyuncunun ait olduğunu söyler. Test veri setindeki oyuncuların 160’ının draft edilmediğini, 140’ının ise draft edilmediğini görebiliyoruz.

Not : class_report() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimler Python’da sınıflandırma modellerinin kullanımına ilişkin ek bilgiler sağlar:

Python’da Lojistik Regresyon Nasıl Gerçekleştirilir
Python’da Karışıklık Matrisi Nasıl Oluşturulur
Python’da dengeli hassasiyet nasıl hesaplanır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir