Cara menafsirkan laporan klasifikasi di sklearn (dengan contoh)


Saat kami menggunakan model klasifikasi dalam pembelajaran mesin, kami menggunakan tiga metrik umum untuk mengevaluasi kualitas model:

1. Akurasi : Persentase prediksi positif yang benar dibandingkan total prediksi positif.

2. Ingat : Persentase prediksi positif yang benar dibandingkan dengan total positif aktual.

3. Skor F1 : Rata-rata harmonik tertimbang dari presisi dan perolehan. Semakin mendekati angka 1 maka model tersebut semakin baik.

  • Skor F1: 2* (Presisi * Recall) / (Presisi + Recall)

Dengan menggunakan ketiga metrik ini, kita dapat memahami seberapa baik model klasifikasi tertentu mampu memprediksi hasil untuk variabel respons tertentu.

Untungnya, saat memasang model klasifikasi dengan Python, kita dapat menggunakan fungsi classification_report() dari pustaka sklearn untuk menghasilkan ketiga metrik ini.

Contoh berikut menunjukkan cara menggunakan fungsi ini dalam praktiknya.

Contoh: Cara menggunakan laporan klasifikasi di sklearn

Untuk contoh ini, kami akan menggunakan model regresi logistik yang menggunakan poin dan bantuan untuk memprediksi apakah 1.000 pemain bola basket perguruan tinggi akan direkrut ke NBA atau tidak.

Pertama, kita akan mengimpor paket yang diperlukan untuk melakukan regresi logistik dengan 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

Selanjutnya kita akan membuat data frame yang berisi informasi 1000 pemain bola basket:

 #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

Catatan : Nilai 0 menunjukkan bahwa seorang pemain belum direkrut, sedangkan nilai 1 menunjukkan bahwa seorang pemain telah direkrut.

Selanjutnya, kita akan membagi data menjadi set pelatihan dan set pengujian dan menyesuaikan dengan model regresi logistik:

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

Terakhir, kita akan menggunakan fungsi classification_report() untuk mencetak metrik klasifikasi model kita:

 #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

Berikut cara menafsirkan hasilnya:

Klarifikasi : dari semua pemain yang modelnya diprediksi akan direkrut, hanya 43% yang benar-benar masuk.

Pengingat : di antara semua pemain yang benar-benar direkrut, model hanya memprediksi dengan tepat hasil ini untuk 36% dari mereka.

Skor F1 : Nilai ini dihitung sebagai berikut:

  • Skor F1: 2* (Presisi * Recall) / (Presisi + Recall)
  • Skor F1: 2*(.43*.36)/(.43+.36)
  • Peringkat F1: 0,40 .

Karena nilai ini tidak terlalu mendekati 1, hal ini menunjukkan bahwa model tersebut kurang dapat memprediksi apakah pemain akan direkrut atau tidak.

Dukungan : Nilai-nilai ini hanya memberi tahu kita berapa banyak pemain yang termasuk dalam setiap kelas dalam kumpulan data pengujian. Kita dapat melihat bahwa dari pemain dalam kumpulan data pengujian, 160 pemain belum direkrut dan 140 pemain belum direkrut.

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi classification_report() di sini .

Sumber daya tambahan

Tutorial berikut memberikan informasi tambahan tentang penggunaan model klasifikasi dengan Python:

Cara Melakukan Regresi Logistik dengan Python
Cara Membuat Matriks Kebingungan dengan Python
Cara menghitung presisi seimbang dengan Python

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *