本文將通過Python邏輯回歸梯度下降法,對於邏輯回歸的原理、實現方法和應用進行詳細闡述。
一、邏輯回歸原理
邏輯回歸是一種常用的分類算法,其原理可以用線性回歸模型來描述,將線性回歸的預測結果通過一個sigmoid函數映射到[0,1]之間,從而得到預測概率值,最終將概率值大於等於0.5的歸為一類,小於0.5的歸為另一類。
在邏輯回歸中,用到的損失函數是對數損失函數,其形式如下:
def loss_function(theta,X,y): h_theta = sigmoid(np.dot(X,theta)) return np.mean(-(y*np.log(h_theta) + (1-y)*np.log(1-h_theta)))
其中,theta為模型的參數,X為特徵矩陣,y為標籤,sigmoid函數如下:
def sigmoid(x): return 1 / (1 + np.exp(-x))
二、梯度下降法
邏輯回歸模型的訓練需要優化模型的參數,常用的方法是梯度下降法。梯度下降法是一種常用的優化算法,其思想是在參數空間中找到一個使得損失函數最小的方向,沿着這個方向進行參數更新。
對於邏輯回歸中的對數損失函數,其梯度可以表示為:
def gradient(theta,X,y): h_theta = sigmoid(np.dot(X,theta)) return np.dot(X.T,(h_theta-y))/y.size
其中,X為特徵矩陣,y為標籤,theta為模型參數。
下面是梯度下降法的實現:
def gradient_descent(theta,X,y,alpha,num_iters): for i in range(num_iters): theta -= alpha*gradient(theta,X,y) return theta
其中,alpha是學習率,num_iters是迭代次數。
三、應用實例
邏輯回歸可以應用於二分類問題,下面以一個二分類問題為例,來演示應用邏輯回歸的過程。數據來源於Kaggle上的一個肝癌患者預測數據集。
首先,導入數據集,進行數據探索和清理。
import pandas as pd import numpy as np data = pd.read_csv('liver.csv') data.head() data.dropna(inplace=True) data.describe()
接下來,將數據集分割為訓練集和測試集,將標籤y與特徵X分離。
from sklearn.model_selection import train_test_split X = data.drop(['Liver_disease'],axis=1) y = data['Liver_disease'] X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=42)
然後,對於訓練集進行特徵標準化。
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test)
接着,使用梯度下降法進行模型訓練,並計算在測試集上的準確率。
theta = np.zeros(X_train_scaled.shape[1]) alpha = 0.01 num_iters = 1000 theta = gradient_descent(theta,X_train_scaled,y_train,alpha,num_iters) def predict(theta,X): return np.round(sigmoid(np.dot(X,theta))) predictions = predict(theta,X_test_scaled) accuracy = np.mean(predictions==y_test)*100 print("準確率:",accuracy)
最終的準確率為70.5%。
四、總結
本文介紹了Python邏輯回歸梯度下降法的原理、實現方法和應用實例,邏輯回歸是一種常用的分類算法,在許多領域中都有廣泛的應用。
原創文章,作者:EIPJB,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/373444.html