首页
/ 100-Days-Of-ML-Code项目解析:逻辑回归算法实战指南

100-Days-Of-ML-Code项目解析:逻辑回归算法实战指南

2025-07-05 01:47:44作者:沈韬淼Beryl

逻辑回归算法概述

逻辑回归(Logistic Regression)是机器学习中最基础且重要的分类算法之一,尽管名称中包含"回归"二字,但它实际上是一种用于解决二分类问题的监督学习算法。逻辑回归通过Sigmoid函数将线性回归的输出映射到(0,1)区间,表示样本属于某一类的概率。

项目数据集介绍

本项目使用了一个社交网络用户数据集,包含以下关键特征:

  • 用户ID:唯一标识符
  • 性别:用户性别信息
  • 年龄:用户年龄
  • 估计薪资:用户的收入水平
  • 购买SUV与否:目标变量(0表示未购买,1表示购买)

我们的目标是建立一个预测模型,根据用户的年龄和估计薪资来预测其是否会购买某汽车公司新推出的豪华SUV。

完整实现步骤详解

第一步:数据预处理

数据预处理是机器学习项目中最关键的环节之一,良好的数据预处理能显著提升模型性能。

# 导入必要的库
import numpy as np  # 数值计算
import matplotlib.pyplot as plt  # 数据可视化
import pandas as pd  # 数据处理

# 导入数据集
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values  # 取年龄和薪资作为特征
y = dataset.iloc[:, 4].values  # 取购买结果作为目标变量

# 拆分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, random_state=0)

# 特征缩放
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)  # 训练集拟合并转换
X_test = sc.transform(X_test)  # 测试集仅转换

关键点说明

  1. 特征缩放:逻辑回归算法基于梯度下降优化,特征缩放可以加速收敛过程
  2. 训练测试集划分:25%的数据作为测试集,确保模型评估的客观性
  3. 随机种子设置:保证每次运行结果一致,便于调试

第二步:构建逻辑回归模型

逻辑回归模型的核心是找到最佳决策边界,将两类样本分开。

from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression(random_state=0)
classifier.fit(X_train, y_train)

模型参数解析

  • random_state:确保结果可复现
  • 默认使用L2正则化防止过拟合
  • 使用对数损失函数作为优化目标

第三步:模型预测

训练完成后,我们可以用模型对新数据进行预测。

y_pred = classifier.predict(X_test)  # 预测测试集结果

第四步:模型评估

评估分类模型性能有多种指标,本项目使用混淆矩阵。

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)

混淆矩阵解读

  • 真正例(TP):实际为正,预测为正
  • 假正例(FP):实际为负,预测为正
  • 真负例(TN):实际为负,预测为负
  • 假负例(FN):实际为正,预测为负

结果可视化

通过可视化可以直观理解模型的决策边界和分类效果。

训练集结果可视化

  • 红色区域:预测会购买
  • 绿色区域:预测不会购买
  • 红点:实际购买用户
  • 绿点:实际未购买用户

测试集结果可视化

  • 展示模型在未见过的数据上的表现
  • 可以直观看出哪些样本被正确分类,哪些被误分类

逻辑回归的优缺点分析

优点

  1. 实现简单,计算效率高
  2. 输出具有概率意义,可解释性强
  3. 对线性可分问题表现良好
  4. 不容易过拟合,尤其在使用正则化时

缺点

  1. 只能处理线性决策边界
  2. 对异常值敏感
  3. 当特征空间很大时性能下降
  4. 需要特征间相互独立的基本假设

实际应用建议

  1. 特征工程:尝试添加多项式特征或交互项,可能提升非线性问题的表现
  2. 正则化调整:通过调整正则化强度C值来平衡偏差和方差
  3. 多分类问题:逻辑回归天然支持二分类,但可通过"一对多"策略扩展到多分类
  4. 概率阈值调整:默认阈值为0.5,可根据业务需求调整以获得更优结果

通过本项目的实践,读者可以掌握逻辑回归算法的完整实现流程,理解其核心原理,并能够将其应用到实际的二分类问题中。