Cara melakukan regresi logistik dengan python (langkah demi langkah)


Regresi logistik adalah metode yang dapat kita gunakan untuk menyesuaikan model regresi ketika variabel responnya adalah biner.

Regresi logistik menggunakan metode yang disebut estimasi kemungkinan maksimum untuk mencari persamaan dalam bentuk berikut:

log[p(X) / ( 1 -p(X))] = β 0 + β 1 X 1 + β 2 X 2 + … + β p

Emas:

  • X j : variabel prediktif ke -j
  • β j : estimasi koefisien variabel prediktif ke- j

Rumus di sisi kanan persamaan memprediksi log odds bahwa variabel respons bernilai 1.

Jadi, ketika kita menyesuaikan model regresi logistik, kita dapat menggunakan persamaan berikut untuk menghitung probabilitas bahwa observasi tertentu bernilai 1:

p(X) = e β 0 + β 1 X 1 + β 2 X 2 + + β p

Kami kemudian menggunakan ambang probabilitas tertentu untuk mengklasifikasikan observasi sebagai 1 atau 0.

Misalnya, kita dapat mengatakan bahwa observasi dengan probabilitas lebih besar atau sama dengan 0,5 akan diklasifikasikan sebagai “1” dan semua observasi lainnya akan diklasifikasikan sebagai “0”.

Tutorial ini memberikan contoh langkah demi langkah tentang cara melakukan regresi logistik di R.

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: Muat data

Untuk contoh ini, kita akan menggunakan dataset default dari buku Pengantar Pembelajaran Statistik . Kita dapat menggunakan kode berikut untuk memuat dan menampilkan ringkasan kumpulan data:

 #import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)

#view first six rows of dataset
data[0:6]

        default student balance income
0 0 0 729.526495 44361.625074
1 0 1 817.180407 12106.134700
2 0 0 1073.549164 31767.138947
3 0 0 529.250605 35704.493935
4 0 0 785.655883 38463.495879
5 0 1 919.588530 7491.558572  

#find total observations in dataset
len( data.index )

10000

Kumpulan data ini berisi informasi berikut tentang 10.000 individu:

  • default: menunjukkan apakah seseorang mengalami default atau tidak.
  • pelajar: menunjukkan apakah seseorang adalah pelajar atau bukan.
  • saldo: Saldo rata-rata yang dibawa oleh seorang individu.
  • pendapatan: Pendapatan individu.

Kami akan menggunakan status pelajar, saldo bank, dan pendapatan untuk membangun model regresi logistik yang memprediksi kemungkinan seseorang mengalami gagal bayar.

Langkah 3: Buat sampel pelatihan dan pengujian

Selanjutnya, kita akan membagi kumpulan data menjadi kumpulan pelatihan untuk melatih model dan kumpulan pengujian untuk menguji model.

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

Langkah 4: Sesuaikan model regresi logistik

Selanjutnya, kita akan menggunakan fungsi LogisticRegression() untuk menyesuaikan model regresi logistik dengan kumpulan data:

 #instantiate the model
log_regression = LogisticRegression()

#fit the model using the training data
log_regression. fit (X_train,y_train)

#use model to make predictions on test data
y_pred = log_regression. predict (X_test)

Langkah 5: Diagnostik Model

Setelah kami memasang model regresi, kami kemudian dapat menganalisis performa model kami pada kumpulan data pengujian.

Pertama, kita akan membuat matriks konfusi untuk model tersebut:

 cnf_matrix = metrics. confusion_matrix (y_test, y_pred)
cnf_matrix

array([[2886, 1],
       [113,0]])

Dari matriks konfusi kita dapat melihat bahwa:

  • #Prediksi positif yang benar: 2886
  • #Prediksi negatif yang benar: 0
  • #Prediksi positif palsu: 113
  • #Prediksi negatif palsu: 1

Kita juga bisa mendapatkan model akurasi, yang memberi tahu kita persentase prediksi koreksi yang dibuat oleh model tersebut:

 print(" Accuracy: ", metrics.accuracy_score (y_test, y_pred))l

Accuracy: 0.962

Hal ini menunjukkan bahwa model tersebut membuat prediksi yang benar mengenai apakah seseorang akan gagal bayar sebanyak 96,2% atau tidak.

Terakhir, kita dapat memplot kurva Karakteristik Operasi Penerima (ROC) yang menampilkan persentase positif sebenarnya yang diprediksi oleh model ketika ambang batas probabilitas prediksi diturunkan dari 1 menjadi 0.

Semakin tinggi AUC (area di bawah kurva), semakin akurat model kami dalam memprediksi hasil:

 #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. legend (loc=4)
plt. show ()

Kurva ROC dengan Python

Kode Python lengkap yang digunakan dalam tutorial ini dapat ditemukan di sini .

Tambahkan komentar

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