对数据进行规范化和计算K近邻一样经常使用,所以用MATLAB直接实现一个函数保存在博客上,这样每次使用的时候直接从这里复制一份就可以了,所以说博客对于个人来说也是一个移动的笔记,只要在一个有网络的地方就可以查阅。
normalize的MATLA函数代码实现如下所示,要求输入三个参数:数据矩阵,规范化后的最小值lowbound和规范化后的最大值upbound。其中数据矩阵要求每一行表示一个多维样本点。函数将输出一个范围在lowbound到upbound之间的新的数据矩阵。
function [ Result ] = normalize( Data,lowbound,upbound ) %将数据矩阵Data进行规范化 %新的上界是upbound,新的下界是lowbound %要求输入的数据矩阵中每一行表示一个多维样本点 msize = size(Data); Result = zeros(msize(1),msize(2));%存储结果 mins = Data(1,:);%储存每一维的最小值 maxs = Data(1,:);%储存每一维的最大值 %%%% % 计算每一维度的最小值与最大值 % %%%% for i = 1:msize(1) for j = 1:msize(2) if Data(i,j)maxs(j) maxs(j) = Data(i,j); end end end for i = 1:msize(1) for j = 1:msize(2) Result(i,j) = lowbound + (Data(i,j)-mins(j))/(maxs(j)-mins(j))*(upbound-lowbound); end end end
MATLAB其实是有现成的函数,也可以直接调用MATLAB中的库函数。
matlab 工具函数 —— normalize(归一化数据)——推荐
function [Samples2]=normalize(Samples) [M,N] = size(Samples); Samples2 = zeros(M,N); %初始化Samples2数组(M*N) for i=1:N allAtr = Samples(:,i); STD = std(allAtr); % 求标准差 MEAN = mean(allAtr); % 求均值 x = (allAtr-MEAN)/STD; Samples2(:,i)=x; end end