Ma'lumotlar to'plash: Ma'lumotlar to'plangan ma'lumotlar to'plamini (X) va ularga mos keladigan sinflarni (y) olish.
Ma'lumotlarni tayyorlash: Ma'lumotlar to'plamini ixtiyoriy tartibda bölüp, bir qismi o'qitish uchun, ikkinchisi validatsiya uchun qo'llaniladi.
Modelni yaratish: Logistik regressiya modelini yaratamiz. Uning formulasi sigmoid funksiyasi y(x) = 1 / (1 + exp(-z)), z = wx + b, yuqorida w - og'irliklar, b - bias deb ifodalangan.
Loss funksiyasini tanlash: Loss funksiyasini (o'zgaruvchaning o'zgarishiga qarab qanday o'zgarishi bilan o'qitish qobiliyatini baholaydigan funksiya) tanlash. Logistik regressiyada qo'llaniladigan log loss funksiyasi L = - (1/m) * Σ(y * log(y_pred) + (1 - y) * log(1 - y_pred)), m - ma'lumotlar soni, y_pred - model tomonidan baho berilgan sinfning bashorati, y - faktik sinf.
Gradient pastlash va og'irliklarni yangilash: Gradient pastlash orqali og'irliklarni va biasni yangilash. Gradientni hisoblash uchun esa yuqoridagi log loss funksiyasining w va b bo'yicha qismi gradientini hisoblash kerak.
Modelni o'qitish: O'zgaruvchanlarni yangilash orqali modelni o'qitish.
Natijalarni baholash: Validatsiya to'plamiga modelni test qilish va natijalarni baholash.
Natijalarni tahlil qilish: Modelning natijalarini tahlil qilish va qanday yaxshi yoki yomon ishlashini aniqlash.
Dastur kodi
# Kerakli kutubxonalar import qilinadi
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
# Ma'lumotlarni generatsiya qilamiz
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, random_state=42)
# Ma'lumotlarni taqsimlash
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Logistik regressiya modelini yaratish va o'qitish
model = LogisticRegression()
model.fit(X_train, y_train)
# Uyg'unlikni baholash
accuracy = model.score(X_test, y_test)
print(f"Uyg'unlik: {accuracy}")
# Natijalarni vizualizatsiya qilish
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='winter')
plt.xlabel('X1')
plt.ylabel('X2')
# Qarshilik funksiyasini o'rganish
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
# Qarshilik funksiyasini vaqli bo'lgan sirtlarini chizish
plt.contourf(xx, yy, Z, alpha=0.3, cmap='winter')
plt.show()
Natijamiz:
|