news 2026/10/22 2:27:43

《机器学习基础:线性回归与逻辑回归的原理及Sklearn实现对比》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《机器学习基础:线性回归与逻辑回归的原理及Sklearn实现对比》

正文:

前言
线性模型是机器学习算法体系中的基石。在近期的课程学习中,我系统接触了线性回归(Linear Regression)与逻辑回归(Logistic Regression)。尽管两者的名称中均包含“回归”,但它们在实际应用中所解决的任务类型截然不同。本篇博客旨在梳理这两种算法的核心概念、数学原理、适用场景及基于sklearn的实现逻辑,并对二者进行系统的对比分析,作为阶段性的学习总结。

一、 线性回归 (Linear Regression)

  1. 概念与原理
    线性回归是一种监督学习算法,旨在建立一个或多个自变量(特征)与因变量(连续目标值)之间的线性映射关系。其目标是寻找一条最优的直线(或在多维空间中的超平面),使得预测值与真实值之间的误差最小化。

从数学角度而言,其假设函数为:
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn=θTxh_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2 + ... + \theta_nx_n = \theta^T xhθ​(x)=θ0​+θ1​x1​+θ2​x2​+...+θn​xn​=θTx

为了评估模型拟合的优劣,我们通常采用均方误差(MSE)作为损失函数:
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} (h_\theta(x^{(i)}) - y^{(i)})^2J(θ)=2m1​∑i=1m​(hθ​(x(i))−y(i))2

在参数优化方面,可以采用最小二乘法直接求得解析解,或者在特征维度较高时采用梯度下降法进行迭代求解。

  1. 适用范围

· 目标变量为连续型数值的场景,如预测房价、气温变化、销售额等。
· 特征与目标之间存在较强的线性相关性,或可通过特征工程转化为线性关系。
· 注意事项:该算法对异常值十分敏感,在建模前需进行严格的数据清洗。

  1. 实现逻辑

  2. 数据准备与划分(训练集与测试集)。

  3. 定义线性假设模型。

  4. 确定损失函数(MSE)。

  5. 通过梯度下降或正规方程求解权重参数 \theta。

  6. 利用求得的参数对测试集进行预测,并采用 R^2、RMSE 等指标进行评估。

  7. sklearn实现的关键代码及理解

fromsklearn.linear_modelimportLinearRegressionfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportmean_squared_error,r2_score# 1. 数据准备与划分 (X为特征矩阵,y为连续目标变量)X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)# 2. 模型实例化 (fit_intercept默认为True,即计算截距)lr=LinearRegression()# 3. 模型训练lr.fit(X_train,y_train)# 4. 预测y_pred=lr.predict(X_test)# 5. 评估模型性能print("均方误差 (MSE):",mean_squared_error(y_test,y_pred))print("R2得分:",r2_score(y_test,y_pred))# 理解:lr.coef_ 存储特征权重,lr.intercept_ 存储截距

个人理解:在sklearn中,coef_ 反映了特征对预测结果的影响程度,正负号代表影响的方向。如果数据特征量纲差异较大,虽然线性回归本身对特征缩放不敏感,但为了结果的可解释性,通常建议进行标准化处理。

二、 逻辑回归 (Logistic Regression)

  1. 概念与原理
    需要明确的是,虽然名为“逻辑回归”,但它本质上是一种分类算法,主要用于解决二分类问题(也可扩展至多分类)。它通过引入Sigmoid函数,将线性回归的实数输出映射至 (0, 1) 区间,从而赋予其概率意义。

其假设函数为:
hθ(x)=g(θTx)=11+e−θTxh_\theta(x) = g(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}}hθ​(x)=g(θTx)=1+e−θTx1​
其中 g(z) 即为Sigmoid函数。输出值代表样本属于正类(1)的概率。

由于输出是概率,若继续使用MSE会导致损失函数非凸,易陷入局部最优。因此,逻辑回归采用对数损失函数(Log Loss / 交叉熵损失):
J(θ)=−1m∑i=1m[y(i)log⁡(hθ(x(i)))+(1−y(i))log⁡(1−hθ(x(i)))]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)}))]J(θ)=−m1​∑i=1m​[y(i)log(hθ​(x(i)))+(1−y(i))log(1−hθ​(x(i)))]
通常采用极大似然估计结合梯度下降法进行参数优化。

  1. 适用范围

· 目标变量为离散类别的场景,如垃圾邮件判定、用户流失预测、疾病阳性诊断等。
· 需要输出分类置信度(概率值)的场景。
· 要求特征空间近似线性可分。

  1. 实现逻辑

  2. 数据准备与预处理(逻辑回归对特征缩放非常敏感,必须进行标准化)。

  3. 初始化权重参数。

  4. 计算线性组合 z,代入Sigmoid函数得到预测概率。

  5. 计算交叉熵损失。

  6. 利用梯度下降更新权重。

  7. 设定分类阈值(默认为0.5),大于阈值判为正类,反之判为负类。

  8. sklearn实现的关键代码及理解

fromsklearn.linear_modelimportLogisticRegressionfromsklearn.preprocessingimportStandardScalerfromsklearn.metricsimportaccuracy_score,classification_report# 1. 特征标准化 (关键步骤:提升梯度下降收敛速度)scaler=StandardScaler()X_train_scaled=scaler.fit_transform(X_train)X_test_scaled=scaler.transform(X_test)# 2. 模型实例化# penalty: 正则化方式,C: 正则化强度的倒数,solver: 优化算法,max_iter: 最大迭代次数clf=LogisticRegression(penalty='l2',C=1.0,solver='lbfgs',max_iter=1000)# 3. 模型训练clf.fit(X_train_scaled,y_train)# 4. 预测 (两种输出形式)y_pred=clf.predict(X_test_scaled)# 输出离散类别 (0或1)y_prob=clf.predict_proba(X_test_scaled)[:,1]# 输出属于类别1的概率# 5. 评估print("准确率:",accuracy_score(y_test,y_pred))print(classification_report(y_test,y_pred))

个人理解:在实际编码中,若未进行标准化,模型很容易报出“未收敛”的警告。C 值的大小决定了正则化力度,C 越小,正则化越强,模型越不容易过拟合,但可能欠拟合。predict_proba 在风控等需要评估风险的业务中比单纯的 predict 更具应用价值。

三、 线性回归与逻辑回归的对比分析

经过理论学习和代码实践,我发现二者既有深厚的渊源,又在任务目标上存在显著差异。

  1. 联系 (Connections)

· 广义线性模型 (GLM):两者均属于广义线性模型。线性回归假设目标变量服从正态分布,而逻辑回归假设服从伯努利分布。
· 底层结构:逻辑回归可视为线性回归的扩展。两者均先对特征进行线性组合(z =θTx\theta^T xθTx),区别在于逻辑回归在此之后引入了Sigmoid非线性映射。
· 优化方法:两者均可使用梯度下降法进行参数迭代更新。
· 数据敏感性:两者对多重共线性均较为敏感,通常需要结合正则化(L1/L2)来提升模型泛化能力。

  1. 区别 (Differences)
对比维度线性回归 (Linear Regression)逻辑回归 (Logistic Regression)
任务类型回归问题 (Regression)分类问题 (Classification)
目标变量连续型数值 (Continuous)离散型类别 (Discrete/Categorical)
假设函数线性方程:(hθ(x)=θTxh_\theta(x) = \theta^T xhθ​(x)=θTx)复合函数:(hθ(x)=11+e−θTxh_\theta(x) = \frac{1}{1 + e^{-\theta^T x}}hθ​(x)=1+e−θTx1​)
输出范围((-\infty, +\infty)) 实数集((0, 1)) 概率值
损失函数均方误差 (MSE)对数损失 (Log Loss / 交叉熵)
评估指标MSE, RMSE, MAE, (R^2)准确率, 精确率, 召回率, F1值, ROC-AUC
异常值影响极其敏感,异常点会极大改变拟合直线相对稳健,Sigmoid函数能压缩极值的影响

总结

线性回归侧重于预测“多少”(如房价估值),逻辑回归侧重于判断“是不是”(如是否为垃圾邮件)。深入理解两者的数学本质与适用边界,是掌握机器学习分类与回归思想的重要基础。在后续的学习中,还需进一步探索正则化对两者的影响以及在多分类问题中的扩展应用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 2:27:13

垃圾数据集 建立python深度学习yolo实时垃圾分类系统

使用深度学习目标检测算法YOLOv5进行物体检测 通过训练自己的垃圾数据集 建立实时垃圾分类系统 文章目录使用深度学习目标检测算法YOLOv5进行物体检测 通过训练自己的垃圾数据集 建立实时垃圾分类系统1. 数据准备标注工具2. 模型训练安装YOLOv5准备配置文件 来训练训练模型3. U…

作者头像 李华
网站建设 2026/10/22 2:26:00

ORB-SLAM3 void Tracking::UpdateLocalPoints()

该函数是 TrackLocalMap() 中 UpdateLocalMap() 的第二步:在 UpdateLocalKeyFrames() 选出局部关键帧集合之后,收集这些关键帧观测到的地图点,构成局部地图点集合,供后续 SearchLocalPoints() 投影搜索和位姿优化使用。 但实际实现中需要: 跳过空指针; 跳过坏点; 去重…

作者头像 李华
网站建设 2026/10/22 2:25:57

【RAG开发】LangChain调用嵌入模型

Embedding Models(文本嵌入模型) Embedding Models嵌入模型的特点:将字符串作为输入,返回一个浮点数的列表(向量) 在NLP中,Embedding的作用就是将数据进行文本向量化。模型使用总结 目前所掌握的…

作者头像 李华
网站建设 2026/10/22 2:25:30

R 数据重塑:从长表到宽表的高效实践

1. 引言在数据分析工作中,数据重塑(Data Reshaping)是最常见也最基础的操作之一。无论是从数据库导出的原始记录,还是从 Excel 手工整理的数据,往往都需要经过长表(Long Format)与宽表&#xff…

作者头像 李华
网站建设 2026/10/22 2:25:23

MLK-FMC_VID005_MIPI(DSI改CSI)修改方案

一、修改概述本方案用于将 FMC 子卡原 DSI 输出接口改造为 MIPICSI 接收接口。通过调整 MIPI 差分信号匹配电阻,同时修改 AFH03 底板跳线电阻,完成信号网络切换,实现完整 CSI 相机通路。 变更分为三部分:FMC 子卡J2 CSI 接口电阻配…

作者头像 李华
网站建设 2026/10/22 2:24:31

FDE:月薪5万起步的前线部署工程师,你值得收藏这份深度解析!

本文深入探讨了FDE(前线部署工程师)这一新兴高薪岗位。文章介绍了不同行业FDE的具体工作内容,分析了FDE岗位因客户行业、公司定位及项目阶段不同而呈现出的多样性。同时,文章强调了FDE的高薪源于其复合型能力,包括技术…

作者头像 李华