MATLAB机器学习工具箱
wptr33 2025-05-28 20:48 5 浏览
MATLAB机器学习工具箱
MATLAB包含统计和机器学习工具箱(Statistics and Machine Learning Toolbox),其包含如下一些子模块:探索性数据分析、数据降维、机器学习、回归和方差分析、概率分布拟合及假设检验等功能模块。
1.工具箱简介
机器学习算法使用计算方法直接从数据中“学习”信息,不把预定方程假设为模型。不同的机器学习算法,按照解决问题的性质,可以分为分类(回归)、聚类和强化学习问题。相应的,在Statistics and Machine Learning Toolbox中提供用于执行受监督和无/非监督机器学习的方法。分类算法使用户可以将一个分类应变量建模为一个或多个预测元的函数。Statistics and Machine Learning Toolbox提供涵盖多种参数化和非参数化分类算法的应用程序和函数,如logistic回归、朴素贝叶斯、k近邻、SVM等。
分类学习器应用程序(Classification Learner App)提供了一个机器学习应用常用的操作,如交互式探查数据、特征选择、指定交叉验证方案、训练模型和评估结果。分类学习器应用程序用于使用监督式机器学习来训练模型对数据进行分类,使用它可以执行常见任务,例如导入数据和指定交叉验证方案;探索数据和选择特征;使用多种分类算法训练模型;比较和评估模型;在计算机视觉和信号处理等应用场合中共享训练过的模型。
除此之外,分类学习器集成了多种可视化方式来方便用户选择模型,进行模型评估和比较。训练好的模型也可以直接导入MATLAB的工作空间,来对新的数据预测,也可以直接生成代码,方便和其他应用集成。
Statistics and Machine Learning Toolbox中也实现了很多聚类算法,聚类算法通过根据相似度测量对数据分组来发现数据集中的规律。可用的算法包括k-均值、k-中心点、分层聚类、高斯混合模型和隐马尔可夫模型。当不知道聚类的数量时,可以使用聚类评估技术根据特定指标确定数据中存在的聚类数量。
2.分类学习器基本流程
对遇构建机器学习应用,通常包括五部分,分别是数据导入、数据的探索和特征选择、训练模型、比较模型和输出模型。
2.1数据导入
首先为了启动分类学习器,可以直接在命令行输入“classification Learner”或者在MATLAB的菜单栏中选择“应用程序”选项卡下的分类学习器应用classification Learner。
导入数据的方法分为两种方式,点击新建对话后,可选择从工作区或文件中导入数据。演示数据通过fishertable=readtable('fisheriris.csv')导入。
该窗口主要目的是用来设置训练数据的相关属性、标签及设置验证集。导入数据依次对应3个步骤,第一步中主要功能是选择数据集,且设置数据集矩阵中的行(rows)作为一个变量,还是将列(columns)作为一个变量;第二步中需要向算法声明哪些维度是输入量,哪些是输出量,对于分类问题来说就是选择哪几个变量作为属性值,哪个变量作为标签。预测变量对应输入,响应变量对应标签。此时导入数据的工作就完成了。
为了优化算法中的一些超参数,需要一定的手段来评估不同参数的表现,其中,验证集的目的是用来对算法的超参数调优。验证集应该是训练集的一部分。但是当训练集数量较少(因此验证集的数量更少)时,将用到交叉验证法。所谓k折交叉验证就是把训练集均分成k份,其中k-1用来训练,1份用来验证。然后循环取k-1份来训练,其中1份来验证,最后取所有k次验证结果的平均值作为算法验证结果。点击开始会话。
2.2选择模型并调整训练参数
该激活的窗口包含了训练一个机器学习应用的核心要素,其大体分为六部分。最上边的菜单栏提供了特征选择、算法选择、训练模型、可视化绘图及输出等操作。特征选择模块用于选择输入特征,即选择属性特征,也可以利用PCA方法自动选择。
分类学习算法分成四大类,分别是决策树类、判别分析类、支持向量机类、神经网络类。除了简单地点击Train进行训练外,还可以通过Advanced按钮设置一些训练的参数。
2.3输出模型
当用户选择一个训练模型后,它就会出现在窗口的右侧方框中。用户可以选择多个模型,依次训练。得到的每个分类器的分类精度会显示在方框中。其中分类效果最好的模型会以方框突出显示。当前模型一栏显示当前模型的一些详细信息。
训练完毕后,用户不仅仅得到一个分类的精度值,同时用户还可以通过各种图形来直观地观测当前模型的表现。当然,图示化训练数据对于数据探索,发现数据的模式也是大有脾益。可以绘制的图形包括训练数据的散点图、混淆矩阵、ROC曲线等。在窗口的最右侧可以设置绘图参数。
通过可视化窗口界面,用户可以再次调整模型,如进一步的特征提取,或者设置更加合理的超参数值,来改善模型的表现。
一但得到满意的模型,可以通过两种方式加以利用。一种是用户导出训练好的模型到工作空间中,这个时候用户将发现变量空间多了一个结构体变量,这个变量含有一个用于预测的成员函数,此时,用户将可以用它来做预测。但是如果用户希望更改模型,或者把它集成到其他的应用,则需要用到另一种方法,也是最通用的方法,即代码的形式使用。
3.分类学习器算法优化与选择
使用工具箱的方法并不是智能的,同样需要对数据进行预处理,并根据经验和分析选择合适的数据特征。另外,机器学习各类算法也具有不同的特点,使用者应在不断的实践中了解各类机器学习算法,在特定的应用场合应选择适合数据自身的算法。
3.1特征选择
在分类学习器中可以通过对原始数据做散点图来分析是否需要或排除某个特征。选择不同特征作为坐标轴,如果数据某一类别数据很好地分开,说明这个特征是有用的。如果某个特征对于分类没有任何作用,则可以考虑把它排除。在fisheriris数据集中选择X和Y分别为PetalLength和PetalWidth,可以看到setosa类能够被很好地分开。
在分类学习器窗口,也可以通过勾选耨个特征,观察分类器的表现。如果删除某个特征后可以提高模型的性能,那么应该排除这个特征,尤其是当收集该数据比较昂贵和困难的时候。具体操作为单击特征组中的特征选择按钮,可以取消勾选特征中特征名称后的复选框。
利用主成分分析来降低特征空间的维度,有助于防止过拟合。PCA能够消除数据中的冗余信息,产生一个新的变量集,该变量集称为主成分。在工具箱中使用PCA包括以下步骤:(1)在分类器的特征中单击PCA按钮;(2)在高级PCA选项中选中启用PCA,并设置响应参数(一般采用默认)。至此,用户已完成了对PCA的设置,之后,当用户点击Train的时候,PCA会首先对数据做变换和处理,然后进行模型训练。
在分类学习器中也可以利用平行坐标图(Parallel Coordinates Plot)来选择特征,具体操作为单击分类学习器窗口的绘图中的平行坐标图按钮,生成平行坐标图。
在平行坐标图中其实它就是把每个特征列在列在一个一维的轴上画出来,然后把每个记录(一个样本点)依次连接起来,最后用不同的颜色表示不同的类别,错分的类别用虚线表示。如果某个特征具有很好的区分度,那么在坐标轴上就会出现明显的聚类现象。从图中可以看出PetalLength和PetalWidth特征具有很好的分类效果。
3.2选择分类器算法
各分类器算法有各自的特点,依赖于具体的需求,如速度、存储、灵活性、可解释性等,会有不同的选择。如果对于一个数据没有特别深刻的理解,或者特别适合的模型,最开始用户可以选择All Quick-To-Train,这个选项会用所有高效的模型对数据进行训练,能够快速地得到不同分类器的表现。但一般来说,不同类型算法用不同的特点,有大概的了解也会有利于用户选择分类器算法。下表对不同类型分类器算法进行了比较。
4.工具箱分类学习实例
本节通过实例来阐述如何使用分类学习器APP。所述的实例是基于fisheriris数据集。中文名为安德森鸢尾花数据集(Anderson’s Iris Data Set),也称鸢尾花数据集(Iris Data Set)或费雪鸢尾花数据集(Fisher’s Iris Data Set),是一类多重变量分析的数据集。其数据集包含了150个样本,都属于鸢尾属下的3个亚属,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾。4个特征被用于样本的定量分析,它们分别是花萼和花瓣的长度和宽度。因此算法的任务就是基于这4个特征,利用不同的分类算法来分辨它们到底属于哪个亚属。
下面介绍利用Classification Learner实现分类算法的步骤。
(1)在MATLAB命令行中输入命令,进行fisheriris数据集的加载,命令为“fishertable=readtable(‘fisheriris.csv’);”。
(2)对fisheriris数据集的四项特征的数据进行归一化处理,经典的方法有min-max标准化、Z-score标准化、小数点定标标准化。
(3)在上述3种归一化方法种,在本实例中选择第一种方法进行处理。然后MATLAB的“应用程序”选项卡中选择Classification Learner。
(4)经过上一步骤,会出现一个分类学习器窗口。在分类学习器窗口中单击新建对话按钮,此时将出现一个用于数据处理的窗口,按照上节方法进行设置,分别设置预测变量和响应变量及一些关于交叉验证的参数。本实例采取默认设置。之后单击该窗口右下角开始会话。此时,分类学习器创建了一个数据的散点图。可发现散点的分布形式没有发生变化,仅仅是坐标轴的范围发生了改变,这就是对数据进行归一化后的数据结果。用户可以通过选择不同的特征来绘图,从而观察哪些变量能够很好地区分数据。值得注意的是,通过其他方式进行归一化处理,散点的分布形式会有一定的变化。本实例中样本属性特征为4,且各特征对于训练都有作用,因此不进行删减特征处理及PCA主成分分析。
为了应用判别分析算法,单击CLASSIFICATION LEARNER选项卡CLASSIFIER组中的下拉按钮,选择ALL选项,然后单击TRAINING组中的Train按钮,此时,就可以开始训练模型了,经过2~3分钟的训练后。同样,也可以在CLASSIFIER组中的下拉列表中单独选择决策树算法、SVM、logistic回归及集成方法。这里为了方便,这里直接选择ALL选项,它会对训练数据应用所有的可用的分类器。
在图的左侧可以看到总共24个分类算法,最好的分辨率达到了98%的识别率,相应的识别算法包括ComplexTree、Medium Tree、Simple Tree、Quadratic SVM、Medium Gaussian SVM。需要具体了解训练算法的相关参数及训练时间,可单击相应算法,则在其左下角的现有模型窗格中显示。
另外,在散点显示图中,则发现显示为“X”的点,这些点表示预测错误的点,单击图中的散点,可显示出具体的数据信息。
为了观察每个类预测的准确率,可以单击画图组中的混淆矩阵按钮。也可以单击ROC曲线。
(5)最后,为了导出模型,在导出模型下拉列表中可以选择不同的导出方式。本实例中采用导入工作空间的方法,即选择导出模型中的导出紧凑模型。
采用默认值,单击“确定”按钮。此时在MATLAB的工作空间中便显示了一个名为trainedClassifier的结构体数据,即为训练好的模型。
为了利用训练好的数据模型进行新样本的预测,需要调用和使用它的成员函数XXX,predicFcn,其中XXX为模型名称,本实例中使用格式如下:
Yfit=trainedClassifier.predicFcn(T)
其中,T是新预测数据样本,它的形式和数据类型必须于训练中的数据保持一致,且不包含标签。另外,值得注意的是,需要对样本数据采用同样的归一化方法进行训练。
- 上一篇:MATLAB二分法求方程的根(实例加程序)
- 下一篇:IIR数字滤波器原理及实现方法
相关推荐
- IIR数字滤波器原理及实现方法
-
欢迎大家关注转发...
- MATLAB机器学习工具箱
-
MATLAB机器学习工具箱MATLAB包含统计和机器学习工具箱(StatisticsandMachineLearningToolbox),其包含如下一些子模块:探索性数据分析、数据降维、机器学...
- MATLAB二分法求方程的根(实例加程序)
-
零点的存在性定理早在高中阶段,我们就学习过函数的零点存在性定理。简单地说,对于区间[a,b]上的连续函数f(x),如果满足f(a)f(b)<=0,那么函数在[a,b]上至少存在一个零点。...
- 优化算法matlab大杀器 —— 实现秃鹰算法
-
注意:此代码实现的是求目标函数最大值,求最小值可将适应度函数乘以-1(框架代码已实现)。.代码实现...
- 实例讲解MATLAB绘图坐标轴标签旋转
-
在我们进行绘图时,需要在图片上添加上做标轴的标签,但是当数据量比较多时,例如一天24小时的数据,这时把每个小时显示在左边轴的标签上,文字内容放不下,因此需要将坐标轴标签旋转一定的角度,这样可以更好在图...
- MATLAB的quiver函数绘制箭头向量图
-
MATLAB的quiver函数绘制箭头向量图,quiver函数的基本语法如下:基本语法...
- 「高中物理」电场和电势怎么理解?利用matlab工具完成可视化
-
高中物理给出了电场力和场强的计算方法,但是没给出电势的计算方法。下面先给出利用高中物理可接受的方法推导电势的公式可以看出电势就是场强的积分,也就是说场强是电势对距离的导数matlab做等量异种、同种...
- Matlab绘制图像,imagesc和pcolor的区别【工作记录4】
-
注意:此文章主要针对本人在工作中遇到的问题进行记录和经验上的总结,难免存在错误和遗漏,如有任何问题,请留言,我会尽快回复。最近用Matlab绘制图像时,发现用pcolor和imagesc画图区别挺大...
- 硬核浪漫!圣诞节给对象送礼的5个最没用小技巧
-
《圣诞节里吃饺子》...
- MATLAB画一阶系统单位阶跃响应、单位脉冲响应、单位斜坡响应曲线
-
在确定系统的数学模型后,便可以用几种不同的方法去分析控制系统的动态性能和稳态性能。在经典控制理论中,常用时域分析法、根轨迹法或频域分析法来分析线性控制系统的性能。显然,不同的方法有不同的特点和适用范围...
- 奇怪的Matlab画图技巧系列2–不一样的线条标记
-
毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧不一样的线条标记论文画图通过需要通过添加不同标记或者线形,区别不同类型的参数曲线,比较土豪的同学可以选择用颜色区别外加全部...
- MATLAB画等高线的源程序和实例
-
源程序clearclcx=[60555951443937362944370121419191712323271415182429363937...
- 奇怪的Matlab画图技巧系列4–动图生成
-
毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧MatlabGif动图保存毕业论文除了论文本身以外,在毕业论文的交流和最后的答辩过程中,通常需要制作PPT跟老师进行汇报...
- Spring Boot 打包与部署全面指南:从基础到高级实践
-
前言作为Java开发者,掌握SpringBoot应用的打包与部署是必备技能。本文将全面系统地介绍SpringBoot应用的打包与部署方式,从基础到高级,涵盖各种场景和需求。...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git 执行pull错误如何撤销 git pull fail
-
面试官:git pull是哪两个指令的组合?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)