溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現梯度下降求解邏輯回歸

發布時間:2023-05-12 16:18:29 來源:億速云 閱讀:159 作者:iii 欄目:編程語言

Python怎么實現梯度下降求解邏輯回歸

邏輯回歸(Logistic Regression)是一種廣泛應用于分類問題的機器學習算法。盡管名字中帶有“回歸”,但它實際上是一種分類算法,常用于二分類問題。邏輯回歸的核心思想是通過一個線性模型來預測樣本屬于某個類別的概率,然后通過一個閾值將概率轉換為類別標簽。

在本文中,我們將介紹如何使用Python實現梯度下降算法來求解邏輯回歸模型。

1. 邏輯回歸的基本原理

邏輯回歸模型的核心是sigmoid函數,它將線性模型的輸出映射到[0, 1]區間,表示樣本屬于正類的概率。sigmoid函數的定義如下:

\[ \sigma(z) = \frac{1}{1 + e^{-z}} \]

其中,\(z\) 是線性模型的輸出:

\[ z = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n \]

邏輯回歸的目標是通過優化損失函數來找到最佳的模型參數 \(\theta\)。常用的損失函數是交叉熵損失函數:

\[ J(\theta) = -\frac{1}{m} \sum_{i=1}^{m} [y^{(i)} \log(h_\theta(x^{(i)})) + (1 - y^{(i)}) \log(1 - h_\theta(x^{(i)}))] \]

其中,\(h_\theta(x)\) 是sigmoid函數,\(y^{(i)}\) 是樣本的真實標簽,\(m\) 是樣本數量。

2. 梯度下降算法

梯度下降是一種常用的優化算法,通過迭代更新模型參數來最小化損失函數。梯度下降的更新公式如下:

\[ \theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} \]

其中,\(\alpha\) 是學習率,控制參數更新的步長。

對于邏輯回歸,損失函數 \(J(\theta)\) 對參數 \(\theta_j\) 的偏導數為:

\[ \frac{\partial J(\theta)}{\partial \theta_j} = \frac{1}{m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} \]

3. Python實現

下面我們使用Python實現梯度下降算法來求解邏輯回歸模型。

3.1 導入必要的庫

import numpy as np
import matplotlib.pyplot as plt

3.2 定義sigmoid函數

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

3.3 定義損失函數

def compute_cost(X, y, theta):
    m = len(y)
    h = sigmoid(X @ theta)
    cost = (-1/m) * np.sum(y * np.log(h) + (1 - y) * np.log(1 - h))
    return cost

3.4 定義梯度下降函數

def gradient_descent(X, y, theta, alpha, num_iters):
    m = len(y)
    cost_history = []

    for i in range(num_iters):
        h = sigmoid(X @ theta)
        gradient = (1/m) * (X.T @ (h - y))
        theta = theta - alpha * gradient
        cost = compute_cost(X, y, theta)
        cost_history.append(cost)

    return theta, cost_history

3.5 數據準備

假設我們有一個簡單的二分類數據集:

X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([0, 0, 1, 1, 1])

# 添加偏置項
X = np.hstack((np.ones((X.shape[0], 1)), X))

# 初始化參數
theta = np.zeros(X.shape[1])

# 設置學習率和迭代次數
alpha = 0.01
num_iters = 1000

3.6 訓練模型

theta, cost_history = gradient_descent(X, y, theta, alpha, num_iters)

3.7 可視化損失函數

plt.plot(range(num_iters), cost_history)
plt.xlabel('Iterations')
plt.ylabel('Cost')
plt.title('Cost Function over Iterations')
plt.show()

3.8 預測

def predict(X, theta):
    return sigmoid(X @ theta) >= 0.5

predictions = predict(X, theta)
print("Predictions:", predictions)

4. 總結

本文介紹了如何使用Python實現梯度下降算法來求解邏輯回歸模型。我們首先介紹了邏輯回歸的基本原理和梯度下降算法,然后通過Python代碼實現了模型的訓練和預測。通過可視化損失函數的變化,我們可以觀察到模型在訓練過程中逐漸收斂。

邏輯回歸是一種簡單但非常有效的分類算法,廣泛應用于各種實際問題中。通過理解其基本原理并掌握實現方法,可以為后續學習更復雜的機器學習算法打下堅實的基礎。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女