Dalam statistik, model logistik (atau model logit) adalah model statistik yang memodelkan log-odds suatu peristiwa sebagai kombinasi linier dari satu atau lebih variabel bebas. Dalam analisis regresi, regresi logistik/logistic regression (atau regresi logit) adalah memperkirakan parameter model logistik (koefisien dalam kombinasi linier).
Daftar Isi
Penerapan Logistic Regression
Regresi logistik adalah algoritma pembelajaran mesin terawasi yang banyak digunakan untuk tugas klasifikasi biner, seperti mengidentifikasi apakah email merupakan spam atau bukan dan mendiagnosis penyakit dengan menilai ada tidaknya kondisi tertentu berdasarkan hasil tes pasien. Pendekatan ini menggunakan fungsi logistik (atau sigmoid) untuk mengubah kombinasi linier fitur masukan menjadi nilai probabilitas yang berkisar antara 0 dan 1.
— Logistic Regression
Logistic Regression Pada Data Numerik
Data
Var 1 | Var 2 | Klasifikasi | |
x1 | 0.1 | 0.2 | kelasA |
x2 | 0.5 | 0.9 | kelasB |
x3 | 0.4 | 0.3 | kelasA |
x4 | 0.6 | 0.8 | kelasB |
Var 1 | Var 2 | Klasifikasi | |
x5 | 0.3 | 0.2 | kelasA |
x6 | 0.6 | 0.9 | kelasB |
x7 | 0.5 | 0.4 | kelasA |
Penyelesaian Dengan Program
import numpy as np
# data latih
v01X_train = np.array([
[0.1, 0.2, 1], # kelasA
[0.5, 0.9, 0], # kelasB
[0.3, 0.3, 1], # kelasA
[0.7, 0.75, 0] # kelasB
])
# data uji
v02X_test = np.array([
[0.3, 0.2, 1], # kelasA
[0.6, 0.9, 0], # kelasB
[0.5, 0.4, 1] # kelasA
])
# Fungsi sigmoid
def sigmoid(lo):
return 1 / (1 + np.exp(-lo))
# Inisialisasi v03b da_n v04a
np.random.seed(0)
v03b = np.random.rand(2)
v04a = np.random.rand()
# Learning rate
lr = 0.1
# Training
for epoch in range(10):
for x in v01X_train:
logodds = np.dot(v03b, x[:2]) + v04a
p = sigmoid(logodds)
da_ = p - x[2]
db_ = np.dot(x[:2], da_)
v03b -= lr * db_
v04a -= lr * da_
# Testing
kelas_prediksi = []
for x in v02X_test:
logodds = np.dot(v03b, x[:2]) + v04a
p = sigmoid(logodds)
kelas_prediksi.append(1 if p >= 0.5 else 0)
# Hasil
print(f"Kelas prediksi untuk data uji {v02X_test[:,:2]}: {kelas_prediksi}")
from sklearn.linear_model import LogisticRegression
model_ = LogisticRegression(solver='lbfgs', max_iter=10)
model_.fit(v01X_train[:,:2], v01X_train[:,2])
# predict output
v05y_test = model_.predict(v02X_test[:,:2])
print(f"Kelas prediksi untuk data uji {v02X_test[:,:2]}: {v05y_test}")
#hasil run
Kelas prediksi untuk data uji [[0.3 0.2]
[0.6 0.9]
[0.5 0.4]]: [1, 0, 1]
Kelas prediksi untuk data uji [[0.3 0.2]
[0.6 0.9]
[0.5 0.4]]: [1. 0. 1.]
Variabel Terakhir
Hasil
Klasifikasi | |
x5 | kelasA |
x6 | kelasB |
x7 | kelasA |
Penyelesaian Spreadsheet
Demikian, semoga bermanfaat. [bst]