MATLAB官方机器学习入门教程

MATLAB官方入门教程

  • 项目描述
  • 分类工作流程
    • 导入数据
      • 1.导入数据
      • 2.查看变量
    • 处理数据
      • 1.矫正单位
      • 2.时间归一化
    • 特征提取
      • 1.分析提取特征
      • 2.查看特征
    • 建立模型
      • 1.创建模型
      • 2.做出预测
    • 算法选项
    • 评估模型
      • 1.预测值与真值进行比较
      • 2.计算精确度与误分类度
    • 混淆矩阵
  • 导入和预处理数据
    • 多文本操作
      • 1.创建数据存储
      • 2.读取数据
    • 添加数据转换
      • 1.执行数据预处理
      • 2.转换后的数据存储
      • 3.规范化数据
  • 特征工程
    • 统计特性
    • 形状量化

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

项目描述

MATLAB官方机器学习入门教程_第1张图片

分类工作流程

导入数据

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.矫正单位

MATLAB官方机器学习入门教程_第2张图片
什么意思没懂: 我的理解是写的时候,水平距离写一个单位,等于实际测量时的1.5个单位

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

2.时间归一化

MATLAB官方机器学习入门教程_第3张图片
没懂: 我的理解是这个时间值,是写一个字母记录的时间数据,左边的图表示的是任一起始时间点开始写完一个字母所用的时间,右边的图表示,(归一化操作)就是都假定从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.分析提取特征

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

%计算持续时间
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)
根据标签来利用不同的颜色进行显示

建立模型

MATLAB官方机器学习入门教程_第5张图片
注意没有绝对准确的能够将所有类别分清楚的方法

1.创建模型

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

2.做出预测

MATLAB官方机器学习入门教程_第6张图片

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

predictions=predict(knnmodel,testdata)

算法选项

MATLAB官方机器学习入门教程_第7张图片
没懂

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

导入和预处理数据

多文本操作

有一个文件夹存储所有的数据,每个样本对应一个字母文件
MATLAB官方机器学习入门教程_第8张图片

1.创建数据存储

利用datastore函数

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

2.读取数据

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

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

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

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

添加数据转换

1.执行数据预处理

MATLAB官方机器学习入门教程_第9张图片

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.转换后的数据存储

MATLAB官方机器学习入门教程_第10张图片
没懂

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

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

3.规范化数据

MATLAB官方机器学习入门教程_第11张图片

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官方机器学习入门教程_第12张图片

形状量化

MATLAB官方机器学习入门教程_第13张图片

你可能感兴趣的:(NG机器学习)