当前位置:网站首页>机器学习--手写英文字母2--导入与处理数据
机器学习--手写英文字母2--导入与处理数据
2022-07-28 10:15:00 【可爱的我啊】
目录
1.创建数据存储
手写示例文件
每封信的样本都是从许多不同的志愿者那里收集的。有些人提供了每封信的不止一个样本。每个样本都保存在一个单独的文件中,所有文件都存储在一个文件夹中。文件名的格式如下
user003_B_2.txt
这个文件将包含志愿者指定的“user003”所写的字母B的第二个样本。
letterds = datastore("*_M_*.txt")
data = read(letterds)
plot(data.X,data.Y)
再次使用read,读取datastore里的第二个文件
data = read(letterds)
plot(data.X,data.Y)

使用readall函数将所有文件中的数据导入到名为data的表中。通过绘制Y与X的对比图使数据可视化。
data = readall(letterds)
plot(data.X,data.Y)
2.添加预处理函数
通常,您需要对原始数据的每个样本应用一系列预处理操作。自动化此过程的第一步是创建一个自定义函数,该函数应用特定的预处理操作。
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")在脚本末尾创建一个名为scale的函数,该函数执行以下操作:
data.Time=(data.Time-data.Time(1))/1000;
data.X=1.5*data.X;
因为这些命令直接修改变量数据,所以函数应该使用数据作为输入和输出变量。
注意,脚本的第三行调用scale函数。在创建此函数之前,您的脚本不会运行。
还要注意,本地函数必须位于脚本的末尾。这意味着您将在此交互中按顺序编辑脚本部分。节标题显示在每个任务中要编辑脚本的哪个节。
function dataout = scale(data)
data.Time = (data.Time - data.Time(1))/1000;
data.X = 1.5*data.X;
dataout = data
end


目前,仍需要手动调用函数。为了自动化数据导入和预处理,您希望数据存储在读取数据时应用此函数。您可以使用转换后的数据存储来执行此操作。transform函数接受一个数据存储和一个函数作为输入。它返回一个新的数据存储作为输出。此转换的数据存储在导入数据时应用给定函数。
背景
要将函数用作另一个函数的输入,请在函数名的开头添加@符号,创建函数句柄。
transform(ds,@myfun)
函数句柄是对函数的引用。如果没有@符号,MATLAB会将函数名解释为对该函数的调用。
使用transform函数创建名为predocds的转换数据存储。此数据存储应将scale函数应用于letterds引用的数据。
preprocds = transform(letterds,@scale)
现在,每当从预印本数据存储中读取数据时,应自动应用缩放功能。
使用readall函数导入所有数据。通过将Y变量绘制为时间函数,检查预处理函数是否应用于每个文件。
data = readall(preprocds)
plot(data.Time,data.Y)



字母的位置对分类并不重要。重要的是形状。对于许多机器学习问题,一个常见的预处理步骤是对数据进行规范化。
典型的规范化包括按平均值移位(使移位数据的平均值为0)或将数据移位并缩放到固定范围(例如[-1,1])。在手写字母的情况下,将x和y数据的平均值都转换为0将确保所有字母都围绕同一点居中。
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);
data.Y = data.Y - mean(data.Y);
end任何涉及NaNs的计算(包括默认使用mean等函数)都将导致NaN。这在机器学习中是很重要的,因为在机器学习中,数据中的值经常丢失。在手写数据中,只要作者从写字板上提起笔,就会出现NaN。
您可以使用“omitnan”选项来使用诸如mean ignore missing values之类的统计函数。
mean(x,“omitnan”)
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本节代码
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")
preprocds = transform(letterds,@scale)
data = readall(preprocds)
plot(data.Time,data.Y)
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
边栏推荐
- SQL Server 2016 learning records - data update
- SQL Server 2016 学习记录 ---视图
- SQL Server 2016 learning records - connection query
- 5. Dynamic programming -- Fibonacci series
- What kind of knowledge payment system functions are more conducive to the development of the platform and lecturers?
- SuperMap iServer发布管理以及调用地图服务
- string matching
- gcc: error trying to exec 'as': execvp: No such file or directory
- uni-app项目目录、文件作用介绍 及 开发规范
- 4.调整数组顺序使奇数位于偶数前面
猜你喜欢

SQL Server 2016 学习记录 --- 数据定义

uni-app项目目录、文件作用介绍 及 开发规范

利用正则表达式从文件路径中匹配文件名

SQL Server 2016 学习记录 --- 集合查询

gcc: error trying to exec 'as': execvp: No such file or directory

最短路专题

SQL Server 2016学习记录 --- 单表查询

SQL Server 2016 学习记录 --- 嵌套查询

Get to know SuperMap idesktop for the first time

14. Double pointer - the container that holds the most water
随机推荐
SQL Server 2016 学习记录 --- 数据更新
Huawei takes a 10% stake in fullerene technology, a graphene material manufacturer
SQL Server 2016 learning records - connection query
14. Double pointer - the container that holds the most water
集群为什么需要root权限
string matching
10. The penultimate node in the linked list
阿里云镜像地址
华为入股石墨烯材料厂商富烯科技,持股10%
LIBCMTD.lib
MySQL的SQL TRACE一例
漏洞分析丨HEVD-0x8.IntegerOverflow[win7x86]
Leetcode -- minimum number of rotation array
剑指offer
Continue to write the greatest work based on modelarts [play with Huawei cloud]
不登高山,不知天之高也;不临深溪,不知地之厚也
PL/SQL server语法详解
Add new startup logo and startup / shutdown animation in mt6735
C language secondary pointer explanation and example code
读写分离备机备份报错