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

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

数据分析之前,我们通常需要先将数据标准化(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 的评价方法(如几何加权平均法)不适用。

#include <stdio.h>

int main()

{

int score, m

scanf("%d", &score)

while (score <0 || score >100){

printf("Error! Retry!\n")

scanf("%d", &score)

}

m= score / 10

if (m>= 9)

printf("Grade is A!\n")

switch(m){

case 0: printf("Grade is E!\n")break

case 1: printf("Grade is E!\n")break

case 2: printf("Grade is E!\n")break

case 3: printf("Grade is E!\n")break

case 4: printf("Grade is E!\n")break

case 5: printf("Grade is E!\n")break

case 6: printf("Grade is D!\n")break

case 7: printf("Grade is C!\n")break

case 8: printf("Grade is B!\n")break

}

return 0

}

扩展资料

其他实现输出成绩等级‘A'、’B‘、'C'、‘D'、'E’。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分一下为E的方法:

#include <stdio.h>

int main()

{

int score

scanf("%d", &score)

while (score <0 || score >100){

printf("Error! Retry!\n")

scanf("%d", &score)

}

if (score <60)

printf("Grade is E!\n")

else if (score >= 60 &&score <70)

printf("Grade is D!\n")

else if (score >= 70 &&score <80)

printf("Grade is C!\n")

else if (score >=80 &&score <90)

printf("Grade is B!\n")

else

printf("Grade is A!\n")

return 0

}

1. min-max归一化

   该方法是对原始数据进行线性变换,将其映射到[0,1]之间,该方法也被称为离差标准化(但是请注意,网上更多人喜欢把z-score称为标准化方法,把min-max称为归一化方法,然后在此基础上,强行给标准化(z-score)与归一化(min-max)划条界线,以显示二者之间的相异性。对!二者之间确实有很大的不同,这个我们后面会有介绍,但是这两个方法说到底还都是用来去除量纲的,都是无量纲化技术中的一员而已,所以,请不要纠结标准化与归一化这两个概念了)。

                          

   上式中,min是样本的最小值,max是样本的最大值。由于最大值与最小值可能是动态变化的,同时也非常容易受噪声(异常点、离群点)影响,因此一般适合小数据的场景。此外,该方法还有两点好处:

   1) 如果某属性/特征的方差很小,如身高:np.array([[1.70],[1.71],[1.72],[1.70],[1.73]]),实际5条数据在身高这个特征上是有差异的,但是却很微弱,这样不利于模型的学习,进行min-max归一化后为:array([[ 0. ], [ 0.33333333], [ 0.66666667], [ 0. ], [ 1. ]]),相当于放大了差异;

   2) 维持稀疏矩阵中为0的条目。

   使用方法如下:

from sklearn.preprocessing import MinMaxScaler

x = np.array([[1,-1,2],[2,0,0],[0,1,-1]])

x1 = MinMaxScaler().fit_transform(x)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11305542.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存