首页/新闻资讯/正文详情

【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术

发布时间:2026/11/3 9:23:13 来源:云帆数科 栏目:资讯中心
【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术
文章目录一、核心概念数据分类的切分线二、工作原理从找分界线理解二、常见算法1、逻辑回归二分类2、线性判别分析LDA分类与降维3、两种算法对比分析三、实际应用用代码切分糖尿病数据四、应用场景线性分类的用武之地一、核心概念数据分类的切分线线性分类就像用一把刀切蛋糕。如果蛋糕只有两种口味比如巧克力味和草莓味你只需要一刀就能把它们完美地分开。这一刀就是我们机器学习中的“决策边界”。它是一条直线、一个平面或者在更高维度上的一个超平面用来区分不同的数据类别。核心定义线性分类算法通过学习数据特征找到一个最佳的超平面将不同类别的数据点分隔开。这个超平面就是模型的分界线它决定了新来的数据点属于哪个类别。二、工作原理从找分界线理解线性分类算法的工作流程可以简单概括为以下几步数据准备首先我们需要收集带有明确标签的数据。比如如果你想识别猫和狗就需要大量的猫图片标记为猫和狗图片标记为狗。特征提取计算机无法直接理解图片或文字所以我们需要将这些原始数据转换为算法能理解的数字特征。比如图片的颜色、纹理、形状等都可以转化为数字向量。模型学习算法会通过学习这些带有标签的特征自动找到一条最佳的切分线决策边界使得不同类别的数据点尽可能地被这条线分开。预测分类当有新的、未知的图片比如一张你不知道是猫还是狗的图片进来时算法会根据它落在切分线的哪一边来判断其类别。二、常见算法在众多线性分类算法中**逻辑回归Logistic Regression, LR和线性判别分析Linear Discriminant Analysis, LDA**是两种非常经典且常用的方法。1、逻辑回归二分类LR 不直接预测类别而是预测一个事件发生的概率。它通过一个特殊的S形函数Sigmoid函数将线性模型的输出值映射到0到1之间表示属于某个类别的概率。LR 假设数据服从伯努利分布即只有两种结果成功或失败并且特征与对数几率之间存在线性关系。当预测概率大于某个阈值通常是0.5时就归为一类否则归为另一类。这个阈值对应的就是它的决策边界。2、线性判别分析LDA分类与降维核心思想LDA是一个既做分类又做降维的算法。它的核心思想是找到一个最佳投影方向让不同类别的数据投影后分得最清楚同时让同一类别的数据投影后聚得最紧。想象你有一堆不同颜色的球散落在三维空间里LDA就是找到一个角度从这个角度看过去不同颜色的球能分得最清楚。LDA用公式类间距离 类内距离 \frac{\text{类间距离}}{\text{类内距离}}类内距离类间距离​来衡量投影效果。它要最大化这个比值让分子类间距离越大越好分母类内距离越小越好。通过求解这个优化问题LDA找到最优的投影方向。分类与降维LDA既可以做二分类也可以做多分类。在二分类中它找到一个投影方向将数据投影到一条直线上在多分类中它找到多个投影方向将数据投影到低维空间。 同时LDA还具有降维功能二分类从任意维度降到1维C分类从任意维度降到(C-1)维。假设与应用条件LDA假设数据像钟形曲线一样分布且不同类别的钟形形状相同。 如果这个假设成立LDA效果很好如果不成立效果就会变差。与逻辑回归相比LDA像是一个几何学家专注于找到最好的观察角度而逻辑回归像是一个概率学家专注于计算每个样本属于各类别的概率。3、两种算法对比分析特性逻辑回归 (LR)线性判别分析 (LDA)核心预测概率通过 Sigmoid 函数映射寻找最佳投影方向最大化类间散度最小化类内散度输出概率值 (0-1)判别函数值假设数据服从伯努利分布特征与对数几率线性相关数据服从高斯分布各类别协方差矩阵相同优点简单高效输出概率直观易于解释在类别区分度高时表现良好对多分类问题处理自然缺点对异常值敏感对数据分布有一定要求对数据分布高斯分布、同协方差有较强假设三、实际应用用代码切分糖尿病数据我们用 Python 的scikit-learn库在著名的 Pima Indians 糖尿病数据集上实际操作一下线性分类算法。这个数据集包含了印第安女性的健康数据目标是预测她们是否患有糖尿病。frompandasimportread_csvfromsklearn.model_selectionimportKFold,cross_val_scorefromsklearn.linear_modelimportLogisticRegressionfromsklearn.discriminant_analysisimportLinearDiscriminantAnalysisimportpandasaspd# 1. 导入数据filenamepima_data.csv# 假设文件在当前目录下names[preg,plas,pres,skin,test,mass,pedi,age,class]dataread_csv(filename,namesnames)# 2. 将数据分为输入特征 (X) 和输出结果 (Y)arraydata.values Xarray[:,0:8]# 前8列是特征Yarray[:,8]# 最后一列是目标变量 (是否患糖尿病)# 3. 设置交叉验证 (KFold)n_splits10# 分成10份seed7# 随机种子确保每次运行结果一致kfoldKFold(n_splitsn_splits,random_stateseed,shuffleTrue)# 4. 创建模型并评估models{LR:LogisticRegression(solverliblinear,max_iter200),# solverliblinear 适用于小数据集LDA:LinearDiscriminantAnalysis()}results{}forname,modelinmodels.items():# 使用交叉验证评估模型性能scorescross_val_score(model,X,Y,cvkfold,scoringaccuracy)results[name](scores.mean(),scores.std())# 5. 打印结果print(模型准确率 (平均值 ± 标准差):)forname,(mean,std)inresults.items():print(f{name}:{mean:.4f}(±{std:.4f}))# 示例输出模型准确率(平均值 ± 标准差):LR:0.7696(±0.0495)LDA:0.7670(±0.0480)这告诉我们LR 模型在预测糖尿病方面的平均准确率约为76.96%其性能在不同数据子集上的波动标准差约为4.95%。LDA 模型的平均准确率约为76.70%性能波动约为4.80%。从结果来看两种线性分类模型在 Pima Indians 糖尿病数据集上的表现非常接近准确率都在76%左右且波动范围不大。这意味着它们都能有效地对糖尿病进行初步预测。你可以尝试修改LogisticRegression中的solver参数例如改为saga或lbfgs或者调整max_iter最大迭代次数观察模型性能是否会有变化。这能帮助你理解不同参数对模型训练的影响。四、应用场景线性分类的用武之地线性分类算法因其简单、高效和易于解释的特点在许多实际场景中都有广泛应用实际案例1垃圾邮件识别场景你的邮箱每天都会自动将邮件分为正常邮件和垃圾邮件。选择指导逻辑回归常用于此因为它能给出邮件是垃圾邮件的概率。你可以根据这个概率设置一个阈值比如概率超过80%就直接扔进垃圾箱低于20%就肯定是正常邮件中间的再人工判断。实际案例2客户流失预测场景一家电信公司想知道哪些客户可能很快会停止使用他们的服务流失。选择指导逻辑回归可以根据客户的通话时长、套餐类型、投诉记录等特征预测客户流失的概率。公司可以根据这些概率提前对高风险客户采取挽留措施比如提供优惠套餐。实际案例3医疗诊断辅助场景医生根据患者的各项体征数据如血压、血糖、年龄等辅助诊断某种疾病如糖尿病、心脏病。选择指导LR 和 LDA 都可以作为初步的诊断模型。LR 提供患病概率便于医生评估风险LDA 在类别区分度高时能更好地找到疾病和健康人群之间的界限。

相关推荐

从0到1部署el_PP-OCRv5_mobile_rec_onnx:面向初学者的完整步骤与常见问题解答
从0到1部署el_PP-OCRv5_mobile_rec_onnx:面向初学者的完整步骤与常见问题解答

从0到1部署el_PP-OCRv5_mobile_rec_onnx:面向初学者的完整步骤与常见问题解答 el_PP-OCRv5_mobile_rec_onnx是飞桨PaddlePaddle推出的轻量级OCR识别模型,专为移动端和嵌入式设备优化,采用ONNX格式确保跨平台兼容性。本文将帮助初学者快速完成… · 2026/11/3 9:23:13

2. 编程语言-Java-Spring Security基础
2. 编程语言-Java-Spring Security基础

文章目录前言一、spring-security-oauth2二、spring-security-jwt三、OAuth2 详解一、从"门禁卡"说起:OAuth2 到底解决了什么问题1.1 一个你每天都遇到的场景1.2 传统方式的致命缺陷1.3 OAuth2 到底是什么二、四个人一台戏:OAuth2 的核心角色三… · 2026/11/3 9:23:13

2. 编程语言-Java-I/O
2. 编程语言-Java-I/O

文章目录 前言 一、概念 1. 同步/异步 和 阻塞/非阻塞 2. IO对比 二、NIO 1. 概述 2. 原理 3. 特点 4. 应用 三、AIO 1. 概述 前言 ‌I/O‌ 阻塞IO,BIO BIO(Blocking I/O),也称作同步阻塞IO。 非阻塞IO,NIO NIO(Non-blocking I/O),也称作同步非阻塞IO; 现在常用的NIO,是… · 2026/11/3 9:23:13

【数据分析】DAU 实战手册:从定义到增长的完整闭环
【数据分析】DAU 实战手册:从定义到增长的完整闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 10:09:20

【C++修炼】面向对象—多态
【C++修炼】面向对象—多态

多态1. 多态的概念多态 (polymorphism):通俗来说,就是多种形态。多态分为静态多态 (编译时多态) 和动态多态 (运行时多态)。重点是运⾏时多态。静态多态,例如函数重载和函数模板就是静态多态,通过参数使函数达到多种形态。函数重载… · 2026/11/3 10:09:20

BBDown 快速入门:命令行离线下载 B 站视频教程
BBDown 快速入门:命令行离线下载 B 站视频教程

BBDown 快速入门:命令行离线下载 B 站视频教程 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown BBDown 是一个命令行式哔哩哔哩下载器:给它一条视频链接&#xf… · 2026/11/3 10:09:20

FlowMouse滚轮手势与摇杆手势教程:按住右键滚动,像切歌一样切换标签页
FlowMouse滚轮手势与摇杆手势教程:按住右键滚动,像切歌一样切换标签页

【免费下载链接】FlowMouse 一款追求极致流畅的开源鼠标手势扩展。指尖滑动,进入心流。支持手势导航、超级拖拽、滚轮手势、特殊手势,并可自定义所有手势及更多功能。 / An open-source mouse gesture extension designed for ultimate smoothness. Swip… · 2026/11/3 10:09:20

开源 CAD 选型指南:Rust 三维建模器 SolidCraft 三种使用形态完整对比
开源 CAD 选型指南:Rust 三维建模器 SolidCraft 三种使用形态完整对比

开源 CAD 选型指南:Rust 三维建模器 SolidCraft 三种使用形态完整对比 【免费下载链接】solidcraft SolidCraft: an open-source parametric 3D CAD application built in pure Rust. Desktop, web, and automation through MCP. 项目地址: https://gitcode.com/g… · 2026/11/3 10:09:20

具身智能创新架构解析(64):基于TVA架构的四大创新应用范式研究
具身智能创新架构解析(64):基于TVA架构的四大创新应用范式研究

前沿技术探索:TVA智能体(简称TVA)TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习&… · 2026/11/3 10:08:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码