【机器学习】分类器

在机器学习(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}')

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[软件开发幼稚指数评比]《软件方法》自测题解析010

第1章自测题 Part2 **9 [**单选题] 以下说法和其他三个最不类似的是: A)如果允许一次走两步,新手也能击败象棋大师 B)百米短跑比赛才10秒钟,不可能为每一秒做周密计划,凭感觉跑就是 C)即使是最好的足球队,也不能保证每…

解决 PyTorch 中的 AttributeError: ‘NoneType‘ object has no attribute ‘reshape‘ 错误

这里写目录标题 一、错误分析二、错误原因三、解决方案1. 检查损失函数2. 检查前向传播3. 检查 backward 函数4. 检查梯度传递 四、前向传播与反向传播1. 前向传播2. 反向传播3. 自定义 backward 函数示例反向传播过程:常见的错误:1:损失函数…

【AI系统】推理参数

推理参数 本文将介绍 AI 模型网络参数方面的一些基本概念,以及硬件相关的性能指标,为后面让大家更了解模型轻量化做初步准备。值得让人思考的是,随着深度学习的发展,神经网络被广泛应用于各种领域,模型性能的提高同时…

devops-Dockerfile+Jenkinsfile方式部署Java前后端应用

文章目录 概述部署前端Vue应用一、环境准备1、Dockerfile2、.dockerignore3、nginx.conf4、Jenkinsfile 二、Jenkins部署1、新建任务2、流水线3、Build Now 构建 & 访问 Springboot后端应用1. 准备工作2. 创建项目结构3. 编写 Dockerfile后端 Dockerfile (backend/Dockerfi…

【时时三省】(C语言基础)结构体的变量定义和初始化

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 有了结构体类型,那如果定义变量,其实很简单。 示例: 这个就是结构体变量的基础创建 初始化 比如里面只剩一个s3 s3里面有两个成员 第一个给c的值 第二个给…

社群分享在商业引流与职业转型中的作用:开源 AI 智能名片 2+1 链动模式小程序的应用契机

摘要:本文聚焦于社群分享在商业领域的重要性,阐述其作为干货诱饵在引流方面的关键意义。详细探讨了提供有价值干货的多种方式,包括文字分享、问题解答以及直播分享等,并分析了直播分享所需的条件。同时,以自身经历为例…

Python毕业设计选题:基于协同过滤的动漫推荐系统设计与实现_django+hive+spider

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 动漫数据 看板展示 论坛交流 系统管理 用户功能…

Python批量生成个性化Word录用通知书

你是一名人力资源部门的员工,你需要根据一份Excel表格中的员工信息,为每位员工生成一份录用通知书。 Excel表格中包含了员工的姓名、性别、职位、入职日期等信息,你需要将这些信息填充到Word模板中,并生成独立的录用通知书文件。…

第1章 敏捷的基本概念

1.区分:敏捷、精益和看板方法 敏捷既可以说成是一种思维,也可以说是一种方法,它旨在项目推进的过程中,帮助团队提高效率,但除了敏捷,精益思想和看板方法也能够提高效率。   敏捷方法和看板方法都是面向组织级的&…

OpenHarmony中HDC相关操作源码

目录 一.背景 二.文件路径 三.相关指令位置 一.背景 本次主要记录OpenHarmony中的HDC相关操作的源码位置,为后续有hdc相关修改可以进行快速的查询 二.文件路径 首先找到hdc相关的代码逻辑模块位置,路径:xxx\developtools\hdc 如果想干掉hdc的所有功能,就是如下的patch d…

校企合作新模式:校招管理系统促进企业人才供需精准对接

近年来,随着高校毕业生就业形势的日益严峻,校企合作作为一种有效的人才培养模式,越来越受到社会各界的广泛关注。然而,传统的校企合作模式往往存在信息传递不畅、供需不匹配等问题,导致企业难以招到合适的人才&#xf…

【清华】世界模型综述:理解世界还是预测未来?

论文:https://arxiv.org/pdf/2411.14499 1. 引言 1.1 研究背景与意义 世界模型(World Models)的概念随着人工智能领域,尤其是多模态大型语言模型和视频生成模型的快速发展而受到广泛关注。这些模型被视为实现人工通用智能(AGI…

排序2(万字详细版)

一 快速排序 快速排序是Hoare于1962年提出的⼀种⼆叉树结构的交换排序⽅法,其基本思想为:任取待排序元素 序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩ 于基准值,右⼦序列…

智能交通(8)——腾讯开悟智能交通信号灯调度赛道

本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。 一.赛题介绍 赛题简介:在本地赛题中,参赛团队…

抖音矩阵系统快速部署指南/抖音矩阵系统源码分发,短视频矩阵账号管理系统开发部署—

抖音矩阵系统的源码分发与短视频账号管理平台的开发部署,要求通过对接官方API来实现功能的拓展。当前开发的账号矩阵管理系统专注于提供一键式管理多个账户的能力,支持定时发布内容、自动化关键词生成以实现搜索引擎优化(SEO)和霸…

社群借势与 AI 智能名片微信小程序的融合应用与发展策略

摘要:本文探讨了在社群运营中借势策略的运用,包括通过联谊活动和互换用户在不同社群间实现资源整合与协同发展。同时,引入 AI 智能名片微信小程序这一新兴工具,分析其在社群运营借势过程中的独特作用与应用模式,旨在为…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下,创建腾讯云短信发送工厂并命名为TencentSmsSender。记住,一定要在腾讯云短…

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态,在这种状态下,CPU只能执行用户态下的指令,并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态,内核是计算机系统的核心部分,CPU可以执行所有…

SpringBoot 架构下校园失物招领系统:精准定位校园失物去向

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第…

x86处理器编程模型

为x86处理器编写程序的时候, 必须要了解x86的内核寄存器 通用寄存器 后面才扩充到了32位,又要对以前的代码进行兼容, 所以之前16位结构保留了, BP与SP主要用于对栈空间进行操作, SI和DI用来进行数据的拷贝. 段寄存器 因为早期是16位的模式,只能到65535(64KB的空间),所以后来…