Python 邏輯斯蒂(Logistic Regression)是機(jī)器學(xué)習(xí)中的一種分類算法,它可以將樣本數(shù)據(jù)根據(jù)其特征值進(jìn)行二分類,將其分為兩個(gè)類別之一。邏輯斯蒂模型的本質(zhì)是一個(gè)數(shù)學(xué)模型,由于其模型形式與線性回歸模型相似,因此被稱為“廣義線性模型”。
import numpy as np import matplotlib.pyplot as plt # 生成樣本數(shù)據(jù) np.random.seed(0) X = np.random.randn(100, 2) y = np.logical_xor(X[:, 0] >0, X[:, 1] >0) # 繪制散點(diǎn)圖 plt.scatter(X[:, 0], X[:, 1], c=y, s=40, cmap=plt.cm.Spectral) # 定義邏輯斯蒂函數(shù) def sigmoid(x): return 1 / (1 + np.exp(-x)) # 計(jì)算損失函數(shù) def compute_loss(theta, X, y): z = X.dot(theta) h = sigmoid(z) loss = (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean() return loss # 執(zhí)行梯度下降 def gradient_descent(X, y, alpha=0.1, iterations=1000): # 初始化參數(shù) m, n = X.shape theta = np.zeros(n) # 執(zhí)行梯度下降 for iter in range(iterations): z = X.dot(theta) h = sigmoid(z) gradient = X.T.dot(h - y) / m theta -= alpha * gradient return theta # 計(jì)算參數(shù) theta = gradient_descent(X, y) # 繪制決策邊界 x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 xx, yy = np.meshgrid(np.linspace(x_min, x_max, 100), np.linspace(y_min, y_max, 100)) Z = sigmoid(np.c_[xx.ravel(), yy.ravel()].dot(theta)) Z = Z.reshape(xx.shape) plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral, alpha=0.8) plt.show()
上述代碼演示了如何使用邏輯斯蒂算法進(jìn)行二分類。首先,生成100個(gè)隨機(jī)的二維樣本點(diǎn),然后使用邏輯斯蒂函數(shù)計(jì)算損失函數(shù),并使用梯度下降算法來更新模型參數(shù)。最后,根據(jù)模型的參數(shù)計(jì)算出決策邊界并將其畫出來。