MATLAB中zscore函数是用什么方法对数据进行标准化的

请说明你答案的依据 老师说的或是参考书上看到的 有的话请列出 参考书名 还有本人菜鸟一个 若公式的话请把公式解释清楚

数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—最大标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
二、z-score 标准化
这种方法基于原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。将A的原始值x使用z-score标准化到x'。
z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
新数据=(原数据-均值)/标准差
用zscore函数
可以把数据进行z-score标准化处理。
用法为
Y=zscore(X)
x为标准化之前的数据,y为标准化后的数据
特点:
(1)样本平均值为0,方差为1;
(2)区间不确定,处理后各指标的最大值、最小值不相同;
(3)对于指标值恒定的情况不适用;
(4)对于要求标准化后数据 大于0 的评价方法(如几何加权平均法)不适用。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-08-14
希望对你有用

数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。一般常用的有以下几种方法。
(1) 最小-最大规范化对原始数据进行线性变换。假定MaxA与MinA分别表示属性A的最大与最小值。最小最大规范化通过计算

将属性A的值映射到区间[a, b]上的v。一般来说,将最小-最大规范化在用于信用指标数据上,常用的有以下两种函数形式:
a) 效益型指标(越大越好型)的隶属函数:

b) 成本型指标(越小越好型)的隶属函数:

(2) z-score规范化也称零-均值规范化。属性A的值是基于A的平均值与标准差规范化,A的值计算公式

(3) 小数定标规范化是通过移动属性A的小数点位置来实现的。小数点的移动位数依赖于A的最大绝对值,计算公式为

其中,j是使得MAX(|v|)<1的最小整数。例如A的值为125,那么|A|=125,则j=3,有v=0.125。
///////////////////////////////////////////////////////////////////////////////////////////////////
//C++实现的归一化和反归一化处理函数
///////////////////////////////////////////////////////////////////////////////////////////////////
void __fastcall TModelManage::TranslateData(TModel* pModel,int Id,double *Value,int Flag)
{
//转换函数类型
int iChgFunc;

//节点对应的最大、最小值
double dMaxValue,dMinValue;

//取节点配置信息:转换函数类型,最大值,最小值
GetNodeConfValue(pModel->ConfTable,Id,&iChgFunc,&dMaxValue,&dMinValue);
if(Flag==1) //仿真时不取边界值,以避免仿真结果误差太大
{
if(*Value<=(dMinValue*1.005))
*Value=dMinValue*1.005;
if(*Value>=(dMaxValue*0.995))
*Value=dMaxValue*0.995;
}
else
{
if(*Value<=dMinValue)
*Value=dMinValue;
if(*Value>=dMaxValue)
*Value=dMaxValue;
}

//线性函数转换,转换在0-1之内
if(iChgFunc==0)
{
*Value=(*Value-dMinValue)/(dMaxValue-dMinValue);
}
//用atan函数转换在0-1之内
else if(iChgFunc==2)
{
*Value=atan(*Value)*2/M_PI;
}
//用log函数转换
else if(iChgFunc==1)
{
if(*Value<=1)
*Value=0;
else
*Value=log10(*Value); //用log10函数转换(缩小)
if(dMaxValue>1)
*Value=*Value/log10(dMaxValue); //转换为0-1之间
}
//不用转换
else if(iChgFunc==3)
{
*Value=*Value;
}

*Value=((0.5-0.001)/0.5)*(*Value)+0.001; //用线性函数把数据转换为0.001-0.0.9995之间
}

///////////////////////////////////////////////////////////////////////////////////////////////////
//反数据转换,主要是针对仿真结果要反算回实际预测的值
void __fastcall TModelManage::UnTranslateData(TModel* pModel,int Id,double *Value,int Flag)
{
//转换函数类型
int iChgFunc;

//节点对应的最大、最小值
double dMaxValue,dMinValue;

//取节点配置信息:转换函数类型,最大值,最小值
GetNodeConfValue(pModel->ConfTable,Id,&iChgFunc,&dMaxValue,&dMinValue);
*Value=(((*Value)-0.001)*0.5)/(0.5-0.001); //对应于---->用线性函数把数据转换为0.001-0.0.9995之间

//反线性函数转换
if(iChgFunc==0)
{
*Value=(*Value)*(dMaxValue-dMinValue)+dMinValue;
}
//用tan函数转换
else if(iChgFunc==2)
{
*Value=tan(*Value)*M_PI/2;
}
//用反log函数转换
else if(iChgFunc==1)
{
*Value=pow(10,(*Value)); //用反对数方式函数转换(放大)
}
else if(iChgFunc==3)
{
*Value=*Value; //不用转换
}
}

///////////////////////////////////////////////////////////////////////////////////////////////////
第2个回答  2015-06-29
具体参见http://www.matlabsky.com/viewthread.php?tid=9300&page=1&extra=#pid130180
哈哈终于问到有技术含量的问题了,这个函数是统计工具箱的函数
我以前在写pls(偏线性回归)算法的时候使用过zscore这个函数。
MATLAB提供这个函数也是用来对数据pls数据进行进行预处理的,即归一化的
下面是MATLAB自带的帮助说明
Z = zscore(X) returns a centered, scaled version of X, the same size as X. For vector input x, output is the vector of z-scores z = (x–mean(x))./std(x). For matrix input X, z-scores are computed using the mean and standard deviation along each column of X. For higher-dimensional arrays, z-scores are computed using the mean and standard deviation along the first non-singleton dimension.
MATLAB执行代码就是 z = (x–mean(x))./std(x)
第3个回答  2010-08-14
具体参见http://www.matlabsky.com/viewthread.php?tid=9300&page=1&extra=#pid130180

哈哈终于问到有技术含量的问题了,这个函数是统计工具箱的函数

我以前在写pls(偏线性回归)算法的时候使用过zscore这个函数。

MATLAB提供这个函数也是用来对数据pls数据进行进行预处理的,即归一化的

下面是MATLAB自带的帮助说明

Z = zscore(X) returns a centered, scaled version of X, the same size as X. For vector input x, output is the vector of z-scores z = (x–mean(x))./std(x). For matrix input X, z-scores are computed using the mean and standard deviation along each column of X. For higher-dimensional arrays, z-scores are computed using the mean and standard deviation along the first non-singleton dimension.

MATLAB执行代码就是 z = (x–mean(x))./std(x)本回答被提问者采纳
第4个回答  2010-08-14
(V-mean(V))/std(V)
——————————————————
就是和平均值的差再除以标准差。
zscore的帮助里写得很清楚的,你自己看看就知道了。