有些时候我们需要对数据去除量纲,例如对数据聚类之前、或者使用神经网络模型预测时。
下面我们介绍两种常见的方法:
方法1:Min-Max Scaling
方法2:Z-score Normalization
假设原来的数据是x:
x = [3 5 6 2 1];
给大家举例,假设原来的数据为[3 5 6 2 1],最小值为1,最大值为6,因此将数据中的每个数都减去最小值1,然后再除以5(由6-1计算得到),就能够得到特征缩放的结果:[0.4 0.8 1 0.2 0].
代码如下:
xmin = min(x);
xmax = max(x);
new_x = (x - xmin)/(xmax-xmin);
disp(new_x)
代码如下:
x_mean = mean(x);
x_std = std(x); % 一般是样本标准差
new_x = (x - x_mean) / x_std;
disp(new_x)
如果x是一个矩阵,要对每一列分别标准化,那么可以采用下面的代码:
x = [12 1 7;
12 20 4;
17 16 10;
3 16 17;
7 3 13];
% 方法1:Min-Max Scaling
xmin = min(x);
xmax = max(x);
new_x = (x - xmin)./(xmax-xmin);
disp(new_x)
% 方法2:Z-score Normalization
x_mean = mean(x);
x_std = std(x); % 一般是样本标准差
new_x = (x - x_mean) ./ x_std;
disp(new_x)
事实上只需要将原来代码中的除法变成./即可。
在线性代数中,只有两个大小完全相同的矩阵才可以进行相加,而在MATLAB中,只要两个矩阵的大小兼容,就能够进行计算。
以矩阵的加法为例,下表我们给出了MATLAB支持的五种算术运算的兼容模式: