当前位置: 首页 > news >正文

【机器学习】一文掌握机器学习十大分类算法(上)。

十大分类算法

  • 1、引言
  • 2、分类算法总结
    • 2.1 逻辑回归
      • 2.1.1 核心原理
      • 2.1.2 算法公式
      • 2.1.3 代码实例
    • 2.2 决策树
      • 2.2.1 核心原理
      • 2.2. 代码实例
    • 2.3 随机森林
      • 2.3.1 核心原理
      • 2.3.2 代码实例
    • 2.4 支持向量机
      • 2.4.1 核心原理
      • 2.4.2 算法公式
      • 2.4.3 代码实例
    • 2.5 朴素贝叶斯
      • 2.5.1 核心原理
      • 2.5.2 算法公式
      • 2.5.3 代码实例
  • 3、总结

1、引言

小屌丝:鱼哥,分类算法都有哪些?
小鱼:也就那几种了
小屌丝:哪几种啊?
小鱼:逻辑归回、决策树、随机森林、支持向量机…你问这个干嘛
小屌丝:我想捋一捋,哪些是分类算法
小鱼:我在【机器学习&深度学习】专栏已经写过了啊
小屌丝:那不是一篇只能学习一个技能嘛
小鱼:那你想咋的?
小屌丝:我想一篇学习多个技能。
小鱼:我… 的乖乖, 你真是个…~~
在这里插入图片描述

小屌丝: 别这么夸,我会不好意思的
小鱼:… 算了,我还是整理一下思路,写文章吧
小屌丝:可以可以。

2、分类算法总结

2.1 逻辑回归

2.1.1 核心原理

逻辑回归是用于二分类问题的统计方法,它通过将数据输入的线性组合通过逻辑函数(通常是Sigmoid函数)映射到0和1之间,从而预测概率。

2.1.2 算法公式

逻辑回归的核心公式为 P ( Y = 1 ) = 1 1 + e − ( β 0 + β 1 X 1 + . . . + β n X n ) P(Y=1) = \frac{1}{1 + e^{-(\beta_0 + \beta_1X_1 + ... + \beta_nX_n)}} P(Y=1)=1+e(β0+β1X1+...+βnXn)1
其中 P ( Y = 1 ) P(Y=1) P(Y=1)是给定X时Y=1的概率。

敲黑板

详细内容可以参照小鱼的专篇:

  • 【机器学习】有监督学习算法之:逻辑回归
  • 【机器学习】一文掌握逻辑回归全部核心点(上)。
  • 【机器学习】一文掌握逻辑回归全部核心点(下)。

2.1.3 代码实例

代码实例

# -*- coding:utf-8 -*-
# @Time   : 2024-04-03
# @Author : Carl_DJfrom sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 创建逻辑回归模型并训练
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)# 进行预测
predictions = model.predict(X_test)
print(predictions)

在这里插入图片描述

2.2 决策树

2.2.1 核心原理

决策树通过递归地选择最优特征,并根据该特征的不同取值对数据进行分割,每个分割为一个树的分支,直到满足停止条件。

敲黑板

详细内容可以参照小鱼的专篇:

  • 【机器学习】监督学习算法之:决策树

2.2. 代码实例

代码实例

# -*- coding:utf-8 -*-
# @Time   : 2024-04-03
# @Author : Carl_DJfrom sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 创建决策树模型并训练
model = DecisionTreeClassifier()
model.fit(X_train, y_train)# 进行预测
predictions = model.predict(X_test)
print(predictions)

在这里插入图片描述

2.3 随机森林

2.3.1 核心原理

随机森林是一种集成学习方法,它构建多个决策树并将它们的预测结果进行投票或平均,以提高预测的准确性和稳定性。

敲黑板

详细内容可以参照小鱼的专篇:

  • 【机器学习】必会算法之:随机森林

2.3.2 代码实例

代码实例

# -*- coding:utf-8 -*-
# @Time   : 2024-04-03
# @Author : Carl_DJfrom sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 创建随机森林模型并训练
model = RandomForestClassifier()
model.fit(X_train, y_train)# 进行预测
predictions = model.predict(X_test)
print(predictions)

在这里插入图片描述

2.4 支持向量机

2.4.1 核心原理

SVM通过找到一个超平面来最大化不同类别之间的边界距离,以达到分类目的。
对于线性不可分的数据,SVM使用核技巧映射到更高维度空间中实现分离。

敲黑板

详细内容可以参照小鱼的专篇:

  • 【机器学习】有监督学习算法之:支持向量机

2.4.2 算法公式

SVM的目标是最小化 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i ||w||^2 + C\sum_{i=1}^{n}\xi_i ∣∣w2+Ci=1nξi,其中C是正则化参数, ξ i \xi_i ξi是松弛变量。

2.4.3 代码实例

代码实例

# -*- coding:utf-8 -*-
# @Time   : 2024-04-03
# @Author : Carl_DJfrom sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 创建SVM模型并训练
model = SVC()
model.fit(X_train, y_train)# 进行预测
predictions = model.predict(X_test)
print(predictions)

在这里插入图片描述

2.5 朴素贝叶斯

2.5.1 核心原理

朴素贝叶斯基于贝叶斯定理,假设特征之间相互独立。
它通过计算给定特征下每个类别的条件概率来进行分类。

2.5.2 算法公式

P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) P ( X ) P(Y|X) = \frac{P(X|Y)P(Y)}{P(X)} P(YX)=P(X)P(XY)P(Y),其中 P ( Y ∣ X ) P(Y|X) P(YX)是给定特征X下类别Y的条件概率。

2.5.3 代码实例

# -*- coding:utf-8 -*-
# @Time   : 2024-01-21
# @Author : Carl_DJfrom sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split# 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 创建朴素贝叶斯模型并训练
model = GaussianNB()
model.fit(X_train, y_train)# 进行预测
predictions = model.predict(X_test)
print(predictions)

在这里插入图片描述

3、总结

以上介绍的五种机器学习分类算法各有特点和应用场景,如:

  • 逻辑回归朴素贝叶斯适用于小规模数据集
  • 决策树随机森林适用于处理复杂的非线性关系
  • SVM适用于高维数据的分类问题。

选择合适的算法取决于具体问题、数据集的特性以及预期的性能要求。

掌握这些算法的原理和使用方法,可以有效提升机器学习项目的开发效率和效果。

敲黑板:

另一篇,则点击文字即可到达:《【机器学习】一文掌握机器学习十大分类算法(下)。》

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习【机器学习】&【深度学习】领域的知识。

相关文章:

【机器学习】一文掌握机器学习十大分类算法(上)。

十大分类算法 1、引言2、分类算法总结2.1 逻辑回归2.1.1 核心原理2.1.2 算法公式2.1.3 代码实例 2.2 决策树2.2.1 核心原理2.2. 代码实例 2.3 随机森林2.3.1 核心原理2.3.2 代码实例 2.4 支持向量机2.4.1 核心原理2.4.2 算法公式2.4.3 代码实例 2.5 朴素贝叶斯2.5.1 核心原理2.…...

策略模式(知识点)——设计模式学习笔记

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下…...

Python学习从0开始——专栏汇总

Python学习从0开始——000参考 一、推荐二、基础三、项目一 一、推荐 Hello World in Python - 这个项目列出了用Python实现的各种"Hello World"程序。 Python Tricks - 这个项目包含了Python中的高级技巧和技术。 Think Python - 这是一本教授Python的在线书籍&…...

【iOS ARKit】Web 网页中嵌入 AR Quick Look

在支持 ARKit 的设备上,iOS 12 及以上版本系统中的 Safari浏览器支持 AR Quick Look, 因此可以通过浏览器直接使用3D/AR 的方式展示 Web 页面中的模型文件,目前 Web 版本的AR Quick Look 支持USDZ 格式文件。苹果公司有一个自建的3D模型示例库…...

Java基础-知识点03(面试|学习)

Java基础-知识点03 String类String类的作用及特性String不可以改变的原因及好处String、StringBuilder、StringBuffer的区别String中的replace和replaceAll的区别字符串拼接使用还是使用StringbuilderString中的equal()与Object方法中equals()区别String a new String("a…...

【GIS学习笔记】ArcGIS/QGIS如何修改字段名称、调整字段顺序?

在先前的ArcGIS学习中,了解到字段名称是不能修改的,只能用新建一个字段赋值过去再删除原字段这种方法实现,字段顺序的调整如果通过拖拽也是不能持久的,需要用导出一个新数据这种方法进行保存,可参考以下链接&#xff1…...

Study Pyhton

PyCharm PyCharm是一个写python代码的软件,用PyCharm写代码比较方便。 PyCharm快捷键ctrl alt s打开软件设置ctrl d复制当前行代码 shift alt 上\下将当前行代码上移或下移crtl shift f10运行当前代码文件shiftf6重命名文件 ctrl a全选ctrl c\v\x复制、粘贴、…...

【MySQL】:深入解析多表查询(下)

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. 自连接1.1 自连接查询1.2 联合查询 二. 子查询2.1 概述2.2 分类2.3 标量子查…...

图像入门处理4(How to get the scaling ratio between different kinds of images)

just prepare for images fusion and registration ! attachments for some people who need link1 图像处理入门 3...

【项目精讲】Swagger接口文档以及使用方式

Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(https://swagger.io/) 前后端分离开发,有利于团队合作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试 如何使…...

ThingsBoard通过服务端获取客户端属性或者共享属性

MQTT基础 客户端 MQTT连接 通过服务端获取属性值 案例 1、首先需要创建整个设备的信息,并复制访问令牌 ​2、通过工具MQTTX连接上对应的Topic 3、测试链接是否成功 4、通过服务端获取属性值 5、在客户端查看对应的客户端属性或者共享属性的key 6、查看整个…...

(78)删除有序数组中的重复项(79)排序矩阵查找

文章目录 1. 每日一言2. 题目(78)删除有序数组中的重复项2.1 解题思路2.2 代码 3. 题目(79)排序矩阵查找3.1 解题思路3.1.1 暴力查找暴力查找代码 3.1.2 二分查找二分查找代码 3.1.3 贪心贪心代码 4. 结语 1. 每日一言 水晶帘动微风起,满架蔷薇一院香。 —高骈- 2.…...

elasticSearch从零整合springboot项目实操

type会被弃用 ,就是说之后的elasticSearch中只会存在 索引(indices) 和 一行(document) 和字段(fields) elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等…...

【Linux实践室】Linux高级用户管理实战指南:用户所属组变更操作详解

🌈个人主页:聆风吟_ 🔥系列专栏:Linux实践室、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 🔔Linux查看用户所属组2.1.1 👻使…...

C语言: 字符串函数(下)

片头 在上一篇中,我们介绍了字符串函数。在这一篇章中,我们将继续学习字符串函数,准备好了吗?开始咯! 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数,它用于将一个字符串的一部分内容…...

WPF 数据绑定类属性 和数据更新

WPF中数据绑定是一个非常强大的功能,不仅可以绑定后台数据,还可以进行实时更新。 数据绑定实例 : 在后台创建模型类,然后在标签页面进行导入并绑定。 第一步: // 在后台创建模型类 public class MyData {public string Name { get; set; }…...

使用云服务器搭建CentOS操作系统

云服务器搭建CentOS操作系统 前言一、购买云服务器腾讯云阿里云华为云 二、使用 XShell 远程登陆到 Linux关于 Linux 桌面下载 XShell安装XShell查看 Linux 主机 ip使用 XShell 登陆主机 三、无法使用密码登陆的解决办法 前言 CentOS是一种基于Red Hat Enterprise Linux&#…...

unity的引用传递和数组的联系

引用传递 //引用传递 static void SetY(out int x,out int y ){x 0;y 0;x 1000;}static void Main(string[] args){int x 0;int y 10;SetY(out x, out y);Console.WriteLine($"x{x},y{y}");} 结果是:x1000,y0 数组的引用传递 数组值…...

Android bug Unresolved reference: BR

新建项目后 导入viewBinding 编译后提示 Unresolved reference: BR 解决办法 app 目录下 build.gradle 中 plugins 节点 添加 id kotlin-kapt参考 https://stackoverflow.com/questions/77409050/could-not-find-androidx-corecore-ktx1-8-10...

Unity DOTS1.0 入门(1) ECS机制与概述

ECS机制与概述 Entity:实体 由一个一个的Component组合在一起,是连续的内存布局。通过EnitityManager来负责高效的分配和释放相关entity. World:世界 一个entity的集合,在当前世界里面,每个Entity都有唯一不同的entityld;运行时Unity会自动创建一个D…...

TTT-KV绑定与线性注意力机制的技术解析

1. 从键值存储到注意力机制的认知跃迁第一次看到"TTT-KV绑定本质是线性注意力机制"这个命题时,我正调试着一个基于键值存储的推荐系统。当传统KV缓存机制遇到高并发查询时,响应延迟曲线突然让我联想到Transformer模型中的注意力分布——这个瞬…...

Qt跨平台开发踩坑记:在x86 Ubuntu上为ARM设备远程调试,我解决了这三个连接问题

Qt跨平台开发实战:解决ARM设备远程调试中的三大连接难题 开发者在x86架构的Ubuntu系统上为ARM设备进行Qt跨平台开发时,远程调试环节往往成为项目推进的拦路虎。本文将聚焦三个最具代表性的连接问题——SSH服务未启动、认证权限不足和环境变量配置错误&am…...

豆包将推付费版:三档订阅价曝光,专注复杂任务与生产力场景

豆包付费版本服务计划曝光近日,豆包App Store页面出现付费版本服务声明。为更好服务专业用户,豆包将在免费版基础上,推出含更多增值服务的付费版本。页面还披露了三档订阅价格,标准版连续包月每月68元(连续包年688元&a…...

从LeetCode真题“反转链表”出发,彻底搞懂头插法的实战应用与边界情况

从LeetCode真题“反转链表”出发,彻底搞懂头插法的实战应用与边界情况 链表操作是算法面试中的高频考点,而反转链表(LeetCode 206)更是经典中的经典。很多人在第一次遇到这道题时,会被各种指针操作绕得晕头转向。今天我…...

GPT分区格式下,Win10+Ubuntu双系统GRUB引导丢失的完整修复指南:从‘Minimal BASH-like’报错到菜单恢复

GPT分区双系统GRUB引导修复全攻略:从原理到实战 当你在UEFIGPT环境下同时运行Windows和Ubuntu双系统时,突然遭遇"Minimal BASH-like line editing"的GRUB救援界面,那种焦虑感我深有体会。这不是简单的菜单丢失,而是UEFI…...

ai辅助开发新体验:让hyperdown在快马平台上更智能地解析markdown

最近在写技术文档时,经常需要处理复杂的Markdown格式问题。作为一个非专业前端开发者,调试表格嵌套、代码块缩进这些细节总是很头疼。直到发现了InsCode(快马)平台的AI辅助开发功能,配合Hyperdown解析器,终于找到了高效解决方案。…...

【仅限前500名】C# 13主构造函数企业级落地手册(含Roslyn Analyzer规则包+迁移检查清单)

更多请点击: https://intelliparadigm.com 第一章:C# 13 主构造函数增强实战教程 C# 13 引入了主构造函数(Primary Constructor)的显著增强,允许在类和结构体声明中直接定义参数,并自动参与字段初始化、属…...

【卷卷观察】Redis 之父用 AI 写新数据类型:4个月,我干了以前一年才敢干的事

作者:卷卷 | 2026-05-05一句话结论Redis 之父 Salvatore Sanfilippo 用 GPT 5.x Codex 辅助开发,花了4个月搞出了一个新 Array 数据类型。他的感受是:AI 没有让他变懒,反而让他敢挑战以前根本不敢碰的复杂度。这篇文章不是软文&a…...

TrollInstallerX终极安装指南:iOS越狱工具快速安装与故障排除

TrollInstallerX终极安装指南:iOS越狱工具快速安装与故障排除 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS 14.0至16.6.1设…...

手机变车钥匙:手把手带你拆解CCC 3.0车主配对背后的NFC与SPAKE2+安全协议

手机变车钥匙:CCC 3.0数字钥匙安全协议全流程拆解 当你的手机轻轻一碰就能解锁车门时,背后正上演着一场精密的加密芭蕾。CCC(Car Connectivity Consortium)3.0标准将NFC的近场通信优势与SPAKE2的后量子加密特性完美结合&#xff0…...