Cara membuat plot beberapa kurva kop dengan python (dengan contoh)


Salah satu cara untuk memvisualisasikan performa model klasifikasi dalam pembelajaran mesin adalah dengan membuat kurva ROC , yang merupakan singkatan dari kurva “karakteristik operasi penerima”.

Seringkali, Anda mungkin ingin menyesuaikan beberapa model klasifikasi ke satu kumpulan data dan membuat kurva ROC untuk setiap model guna memvisualisasikan model mana yang memiliki performa terbaik pada data.

Contoh langkah demi langkah berikut menunjukkan cara memplot beberapa kurva ROC dengan Python.

Langkah 1: Impor paket yang diperlukan

Pertama, kita akan mengimpor beberapa paket yang diperlukan ke Python:

 from sklearn import metrics
from sklearn import datasets
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. set import GradientBoostingClassifier
import numpy as np
import matplotlib. pyplot as plt

Langkah 2: Buat Data Palsu

Selanjutnya, kita akan menggunakan fungsi make_classification() sklearn untuk membuat kumpulan data palsu dengan 1000 baris, empat variabel prediktor, dan variabel respons biner:

 #create fake dataset
X, y = datasets. make_classification (n_samples= 1000 ,
                                    n_features= 4 ,
                                    n_informative= 3 ,
                                    n_redundant= 1 ,
                                    random_state= 0 )

#split dataset into training and testing set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= .3 , random_state= 0 )

Langkah 3: Sesuaikan Beberapa Model dan Plot Kurva ROC

Selanjutnya, kita akan menyesuaikan model regresi logistik dan kemudian model yang ditingkatkan gradien ke data dan memplot kurva ROC untuk setiap model pada plot yang sama:

 #set up plotting area
plt. Figure (0). clf ()

#fit logistic regression model and plot ROC curve
model = LogisticRegression()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt. plot (fpr,tpr,label="Logistic Regression, AUC="+str(auc))

#fit gradient boosted model and plot ROC curve
model = GradientBoostingClassifier()
model. fit (X_train, y_train)
y_pred = model. predict_proba (X_test)[:, 1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred)
auc = round(metrics. roc_auc_score (y_test, y_pred), 4)
plt. plot (fpr,tpr,label="Gradient Boosting, AUC="+str(auc))

#add legend
plt. legend () 

plot beberapa kurva ROC dengan Python

Garis biru menunjukkan kurva ROC untuk model regresi logistik dan garis oranye menunjukkan kurva ROC untuk model peningkatan gradien.

Semakin dekat kurva ROC ke sudut kiri atas plot, semakin baik model tersebut mampu mengklasifikasikan data ke dalam kategori.

Untuk mengukurnya, kita dapat menghitung AUC – area di bawah kurva – yang menunjukkan seberapa banyak plot yang berada di bawah kurva.

Semakin dekat AUC ke 1, maka semakin baik model tersebut.

Dari bagan kami, kami dapat melihat metrik AUC berikut untuk setiap model:

  • AUC model regresi logistik: 0,7902
  • AUC model yang ditingkatkan gradien: 0,9712

Jelasnya, model dengan peningkatan gradien lebih berhasil dalam mengklasifikasikan data ke dalam kategori dibandingkan model regresi logistik.

Sumber daya tambahan

Tutorial berikut memberikan informasi tambahan tentang model klasifikasi dan kurva ROC:

Pengantar Regresi Logistik
Cara Menafsirkan Kurva ROC (dengan Contoh)
Apa yang dianggap sebagai skor AUC yang baik?

Tambahkan komentar

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