Python逻辑回归数学原理及代码示例

引言

逻辑回归是机器学习和数据分析中常用的二分类算法,它以线性回归为基础,使用sigmoid函数将线性回归的输出映射到0到1的概率范围内。本文将介绍逻辑回归的数学原理及其在Python中的实现,以帮助读者更好地理解和应用这一算法。

逻辑回归的数学原理

线性回归回顾

在介绍逻辑回归之前,我们先回顾一下线性回归的数学原理。线性回归通过找到一条最佳拟合直线来建立自变量和因变量之间的关系。假设有n个特征变量x1, x2, ..., xn,线性回归模型可以表示为:

$$y = \beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n$$

其中,y是因变量,x1, x2, ..., xn是自变量,$\beta_0, \beta_1, ..., \beta_n$是回归系数。

sigmoid函数

逻辑回归通过sigmoid函数将线性回归的输出映射到0到1的概率范围内,这使得逻辑回归可以用于处理二分类问题。sigmoid函数的数学表达式为:

$$\sigma(x) = \frac{1}{1 + e^{-x}}$$

sigmoid函数的图像为S形曲线,当x趋于无穷大时,$\sigma(x)$趋于1;当x趋于负无穷大时,$\sigma(x)$趋于0。

逻辑回归模型

逻辑回归模型可以表示为:

$$P(y=1|x) = \sigma(\beta_0 + \beta_1x_1 + \beta_2x_2 + ... + \beta_nx_n)$$

其中,P(y=1|x)表示在给定输入变量x的条件下,因变量y=1的概率。

损失函数与最优化

逻辑回归使用最大似然估计来确定回归系数,即通过最大化模型对训练数据的似然函数来寻找最优参数。似然函数表示给定参数下观察到训练数据的概率。逻辑回归中使用的损失函数是对数似然损失函数,可以表示为:

$$L(\beta) = \sum_{i=1}^{m} [y_i \log(\sigma(\beta \cdot x_i)) + (1-y_i) \log(1 - \sigma(\beta \cdot x_i))]$$

其中,m是训练样本的数量,$y_i$是样本i的真实标签,$\sigma(\beta \cdot x_i)$是通过逻辑回归模型计算得到的概率。

为了找到最优参数$\beta$,可以使用梯度下降法或其他优化算法来最小化损失函数。

Python代码实现

下面以一个简单的数据集为例,演示逻辑回归在Python中的实现。

首先,导入所需库和数据集:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
data = pd.read_csv('data.csv')

接下来,对数据集进行预处理和特征选择,然后划分训练集和测试集:

# 预处理和特征选择
# ...

# 划分训练集和测试集
train_data = data[:80]
test_data = data[80:]

X_train = train_data[['x1', 'x2']].values
y_train = train_data['y'].values

X_test = test_data[['x1', 'x2']].values
y_test = test_data['y'].values

定义sigmoid函数和损失函数:

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

def loss_function(X, y, beta):
    m = len(y)
    y_pred = sigmoid(np.dot(X, beta))
    loss = -np.sum(y * np.log(y_pred) + (