【机器学习】分类器

在机器学习(Machine Learning,ML)中,分类器泛指算法或模型,用于将输入数据分为不同的类别或标签。分类器是监督学习的一部分,它依据已知的数据集中的特征和标签进行训练,并根据这些学习到的知识对新的未标记数据进行分类。

分类器的目标是从输入数据中提取有用的特征,并根据这些特征对数据进行分类。这些特征可以是数值型、类别型或其他类型的数据。分类器可以根据数据的属性和学习算法的选择,采用不同的方法进行分类。本文介绍4种常见的分类器:SVM、KNN、RF、NB。

目录

一.SVM

1.原理

2.鸢尾花分类预测

二.KNN

1.原理

2.鸢尾花分类预测

三.RF

1.原理

2.鸢尾花分类预测

四.NB

1.原理

2.鸢尾花分类预测

一.SVM

1.原理

支持向量机(SupportVectorMachine,SVM)是由Vapnik等人运用统计学理论中的结构风险最小化准则和VC维理论提出的一种依赖核函数的机器学习分类算法,其原理是:寻找分类的最优超平面,使超平面两侧类别的边缘距离最大。样本集\left \{(x_{1},y_{1}), (x_{2},y_{2}),...,(x_{n},y_{n})\right \},分类函数为

其中,ω是权值向量,b是偏移量。

下图为线性可分的二分类问题的支持向量机示例。

其中,H 是最优超平面,对应\omega x+b=0H_{1}H_{2}分别为类1和类2距离H的最近样本点,称为支持向量。 依据结构风险最小化准则,寻找最优超平面等价为:

其中,\xi _{i}\xi _{i}^{*}分别为松弛因子的上限和下限,C表示惩罚因子,i=1,2,…n。 引入拉格朗日算子\alpha _{i},分类阈值b*,最优分类函数为:

样本集线性不可分时,引入核函数K将样本转换到近似线性可分的空间,对应的最优分类函数为:

常用的径向基核函数的表达式如下。

2.鸢尾花分类预测

Scikit-learn是一个强大的Python库,提供丰富的机器学习算法和工具。利用Scikit-learn里面的SVM实现鸢尾花分类的代码如下。

from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加载数据
X, y = load_iris(return_X_y=True)
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练SVM模型
model = SVC(kernel='linear')
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)
# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

二.KNN

1.原理

K近邻分类器(K-nearest neighbour,KNN)是1种非线性分类算法,算法原理为:如果1个待预测样本附近的K个最近样本的大多数属于某一个类别,则该样本也属于这个类别。

以下图为例。

K=3时,距离待分类的绿色圆点最近的3个邻居为为2个红色三角形和1个蓝色正方形,基于统计的方法判定绿色圆点属于红色三角形类别。

K=5时,距绿色圆点最近的5个邻居为为2个红色三角形和3个蓝色正方 形,此时绿色圆点为蓝色正方形类别。

2.鸢尾花分类预测

利用Scikit-learn里面的KNN实现鸢尾花分类的代码如下。

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加载数据
X, y = load_iris(return_X_y=True)
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练KNN模型
knn_model = KNeighborsClassifier(n_neighbors=5)
knn_model.fit(X_train, y_train)

# 预测
y_pred = knn_model.predict(X_test)
# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

三.RF

1.原理

随机森林(RandomForest,RF)是1个包含多个决策树的分类器,最终输出类别由统计得到的各个决策树的分类类别的众数决定。随机森林分类器的构建主要有数据的随机选取以及候选特征的随机选取2个方面。

数据的随机选取

在原始数据集N个样本中进行有放回的抽样,构造样本大小也为N的子决策树数据集,同1个子决策树数据集的元素可以重复,不同子决策树数据集的元素也可以重复。如下图所示。

候选特征的随机选取

与子决策树数据集的随机选取相似,在子决策树分类过程中从M个原始特征中随机选取m个特征,然后再从m(m远小于M)个特征中选取最优的特征, 如下图所示。

2.鸢尾花分类预测

利用Scikit-learn里面的RF实现鸢尾花分类的代码如下。

from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加载数据
X, y = load_iris(return_X_y=True)
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练随机森林模型
rf_model = RandomForestClassifier(n_estimators=100)
rf_model.fit(X_train, y_train)

# 预测
rf_pred = rf_model.predict(X_test)
# 评估
rf_accuracy = accuracy_score(y_test, rf_pred)
print(f'Random Forest Accuracy: {rf_accuracy}')

四.NB

1.原理

朴素贝叶斯分类器(Naive Bayes,NB)的基础是贝叶斯决策理论,假设样本之间的特征相互独立。

朴素贝叶斯的算法原理是:训练样本集X=\left \{ x_{1} ,x_{2},...,x_{n}\right \},类别集合Y=\left \{ y_{1} ,y_{2},...,y_{n}\right \} ,样本特征集合T=\left \{ t_{1} ,t_{2},...,t_{n}\right \},对于待分类样本x_{i},计算x_{i}出现 的条件下,各个类别出现的概率,概率最大的类别即为x_{i}所属的类别。

2.鸢尾花分类预测

利用Scikit-learn里面的NB实现鸢尾花分类的代码如下。

from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris

# 加载数据
X, y = load_iris(return_X_y=True)
# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练朴素贝叶斯模型
nb_model = GaussianNB()
nb_model.fit(X_train, y_train)

# 预测
y_pred = nb_model.predict(X_test)
# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/933471.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

路径规划之启发式算法之十一:布谷鸟搜索算法(Cuckoo Search,CS)

布谷鸟搜索算法(Cuckoo Search,CS)是一种新兴的自然启发式算法,由剑桥大学的杨新社教授和S.戴布(Xin-She Yang和Suash Deb)于2009年提出。该算法基于布谷鸟的寄生性育雏(巢寄生)行为…

Java-JMX (官方文档解读)

JMX 简介 JMX(Java Management Extensions)是Java平台的一个标准管理框架,自Java 1.5版本起成为Java 平台标准版 (Java SE 平台) 的标准组成部分。JMX 技术提供了一种简单、标准的方法来管理资源(例如应用程序、设备和服务&#x…

沃丰科技智能客服在跨境电商独立站中的核心角色

随着全球化进程的加速和互联网技术的不断发展,跨境电商行业蓬勃兴起,为消费者提供了更广阔、更便捷的购物选择。在这样一个竞争激烈的市场环境中,优质的客户服务成为了企业脱颖而出的关键。沃丰科技智能客服凭借其先进的技术和人性化的设计理…

java 日期与时间

Java 的时间 API 是一个非常重要的主题,尤其是 Java 8 引入的 java.time 包,它为日期和时间处理提供了强大的功能。 我们可以按照以下几个主题逐步学习 Java 时间处理: import java.time.LocalDate; import java.time.LocalDateTim…

(ICML-2024)DoRA:权重分解低秩自适应

DoRA:权重分解低秩自适应 Paper是英伟达发表在ICML 2024的工作 Paper Title:DoRA: Weight-Decomposed Low-Rank Adaptation Code: 地址 Abstract 在广泛使用的参数高效微调 (PEFT) 方法中,LoRA 及其变体因避免了额外的推理成本而…

想在iPad上远程操作安卓手机的APP,怎样实现iPad远程控制安卓?

学生党或互联网行业的打工人,人手连三台电子设备也很常见,手机、平板还有笔记本电脑一大堆,如果出门要全带上,背包压力也变大。 有没有想过用远程控制功能,让iPad远程控制安卓手机?这样做,出门就…

【JavaEE】UDP、TCP的API介绍

目录 UDP数据报套接字编程 DatagramSocket API DatagramPacket API 回显C/S示例 TIPS TCP ServerSocket API Socket API 回显C/S示例 UDP数据报套接字编程 DatagramSocket API socket是操作系统中的一种概念,本质上是一种特殊的文件,socket属于…

【专题】2024年11月新能源汽车、智能汽车行业报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38520 随着科技的飞速发展与社会的持续变革,新能源汽车与智能汽车行业正步入全新的发展阶段,成为全球瞩目的焦点领域。本报告深入且全面地剖析了 2024 年 11 月该行业的多方面状况。从汽车消费市场来看&#…

mysql重置root密码(适用于5.7和8.0)

今天出一期重置mysql root密码的教程,适用于5.7和8.0,在网上搜索了很多的教程发现都没有效果,浪费了很多时间,尝试了多次之后发现这种方式是最稳妥的,那么废话不多说,往下看: 目录 第一步&…

AI智能体Prompt预设词指令大全+GPTs应用使用

AI智能体使用指南 直接复制在AI工具助手中使用(提问前) 可前往SparkAi系统用户官网进行直接使用 SparkAI系统介绍文档:Docs 常见AI智能体GPTs应用大全在线使用 自定义添加制作AI智能体进行使用: 文章润色器 你是一位具有敏锐洞察…

linux 系统常用指令

1、查看内核版本 uname -r 2、列出占用空间最大的 10 个文件或目录 du -ah / | sort -rh | head -n 10 终于找到我虚拟机硬盘空间越来越少的原因了,类目......

[C++]继承

继承 概念使用方法继承方式子类的构造与析构 继承的成员继承成员在子类对象里的存放顺序成员变量普通成员变量静态成员变量 成员函数普通成员函数重定义(隐藏) 静态成员函数友元函数 单继承与多继承概念赋值转换(切片)多继承带来的…

MetaGPT 安装

1. 创建环境 conda create -n metagpt python3.10 && conda activate metagpt2. 可编辑方式安装 git clone --depth 1 https://github.com/geekan/MetaGPT.git cd MetaGPT pip install -e .3. 配置 metagpt --init-config运行命令,在C盘位置C:\Users\325…

ros项目dual_arm_pick-place(urdf文件可视化查看)

前言 一直想写一些项目的讲解,今天(2024.12.05)可以说正式开始了。 dual_arm_pick-place项目,是关于两个机械臂协同传递物品。 正文 这次的话,给大家讲一下里面的urdf文件。 这篇文章主要来看一下项目中的urdf文件…

如何在 IntelliJ IDEA 中为 Spring Boot 应用实现热部署

文章目录 1. 引言2. 准备工作3. 添加必要的依赖4. 配置 IntelliJ IDEA4.1 启用自动编译4.2 开启热部署策略 5. 测试热部署6. 高级技巧7. 注意事项8. 总结 随着现代开发工具的进步,开发者们越来越重视提高生产力的特性。对于 Java 开发者来说,能够在不重启…

工业-实时数据采集

1.编写新的 Flume 配置文件,将数据备份到 HDFS 目录 /user/test/flumebackup 下,要求所有主题 的数据使用同一个 Flume配置文件完成。 1. 配置概览 Flume 的主要任务是从多个来源(如日志文件)读取数据,经过处理后通过接收器(Sink)存储到目标系统(如 HDFS)。在此配置…

springSecurity认证流程

Spring Security 是spring家族中的一个安全管理框架。相比于另一个安全框架Shiro,它提供更丰富的功能和社区资源,但也较难上手。所以一般大项目用spring Security,小项目用Shiro。 一般web应用需要认证和授权,这也是spring Secur…

LinuxUDP编程

由于UDP是无连接、尽力传输的,所以Server端绑定完IP、端口号后,使用recvfrom可以阻塞等待客户端的数据,而且Client端通过sendto发送的数据包直接发送到互联网(也是基于IP、端口号)这种操作是不担保Server端是否收到的&…

Nginx基本介绍及conf文件的作用

文章目录 前言一、Nginx基本介绍1.1 what is Nginx ?1.2 Nginx中的三个概念1.3 nginx安装1.4 运行nginx 二、nginx配置文件conf2.1 conf文件组成部分2.1.1 全局块2.1.2 events块2.1.3 http块 三、其他概念3.1 nginx惊群3.2 负载均衡 总结 前言 本文将介绍nginx的基…

Docker打包SpringBoot项目

一、项目打成jar包 在进行docker打包之前,先确定一下,项目能够正常的打成JAR包,并且启动之后能够正常的访问。这一步看似是可有可无,但是能避免后期的一些无厘头问题。 二、Dockerfile 项目打包成功之后,需要编写Doc…