MATLAB官方入门教程

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

官方教程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官方机器学习入门教程相关推荐

  1. python教学视频下载-Python机器学习入门教程全套视频下载【传智播客】

    Python机器学习入门教程 初级共3天课 本套教程是机器学习的入门课程,主要介绍一些经典的传统机器学习算法,如分类算法:KNN算法,朴素贝叶斯算法,逻辑回归,决策树算法以及随机森林;回归算法:线性回 ...

  2. ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布

    ActiveReports 报表控件官方中文入门教程 (2)-创建.数据源.浏览以及发布 原文:ActiveReports 报表控件官方中文入门教程 (2)-创建.数据源.浏览以及发布 本篇文章将阐述 ...

  3. MIT博士小姐姐的机器学习入门教程开课!碎片时间服用,每周一更 | 资源

    铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI 厌倦了千篇一律的机器学习教学课程怎么办?没有太多时间预算怎么学? 来点不一样的. 现在,两位MIT博士小姐姐搞了一套机器学习入门教程ML T ...

  4. python 分类_简单机器学习入门教程:用Python解决简单的水果分类问题

    在这篇机器学习入门教程中,我们将使用Python中最流行的机器学习工具scikit- learn,在Python中实现几种机器学习算法.使用简单的数据集来训练分类器区分不同类型的水果. 这篇文章的目的 ...

  5. MATLAB 2019 快速入门教程(官方手册翻译)(1/4)

    1 快速入门 1.1 MATLAB 产品描述 1.1.1 数学.图形与编程 1.1.2 规模.集成与部署 1.1.3 关键特性 1.2 MATLAB 界面基础知识 1.3 矩阵与数组 1.3.1 建立 ...

  6. 分布式 PostgreSQL 集群(Citus),官方快速入门教程

    多租户应用程序 在本教程中,我们将使用示例广告分析数据集来演示如何使用 Citus 来支持您的多租户应用程序. 注意 本教程假设您已经安装并运行了 Citus. 如果您没有运行 Citus,则可以使用 ...

  7. Camunda 官方快速入门教程(中文完整版)

    本文为Camunda官网快速入门部分的中文版本 原文地址: https://docs.camunda.org/get-started/quick-start/ 0.介绍 本教程将指导您使用Camund ...

  8. Camunda 官方快速入门教程中文版(完整版)

    本文为Camunda官网快速入门部分的中文版本 原文地址: https://docs.camunda.org/get-started/quick-start/ 0.介绍 本教程将指导您使用Camund ...

  9. RabbitMQ官方中文入门教程(PHP版) 第三部分:发布/订阅(Publish/Subscribe)

    2019独角兽企业重金招聘Python工程师标准>>> 发布/订阅 在上篇教程中,我们搭建了一个工作队列.每个任务之分发给一个工作者(worker).在本篇教程中,我们要做的之前完全 ...

  10. 使用Python编写机器学习入门教程

    本文要点 \\ 当输入变量和我们尝试去预测的输出变量之间是线性相关时,或者当解释模型的能力很重要时(例如,隔离任何一个输入变量对于预测的影响),逻辑回归对于二进制分类是比较合适的选择.\\t 决策树和 ...

最新文章

  1. java作图哪个是x轴_java – 主要以X和Y轴绘制的圆圈,为什么?
  2. python help()函数(查看特定模块、关键词、函数等用法)
  3. linux中的和,|和||
  4. [Qt教程] 第47篇 进阶(七) 定制Qt帮助系统
  5. Microsoft WPF VS Adobe Apollo
  6. Windows操作系统,启动Tomcat之后DOS窗口乱码处理
  7. navicat 结合快捷键 非常好用
  8. (转)Delaunay三角剖分
  9. 记TensorFlow项目开源一周年
  10. 【转】Delphi7程序调用C#写的DLL解决办法
  11. MIPS中lw指令运行时间最长
  12. 基于阶梯式Tent混沌和模拟退火的樽海鞘群算法
  13. 关于javascript和typescript学习总结
  14. matlab 怎么画时域图,matlab画e时域波形图
  15. CWND和HWND之间的关系和转换 和获取方法
  16. Win32病毒入门(一)
  17. 高手的内心应该是平静的
  18. Jquery--02--案例
  19. 微时代备受认可的的营销理念——全微营销
  20. 深入理解AMS之Activity管理

热门文章

  1. 像中文的罗马音字体复制_罗马音字体复制下载
  2. 0/0型极限等于多少_高数求极限的一些总结
  3. 个人微信api接口调用,微信好友收发消息
  4. 全网最详细ANSYS Maxwell16下载及安装
  5. 三菱伺服驱动器示例_三菱PLC控制伺服电机编程实例
  6. 阿里架构师直言:“没有实战都是纸上谈兵”,Redis实战PDF分享
  7. 别找了,这就是你心心念念想要的年会活动抽奖软件
  8. 10秒钟的Cat 6A网线认证仪_DSX2-5000 CH
  9. (xsinx)/(1+(cosx)^2)在0到π上的定积分
  10. 2022年智慧城市大脑及智慧城市驾驶舱大数据资源平台建设总体架构方案