在matlab中,我们可以直接利用zscore(x)这个函数来将数据标准化。
其核心思想是:
z=(x-mean(x))./std(x)
对每行最小最大标准化
调用格式
[Y,PS] = mapminmax(X,YMIN,YMAX)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax(‘apply’,X,PS)
X = mapminmax(‘reverse’,Y,PS)
dx_dy = mapminmax(‘dx_dy’,X,Y,PS)
对于1和2的调用形式来说,X是预处理的数据,Ymin和Ymax是期望的每一行的最小值与最大值,FP是一个结构体成员主要是FP.ymin, FP.ymax.这个结构体就可以代替Ymin和Ymax,1和2的处理效果一样,只不过参数的带入形式不同。
x = 2:10;
[y,ps] = mapminmax(x,0,1);
y1 = mapminmax(x,ps);
而对于3式,在模式识别或者统计学里,PS是训练样本的数据的映射,即PS中包含了训练数据的最大值和最小值,这里的X是测试样本,对于测试样本来说,预处理应该和训练样本一致即最大值和最小值应该是训练集的最大值与最小值。假设y是测试样本,一共两个测试样本,则代码如下:
x=[2,3,4,5,6;7,8,9,10,11];
y=[2,3;4,5];
[xx,ps]=mapminmax(x,0,1);
mapminmax('apply',y,ps)
对于4式,是预处理之后的数据进行反转得到原始数据。
x=[2,3,4,5,6;7,8,9,10,11];
y=[2,3;4,5];
[xx,ps]=mapminmax(x,0,1);
yy=mapminmax('apply',y,ps);
mapminmax('reverse',yy,ps)
Process matrices by mapping each row’s means to 0 and deviations to 1
主要调用形式有:
[Y,PS] = mapstd(X,ymean,ystd)
[Y,PS] = mapstd(X,FP)
Y = mapstd(‘apply’,X,PS)
X = mapstd(‘reverse’,Y,PS)
dx_dy = mapstd(‘dx_dy’,X,Y,PS)
用法与mapminmaxx相似,可以参考mapminmax.
function [train,test] = split_train_test(X,test_ratio)
% x是原数据集,分出训练样本和测试样本
ndata = size(X,1);
%ndata样本数
num_test=ndata*test_ratio;
R = randperm(ndata);
%1到n这些数随机打乱得到的一个随机数字序列作为索引
test = X(R(1:num_test),:);
R(1:num_test) = [];
train = X(R,:);
clearvars
X= [0.7883 nan 0.8111 0.6587 0.6543 0.8259 0.8486 0.6834 0.8495 0.7846
0.7633 0.7287 0.7629 0.8552 0.7564 0.7455 0.7800 0.9490 0.8918 0.8954
0.4745 0.5126 0.8810 0.8903 0.8288 0.7850 0.8032 0.8862 0.3987 0.3970
0.8246 0.7603 0.6888 0.8977 0.7926 0.7856 0.6509 0.8902 0.6799 0.9877
0.8791 0.8736 0.8183 0.9446 0.9202 0.9263 0.9185 0.9505 0.8620 0.8873
0.9538 0.9257 0.9285 0.9434 0.9154 0.8871 0.9357 0.8760 0.9579 0.9741
0.8785 0.8542 0.8537 0.9027 0.8729 0.8485 0.8473 0.9044 0.8866 0.9035
0.6305 0.6187 0.6313 0.7415 0.6398 0.6142 0.5734 0.8980 0.6186 0.7382
0.8928 nan 0.5608 0.8419 0.8464 0.7616 0.8234 0.6384 0.9604 0.8514];
nanvalue = find(isnan(X));% nanvalue为缺失数据的总下标
[m,n] = find(isnan(X));% m为缺失数据所在行,n为缺失数据所在列
X(isnan(X)) = 0;% 缺失值置0,也可以用X(m,n)=0
对于特定的属性,即一组向量中的异常值检测。
筛选出多维度样本的异常值。