Cara menggambar kurva kop dengan python (langkah demi langkah)
Regresi logistik adalah metode statistik yang kami gunakan untuk menyesuaikan model regresi jika variabel responsnya biner. Untuk mengevaluasi seberapa cocok model regresi logistik dengan kumpulan data, kita dapat melihat dua metrik berikut:
- Sensitivitas: probabilitas model memprediksi hasil positif untuk suatu observasi padahal hasilnya benar-benar positif. Ini juga disebut “tingkat positif sebenarnya”.
- Kekhususan: probabilitas model memprediksi hasil negatif untuk suatu observasi padahal hasilnya sebenarnya negatif. Ini juga disebut “tingkat negatif sebenarnya”.
Salah satu cara untuk memvisualisasikan kedua pengukuran ini adalah dengan membuat kurva ROC , yang merupakan singkatan dari kurva “karakteristik pengoperasian penerima”. Ini adalah grafik yang menampilkan sensitivitas dan spesifisitas model regresi logistik.
Contoh langkah demi langkah berikut menunjukkan cara membuat dan menafsirkan kurva ROC dengan Python.
Langkah 1: Impor paket yang diperlukan
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 import metrics import matplotlib. pyplot as plt
Langkah 2: Sesuaikan model regresi logistik
Selanjutnya, kita akan mengimpor kumpulan data dan menyesuaikan model regresi logistik ke dalamnya:
#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)
#define the predictor variables and the response variable
X = data[[' student ',' balance ',' income ']]
y = data[' default ']
#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
log_regression = LogisticRegression()
#fit the model using the training data
log_regression. fit (X_train,y_train)
Langkah 3: Gambarkan kurva ROC
Selanjutnya, kita akan menghitung tingkat positif sebenarnya dan tingkat positif palsu dan membuat kurva ROC menggunakan paket visualisasi data Matplotlib:
#define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)
#create ROC curve
plt. plot (fpr,tpr)
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. show ()
Semakin dekat kurva ke sudut kiri atas plot, semakin baik model tersebut mampu mengklasifikasikan data ke dalam kategori.
Seperti yang dapat kita lihat dari grafik di atas, model regresi logistik ini kurang berfungsi dalam mengurutkan 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. Model dengan AUC sama dengan 0,5 tidak lebih baik dari model yang melakukan klasifikasi acak.
Langkah 4: Hitung AUC
Kita dapat menggunakan kode berikut untuk menghitung AUC model dan menampilkannya di sudut kanan bawah plot ROC:
#define metrics
y_pred_proba = log_regression. predict_proba (X_test)[::,1]
fpr, tpr, _ = metrics. roc_curve (y_test, y_pred_proba)
auc = metrics. roc_auc_score (y_test, y_pred_proba)
#create ROC curve
plt. plot (fpr,tpr,label=" AUC= "+str(auc))
plt. ylabel (' True Positive Rate ')
plt. xlabel (' False Positive Rate ')
plt. legend (loc=4)
plt. show ()
AUC model regresi logistik ini ternyata 0,5602 . Karena angka ini mendekati 0,5, hal ini menegaskan bahwa model tersebut tidak berfungsi dengan baik dalam mengklasifikasikan data.