Python 邏輯斯蒂(Logistic Regression)是機器學習中的一種分類算法,它可以將樣本數(shù)據(jù)根據(jù)其特征值進行二分類,將其分為兩個類別之一。邏輯斯蒂模型的本質是一個數(shù)學模型,由于其模型形式與線性回歸模型相似,因此被稱為“廣義線性模型”。
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) # 繪制散點圖 plt.scatter(X[:, 0], X[:, 1], c=y, s=40, cmap=plt.cm.Spectral) # 定義邏輯斯蒂函數(shù) def sigmoid(x): return 1 / (1 + np.exp(-x)) # 計算損失函數(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 # 計算參數(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()
上述代碼演示了如何使用邏輯斯蒂算法進行二分類。首先,生成100個隨機的二維樣本點,然后使用邏輯斯蒂函數(shù)計算損失函數(shù),并使用梯度下降算法來更新模型參數(shù)。最后,根據(jù)模型的參數(shù)計算出決策邊界并將其畫出來。