精华内容
下载资源
问答
  • Matlab数据标准化实现

    2021-04-21 15:45:07
    在多属性综合评价问题中,为了消除量纲差异带来指标不可公度性问题,往往需要对原始评价矩阵进行标准化处理,通过将不同量纲进行变换,变为无量纲的标准化指标。考虑到原始评价矩阵可能同时有多种类型的指标,比如,...

    在多属性综合评价问题中,为了消除量纲差异带来指标不可公度性问题,往往需要对原始评价矩阵进行标准化处理,通过将不同量纲进行变换,变为无量纲的标准化指标。考虑到原始评价矩阵可能同时有多种类型的指标,比如,某个评价问题中可能同时有正向指标(越大越好)、逆向指标(越小越好)和中性指标(最优值为给定区间),故以下程序只针对某个指标值的列向量进行标准化处理;如果要处理整个评价矩阵,则根据指标类型分别对各个指标单独处理,然后再组成成一个标准评价矩阵,如:标准评价矩阵S=[std_1, std_2, …, std_n],其中,std_1,std_2,…,std_n为各指标的标准化数值。

    (一)向量归一化法,转换到区间[0,1]

    function std_attrValues= vecStd(attrValues)

    if iscolumn(attrValues)~=1  %如果不是指标数据列向量,则提示错误

    warndlg('输入数据必需为列向量,数据标准化处理失败,返回空值!','失败!');

    std_attrValues=[];      %调用错误时返回空值

    else

    m=length(attrValues);         %列向量长度

    std_attrValues=ones(m,1);     %初始化标准化属性值,与属性值一样是个m×1的列向量

    sqAttr=attrValues.^2;         %原数据每个值的平方

    sqSumByAttr=sum(sqAttr,1);    %列向量的平方和

    sqrtByAttr=sqrt(sqSumByAttr); %对平方和开根号

    if sqSumByAttr==0

    warndlg('指标值全为0,不能采用向量归一化法进行标准化处理,返回空值,请选择其他方法!','失败!');

    std_attrValues=[];   %调用错误时返回空值

    else

    for i=1:m

    std_attrValues(i,1)=attrValues(i,1)/sqrtByAttr;  %计算标准化属性值

    end

    disp('数据标准化处理成功!');

    end

    end

    end

    (二)线性比例变换法,分正向型和反向型分别转换到区间[0,1]

    function std_attrValues=linearStd(attrValues,attrType)

    if nargin<2

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标类型,1为正向指标,2为逆向指标。','失败!');

    std_attrValues=[];   %调用错误时返回空值

    else

    if iscolumn(attrValues)~=1  %如果不是指标数据列向量,则提示错误

    warndlg('输入数据必需为列向量,数据标准化处理失败,返回空值!','失败!');

    std_attrValues=[];      %调用错误时返回空值

    else

    m=length(attrValues);        %列向量长度

    std_attrValues=ones(m,1);    %初始化标准化属性值,与属性值一样是个m×1的列向量

    maxByAttr=max(attrValues);   %列向量的最大值

    minByAttr=min(attrValues);  %列向量的最小值

    switch(attrType)

    case1   %正向指标

    if maxByAttr==0

    warndlg('正向指标最大值为0,不能采用线性比例变换法进行标准化处理,返回空值,请选择其他方法!','失败!');

    std_attrValues=[];   %调用错误时返回空值

    else

    for i=1:m

    std_attrValues(i,1)=attrValues(i,1)/maxByAttr;  %计算标准化属性值

    end

    disp('数据标准化处理成功!');

    end

    case2           %逆向指标

    zeroFlag=0;  %是否存在0的标记

    for i=1:m

    if attrValues(i,1)==0

    zeroFlag=1; %遇到0就设为1

    break;      %只要遇到0就退出循环

    else

    zeroFlag=0;

    end

    end

    if zeroFlag==1

    warndlg('逆向指标存在0值,不能采用线性比例变换法进行标准化处理,返回空值,请选择其他方法!','失败!');

    std_attrValues=[];   %调用错误时返回空值

    else

    for i=1:m

    std_attrValues(i,1)=minByAttr/attrValues(i,1);  %计算标准化属性值

    end

    disp('数据标准化处理成功!');

    end

    otherwise

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标类型,1为正向指标,2为逆向指标。','失败!');

    std_attrValues=[];   %调用错误时返回空值

    end

    end

    end

    end

    (三)极差变换法(标准0-1变换),分正向型和反向型分别转换到区间[0,1]

    function std_attrValues=minmaxStd(attrValues,attrType)

    if nargin<2

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标类型,1为正向指标,2为逆向指标。','失败!');

    std_attrValues=[];   %调用错误时返回空值

    else

    if iscolumn(attrValues)~=1  %如果不是指标数据列向量,则提示错误

    warndlg('输入数据必需为列向量,数据标准化处理失败,返回空值!','失败!');

    std_attrValues=[];      %调用错误时返回空值

    else

    m=length(attrValues);        %列向量长度

    std_attrValues=ones(m,1);    %初始化标准化属性值,与属性值一样是个m×1的列向量

    maxByAttr=max(attrValues);   %列向量的最大值

    minByAttr=min(attrValues);   %列向量的最小值

    if maxByAttr-minByAttr==0

    warndlg('指标最大值和最小值相等,不能采用标准0-1变换进行标准化处理,返回空值!请选择其他方法!','失败!');

    std_attrValues=[];   %调用错误时返回空值

    else

    switch(attrType)

    case 1   %正向指标

    for i=1:m

    std_attrValues(i,1)=(attrValues(i,1)-minByAttr)./(maxByAttr-minByAttr);  %计算标准化属性值

    end

    disp('数据标准化处理成功!');

    case 2    %逆向指标

    for i=1:m

    std_attrValues(i,1)=(maxByAttr-attrValues(i,1))./(maxByAttr-minByAttr);  %计算标准化属性值

    end

    disp('数据标准化处理成功!');

    otherwise

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标类型,1为正向指标,2为逆向指标。','失败!');

    std_attrValues=[];   %调用错误时返回空值

    end

    end

    end

    end

    end

    (四)最优值为给定数值的标准化,转换到区间[0,1]

    function std_attrValues =optValue(attrValues,opt,lowLmt,upLmt)

    if nargin<4

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标最优值及上下极限(下极限

    std_attrValues=[];  %调用错误时返回空值

    else

    if iscolumn(attrValues)~=1  %如果不是指标数据列向量,则提示错误

    warndlg('输入数据必需为列向量,数据标准化处理失败,返回空值!','失败!');

    std_attrValues=[];      %调用错误时返回空值

    else

    m=length(attrValues);        %列向量长度

    std_attrValues=ones(m,1);    %初始化标准化属性值,与属性值一样是个m×1的列向量

    if (lowLmt

    for i=1:m

    if (attrValues(i,1)<=lowLmt) || (attrValues(i,1)>=upLmt)

    std_attrValues(i,1)=0;

    elseif (lowLmt

    std_attrValues(i,1)=1-(opt-attrValues(i,1))/(opt-lowLmt);

    elseif (attrValues(i,1)) == opt

    std_attrValues(i,1)=1;

    else

    std_attrValues(i,1)=1-(attrValues(i,1)-opt)/(upLmt-opt);

    end

    end

    disp('数据标准化处理成功!');

    else

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标最优值及上下极限(下极限

    std_attrValues=[];  %调用错误时返回空值

    end

    end

    end

    end

    (五)最优值为给定区间的标准化,转换到区间[0,1]

    function std_attrValues =optInterval(attrValues,lowLmt,upLmt,optLow,optUp)

    if nargin<5

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标上下极限及最优值区间(下极限

    std_attrValues=[];  %调用错误时返回空值

    else

    if iscolumn(attrValues)~=1  %如果不是指标数据列向量,则提示错误

    warndlg('输入数据必需为列向量,数据标准化处理失败,返回空值!','失败!');

    std_attrValues=[];      %调用错误时返回空值

    else

    m=length(attrValues);        %列向量长度

    std_attrValues=ones(m,1);    %初始化标准化属性值,与属性值一样是个m×1的列向量

    if (lowLmt

    for i=1:m

    if (attrValues(i,1)<=lowLmt) || (attrValues(i,1)>=upLmt)

    std_attrValues(i,1)=0;

    elseif (lowLmt

    std_attrValues(i,1)=1-(optLow-attrValues(i,1))/(optLow-lowLmt);

    elseif (optLow<=attrValues(i,1)) && (attrValues(i,1)<=optUp)

    std_attrValues(i,1)=1;

    else

    std_attrValues(i,1)=1-(attrValues(i,1)-optUp)/(upLmt-optUp);

    end

    end

    disp('数据标准化处理成功!');

    else

    warndlg('函数调用错误,数据标准化处理失败,返回空值!请正确设置指标上下极限及最优值区间(下极限

    std_attrValues=[];  %调用错误时返回空值

    end

    end

    end

    end

    展开全文
  • 最近在代码中看见两种数据处理方式,有的用mapminmax,有的用zscore.故在此稍作总结。 首先第一个不同mapminmax是对行进行处理,zscore是对列进行处理。 第二点不同是处理原理不同,mapminmax原理为 y=(YMAX-...

    最近在代码中看见两种数据处理方式,有的用mapminmax,有的用zscore.故在此稍作总结。

    首先第一个不同mapminmax是对行进行处理,zscore是对列进行处理。

    第二点不同是处理原理不同,mapminmax原理为

    y=(YMAX-YMIN)*(X-XMIN)/(XMAX_XMIN)+YMIN.其中YMAX,YMIN默认为1 -1,也可自行设置。XMAX,XMIN是矩阵每行的最大值和最小值。

    zscore原理为y=(x-mean(x))./std(x)

    其次还有mapstd,是将每一行映射为0均值,1为方差的数据。

    【Y,ps】=mapstd(x,ymean,ystd)

    展开全文
  • matlab数据标准化程序

    2020-12-22 14:48:59
    size(x)M=[m(1,1)*ones(319,1),m(1,2)*ones(319,1),m(1,3)*ones(319,1),m(1,4)*ones(319,1),m(1,5)*ones(319,1),m(1,6)*ones(319,1),m(1,7)*ones(319,1),m(1,8)*ones(319,1),m(1,9)*ones(319,1),m(1,10)*ones(319,1)...

    size(x)

    M=[m(1,1)*ones(319,1),m(1,2)*ones(319,1),m(1,3)*ones(319,1),m(1,4)*ones(319,1),m(1,5)*one

    s(319,1),m(1,6)*ones(319,1),m(1,7)*ones(319,1),m(1,8)*ones(319,1),m(1,9)*ones(319,1),m(1,10

    )*ones(319,1),m(1,11)*ones(319,1)];

    M=[m(1,1)*ones(319,1),m(1,2)*ones(319,1),m(1,3)*ones(319,1),m(1,4)*ones(319,1),m(1,5)*one

    s(319,1),m(1,6)*ones(319,1),m(1,7)*ones(319,1),m(1,8)*ones(319,1),m(1,9)*ones(319,1),m(1,10

    )*ones(319,1),m(1,11)*ones(319,1)];

    v=std(x);

    V=[v(1,1)*ones(319,1),v(1,2)*ones(319,1),v(1,3)*ones(319,1),v(1,4)*ones(319,1),v(1,5)*ones(319

    ,1),v(1,6)*ones(319,1),v(1,7)*ones(319,1),v(1,8)*ones(319,1),v(1,9)*ones(319,1),v(1,10)*ones(31

    9,1),v(1,11)*ones(319,1)];

    m=mean(x);

    M=[m(1,1)*ones(319,1),m(1,2)*ones(319,1),m(1,3)*ones(319,1),m(1,4)*ones(319,1),m(1,5)*one

    s(319,1),m(1,6)*ones(319,1),m(1,7)*ones(319,1),m(1,8)*ones(319,1),m(1,9)*ones(319,1),m(1,10

    )*ones(319,1),m(1,11)*ones(319,1)];

    v=std(x);

    V=[v(1,1)*ones(319,1),v(1,2)*ones(319,1),v(1,3)*ones(319,1),v(1,4)*ones(319,1),v(1,5)*ones(319

    ,1),v(1,6)*ones(319,1),v(1,7)*ones(319,1),v(1,8)*ones(319,1),v(1,9)*ones(319,1),v(1,10)*ones(31

    9,1),v(1,11)*ones(319,1)];

    Z=(x-M)./V;

    展开全文
  • 使用matlab处理数据标准化一般有两种方法,分别实现如下: 方法一:极值标准化 这里的min表示极小值,max表示极大值通过以下公式处理后,矩阵元素落在[0,1]之间 %定义函数,根据极大值和极小值进行标准化 funct

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。

    使用matlab处理数据标准化一般有两种方法,分别实现如下:
    方法一:极值标准化
    这里的min表示极小值,max表示极大值通过以下公式处理后,矩阵元素落在[0,1]之间在这里插入图片描述
    %定义函数,根据极大值和极小值进行标准化
    function out=mystand(A)
    out=[];
    n=size(A,1);%获取行数
    minA = min(A); %获取极小值
    maxA = max(A);%获取极大值
    out = (A-repmat(minA,n,1))./repmat(maxA-minA,n,1);%使用repmat对每个元素进行重复处理,记得这里一定要用./
    end
    调用:
    A=randn(20,20)*2+1;
    mystand(A);
    运行结果如下:
    在这里插入图片描述
    可以看到所有的数据都落到[0,1]之间。
    方法二:Z标准化,也叫z-score标准化
    思路:这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。
    经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
    在这里插入图片描述
    其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
    实现代码如下:
    function out=myzscore(A)
    temp =[];
    demesion=size(A);
    meanA=mean(A);
    stdA=std(A);
    for i=1:numel(A)
    temp = [temp (A(i)-meanA)/stdA];
    end
    out=reshape(temp,demesion);
    end
    调用:
    A=randn(20,20)*2+1;
    myzscore(A);
    结果:

    在这里插入图片描述
    作图发现符合正态分布

    展开全文
  • 离差标准化:对原始数据的一种线性变换,将原始数据的数值映射到【0,1】区间,公式如下:用x到最小值的距离除以最大值到最小值的距离,也可理解为最小值为起点,最大值为终点,各点到起点的距离占总路程的比率。...
  • matlab矩阵标准化

    2021-04-21 12:52:45
    源程序 3.1 cwstd.m %cwstd.m,用总和标准化标准化矩阵 function std=cwstd(vector) cwsum=sum(vector,1); [a,b]=size(vector); %对列求和 %矩阵......会用命令eig把二次型标准化 会用命令eig判断二次型的正定性 Ce...
  • Matlab数据可视

    千次阅读 多人点赞 2021-03-28 15:16:38
    Matlab数据可视内容:数据探索与可视综合实践直方图、箱线图、散点图:直方图箱线图散点图 内容:数据探索与可视综合实践 利用Matlab对UCI‐Aliva分类数据集进行初步探索和分析: (1)针对第A、B、C三个类别...
  • %% 数据规范clear;% 参数初始:data = '../data/normalization_data.xls';%% 读取数据[data,~] = xlsread(data);%% 最小-最大规范data_scatter = mapminmax(data',0,1); % 数据需要转置data_scatter = data_...
  • 输入/输出数据的预处理尺度变换尺度变换也称归一化或标准化,是指通过变换处理将网络的输入/输出数据限制在[0,1]或[-1,1]区间内。进行尺度变换的原因有:(1)网络的各个输入数据常常具有不同的物理意义和不同的量纲。...
  • matlab归一化&标准化

    2021-04-22 19:11:10
    数据规范中的归一化与标准化:A.归一化 vs. 标准化归一化:要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。一般指将...
  • 几个要说明的函数接口:[Y,PS] = mapminmax(X)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS)用实例来讲解,测试数据 x1 = [1 2 4], x2 = [5 2 3];>> [y,ps] = mapminmax...
  • matlab特征向量标准化

    2021-04-18 17:06:13
    % S1: S2: S3: S4: AHP 的 ...函数作用 (4) ——用总和标准化标准化矩阵——计算相关系数矩阵;计算特征值和特征向量;对主成分进行排序;计算 各特征值贡献率;挑选主成分(累计贡献率大于 85%......特征多项式的根...
  • 1.数据矩阵单位方法一:%%矩阵的列向量单位%输出矩阵Y为单位矩阵%方法即是矩阵中所有元素除以该元素所在列向量的二范数clc;clear;X=[790 3977 849 1294 1927 1105 204 1329768 5037 1135 1330 1925 1459 275 ...
  • P=[123 15.0 1.10 70 0.2 0;123 15.0 1.10 70 0.2 0;145 16.0 1.50 120 0.4 0;130 15.0 1.40 135 0.4 0;110 12.0 1.40 100 0.4 0;148 18.0 1.80 95 0.8 0;225 14.0 1.90 130 0.8 0;308 10.0 1.00 160 0.6 0;...
  • 一、数据标准化处理 在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个...
  • 先来看自带函数zscore的使用 >> A=[1 2 3;4 5 6]; >> [B,A_mean,A_std]=zscore(A) B = -0.7071 -0....1),1)+repmat(A_mean,size(A,1),1) ans = 1 2 3 4 5 6所以在进行标准化和反标准化的时候,一定要记住均值和方差。
  • [Y,PS] = mapminmax(X)[Y,PS] = mapminmax(X,FP)Y = mapminmax('apply',X,PS)X = mapminmax('reverse',Y,PS)复制代码用实例来讲解,测试数据x1 = [1 2 4], x2 = [5 2...
  • 请问在excel里可以直接做归一处理吗归一是一种计算的方式,即将纲的表达式,经换,化为纲的表达式,成为标量。 在多种计算中都经常用到这种方法。归一是一种无量纲处理手段,使物理系统数值的绝对值变成某种...
  • 背景在数据挖掘数据处理过程中,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过...
  • 数据标准化归化处理数据的标准化在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲...
  • 首先要进行数据标准化处理,要对一些地区的经纬度进行标准化处理后,然后算出模糊相似矩阵,最后在推出聚类图。现在我想问的是怎么对一组经纬度进行标准化处理,是直接用zscore函数吗。下面附数据,请各位大佬帮忙...
  • 您提供的Wikipedia代码段是正确的,可以使用以下MATLAB代码对图像进行规范:%% Create an Example Image:rand('seed', 1982);n = 16;myImg= rand(n,n)*.2 + .5;%% Normalize the Image:myRange = getrangefromclass...
  • 五、MATLAB数据可视

    2021-11-16 21:55:19
    五、MATLAB数据可视 声明: 笔记是学习慕课网《科学计算与MATLAB语言》课程和刘卫国主编的《MATLAB程序设计与应用(第3版)》后的个人总结,方便自己以后巩固和复习! 5.1 二维图形 5.1.1、绘制二维曲线的基本...
  • 源程序 3.1 cwstd.m %cwstd.m,用总和标准化标准化矩阵 function std=cwstd(vector) cwsum=sum(vector,1); [a,b]=size(vector); %对列求和 %矩阵......会用命令eig把二次型标准化 会用命令eig判断二次型的正定性 Ce...
  • 我有几个矩阵,每个都有相同的列数,但...一个小例子:如何在Matlab中将几个矩阵中的每个对应列标准化为-1和1之间的值?Matrix1:C1 C2 C3Val1 6 7 1Val2 3 9 -7Val3 -12 -22 -4Matrix2:C1 C2 C3Val1 5 19 -2Val2 4 ...
  • title()—— 给图形加标题 xlabel ()—— 给x轴加标注 ylabel ()—— 给y轴加标注 ...画函数z=f(x,y)所代表的三维空间曲面,需要做以下的数据准备工作: 确定自变量的取值范围和取值间隔。 x=x1:dx:x2; y=y1:dy:y2
  • 转自:http://blog.sina.com.cn/s/blog_b3509cfd0101bt9u.htmlMatlab神经网络工具箱自带了两个数据标准化处理命令,一个是mapminmax,另一个是mapstd。下面,分别对这两个命令进行解析。一、mapminmaxmapminmax按行...
  • 数据标准化.归一化处理

    千次阅读 2021-01-11 19:40:16
    数据的标准化在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。。处理主要包括数据两个方面。处理主要解决数据问题,对不同性质指标直接加总不能正确反映不同作用力的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,721
精华内容 11,488
关键字:

matlab数据标准化

matlab 订阅