使用matlab对数据集进行归一化处理
数据集归一化 Matlab随笔简要记录工作内容数据集归一化方法选择开工模式识别与机器学习作业END简要记录工作内容1、对数据集进行归一化处理2、输出mat + 创建TFrecords3、模式识别与机器学习作业数据集归一化方法选择数据集为1030个500 * 2的样本数据集(标记为A)物理意义:1、二维——实际上是信号的实部和虚部分开存储2、(幅度)App = sqrt( 实部2+...
·
使用matlab对数据集进行归一化处理
简要记录工作内容
1、对数据集进行归一化处理
2、输出mat + 创建TFrecord
数据集归一化方法选择
数据集为1030个500 * 2的样本
数据集(标记为A)物理意义:
1、二维——实际上是信号的实部和虚部分开存储
2、(幅度)App = sqrt( 实部2+虚部2)是信号的幅度
注意:因为涉及虚部实部,所以有2种归一化方法
方法 1 虚部实部分别算最大值,分别归一化到同一数值。 不可取,实部虚部归一到同一水平会打乱角度信息!!!!角度信息也是特征,避免使数据集损失特征!!
方法 2 算幅值App的最大值,在原始复数矩阵里所有元素同÷最大值*同一数值(1000),可以避免丢掉角度特征
综上 我们使用方法2进行数据归一化。
开工
话不多说,上代码
读取部分
clc;close all;clear all;
A = xlsread('测试用数据集(5类)-均衡20181105 -206个.xlsx');
A = single(A);
归一化
maxApp = max(abs(A),[],2);
Anormal = zeros(size(A));
[lenA,tempp ] =size(A);
for j = 1:lenA
Anormal(j,:) = A(j,:) * 2000 / maxApp(j,1);
end
输出jpg查看效果
Arn = Anormal(:,1:2:end) ; %实部(经过归一化)
Ain = Anormal(:,2:2:end) ; %虚部(经过归一化)
Apn = Ain.^2 + Arn.^2;
Appn = sqrt(Apn); %幅度(经过归一化)
for i = 1:5:1030 %输出图像jpg
filename = ['.jpg'];
h_fig = figure('Visible', 'off');
plot(t,Appn(i,:)); %你的画图语句
xlabel('t/s');
ylabel('采样值');
title('信号时域图');
axis([0 0.016 0 3000]);
a = num2str(i);
saveas(h_fig, strcat(a,filename));
close(h_fig); %关闭figure,清空内存
end
效果对比
使用前~:
使用后~:
效果很明显哈。
下一步:输出到.mat
Anormal = single(Anormal);
Ai = zeros(206 ,500 ,2);
Ai = single(Ai);
for j = 0:4
cc=randperm(206); %随机取1-206的数 用来随机分配train和test
k=0;
for i = cc(1:206)
Ai(i,:,1) = Anormal(j*206+i,1:2:end);
Ai(i,:,2) = Anormal(j*206+i,2:2:end);
a = num2str(i);
b = num2str(j);
temp = Ai(i,:,:);
data = squeeze(temp); %1*500*2 ---> 500*2 去掉单独位
if k<50 %取前50个随机数 输出到test
save(strcat('D:\project\matlab data preprocessing\test\',b,'\',a),'data') ;
else %剩下的输出到train
save(strcat('D:\project\matlab data preprocessing\train\',b,'\',a),'data') ;
end
k =k +1;
end
end
较上篇文章多加了一个循环,用来把数据分门别类的放到对应类别的文件夹里,省去很多人工操作。
END
心态把握住,虽然很累,但是享受每天都在进步的感觉!
更多推荐
已为社区贡献1条内容
所有评论(0)