MATLAB官方机器学习入门教程

官方教程https://matlabacademy.mathworks.com/

项目描述

在这里插入图片描述

分类工作流程

导入数据

1.导入数据

利用readtable函数导入表格数据或文本数据,然后返回表类型的数据

%data=readtable('myfile.xlsx')

%导入数据
letter='J.txt'

2.查看变量

利用引用的方式查看变量

%x = mytable.Xdata;
%y = mytable.Ydata;

%查看letter的X和Y数据,然后可视化
plot(letter.X,letter.Y)

axis equal 横纵等宽

处理数据

1.矫正单位

在这里插入图片描述
什么意思没懂: 我的理解是写的时候,水平距离写一个单位,等于实际测量时的1.5个单位

letter = readtable("M.txt")
letter.X=letter.X*1.5;
plot(letter.X,letter.Y)
axis equal

2.时间归一化

在这里插入图片描述
没懂: 我的理解是这个时间值,是写一个字母记录的时间数据,左边的图表示的是任一起始时间点开始写完一个字母所用的时间,右边的图表示,(归一化操作)就是都假定从0开始写完一个字母所用的时间,
可以看到纵坐标表示的是字母书写时垂直坐标的变化

letter = readtable("M.txt")
letter.X = 1.5*letter.X;
plot(letter.X,letter.Y)
axis equal
letter.Time = letter.Time - letter.Time(1) %这里表示归一化,即结果只是每个字母持续的时间
letter.Time = letter.Time/1000 %这里表示换算到毫秒

特征提取

1.分析提取特征

分析有哪些可以利用的特征
在这里插入图片描述
这里注意到是长宽比,因为写的时候相同字母可以有填满整个数控板,或者只在数控板的一小块区域书写,所以我认为不能单纯的用长度和宽度来衡量,因为没有考虑尺度的问题

%计算持续时间
dur=letter.Time(end)

%计算横纵比
%利用range函数,range函数返回的向量x的取值范围,range(x)=max(x)-min(X),返回的是标量
aratio=range(letter.Y)/range(letter.X)

2.查看特征

给定数据包含三个变量,两个特征一个标签,470个收集的数据(来自不同的人)

load featuredata.mat
features %将载入的数据重命名为features
scatter(features.AspectRatio,features.Duration) %画散点图

scattter显示的不是很好,利用gscatter分组显示

gscatter(features.AspectRatio,features.Duration,features.Character)
根据标签来利用不同的颜色进行显示

建立模型

在这里插入图片描述
注意没有绝对准确的能够将所有类别分清楚的方法

1.创建模型

load featuredata.mat
features
testdata
knnmodel=fitcknn(features,"Character")
%features为导入的表的数据,Character表示表中的标签,(即响应变量,即想让模型预测的类别),范数的输出就是一个拟合好的模型
%注意这里直接写Character而不是features.Character

2.做出预测

在这里插入图片描述

%predClass = predict(model,newdata)
%输入是一个训练好的模型,以及要预测结果的测试集,注意这个测试集具有与训练集相同的响应变量
%输出是对每个测试样本的预测结果,组成一个数组
%给定的测试集中包含正确的分类结果,但是predict函数在预测时会忽略正确的变量,从而进行预测

predictions=predict(knnmodel,testdata)

算法选项

在这里插入图片描述
没懂

knnmodel = fitcknn(features,"Character","NumNeighbors",5)
predictions = predict(knnmodel,testdata)

评估模型

1.预测值与真值进行比较

load featuredata.mat
testdata
knnmodel = fitcknn(features,"Character","NumNeighbors",5);
predictions = predict(knnmodel,testdata)

% 进行评估
iscorrect=(predictions==testdata.Character)

2.计算精确度与误分类度

精确度
iscorrect=(predictions==testdata.Character)
accuracy=sum(iscorrect)/numel(predictions)

误分类度
misclassrate=sum(predictions~=testdata.Character)/numel(predictions)

混淆矩阵

混淆矩阵可视化准确性和误分类性
利用confusionchart函数可视化

confusionchart(ytrue,ypred)
yture 表示已知的真值标签向量
ypred 表示预测标签(结果)向量

confusionchart(testdata.Character,predictions

导入和预处理数据

多文本操作

有一个文件夹存储所有的数据,每个样本对应一个字母文件
在这里插入图片描述

1.创建数据存储

利用datastore函数

letterds=datastore("*_M_*.txt") %这里使用模糊处理

2.读取数据

从数据存储中读取数据,利用read函数,调用一次读取一个文件

data=read(letterds) %data是一个表

读取所有文件,利用readall函数

data=readall(letterds) %相当于把所有文件中的数据都综合成了一个表
plot(data.X,data.Y) 

添加数据转换

1.执行数据预处理

在这里插入图片描述

letterds = datastore("*_M_*.txt");
data = read(letterds);
data = scale(data);
plot(data.X,data.Y)
axis equal
plot(data.Time,data.Y)
ylabel("Vertical position")
xlabel("Time")

function data=scale(data)
    data.Time=(data.Time-data.Time(1))/1000;
    data.X=1.5*data.X;
end

2.转换后的数据存储

在这里插入图片描述
没懂

preprocds=transform(letterds,@scale) %直接对数据存储进行处理

%读取经处理后的所有数据
data=readall(preprocds); &变成一个新的表
plot(data.Time,data.Y)

3.规范化数据

在这里插入图片描述

function data=scale(data)
    data.Time=(data.Time-data.Time(1))/1000;
    data.X=1.5*data.X;
    data.X=data.X-mean(data.X,"omitnan"); %控制选项没懂
    data.Y=data.Y-mean(data.Y,"omitnan"); 
end

特征工程

统计特性

在这里插入图片描述

形状量化

在这里插入图片描述

当然,我可以为您介绍一下 MATLAB 机器学习教程。MATLAB 是一种强大的数值计算和数据分析工具,它提供了丰富的机器学习功能和工具箱,可以帮助您进行各种机器学习任务。 以下是一些常见的 MATLAB 机器学习教程和资源: 1. 官方文档和示例:MATLAB 官方网站提供了详细的文档和示例,涵盖了各种机器学习算法和工具的使用方法。您可以在官方网站上找到相关的教程和示例代码。 2. MATLAB 机器学习工具箱:MATLAB 提供了专门的机器学习工具箱,其中包含了各种常用的机器学习算法和函数。您可以通过使用这些工具箱来进行数据预处理、特征提取、模型训练和评估等任务。 3. 在线教程和课程:有许多在线教程和课程可以帮助您学习 MATLAB 机器学习。例如,Coursera 上有一门由 MATLAB 官方团队开设的《Practical Deep Learning for Coders》课程,该课程涵盖了深度学习的基础知识和实践技巧。 4. 社区支持:MATLAB 社区非常活跃,您可以在 MATLAB Answers 论坛上提问和寻求帮助。许多专家和用户会分享他们的经验和解决方案。 5. 书籍和参考资料:有很多优秀的书籍和参考资料可以帮助您深入学习 MATLAB 机器学习。例如,《MATLAB Machine Learning Recipes: A Problem-Solution Approach》和《Machine Learning with MATLAB: Supervised Learning and Classification》等。 希望以上资源能够帮助您开始学习 MATLAB 机器学习。如果您有更具体的问题或者需要进一步的帮助,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值