【信用评分预测模型(二)】python数据标准化处理


前言

在进行分析之前,要对数据进行合适的处理,数据基本统计分析和标准化是同时进行的。
其中数据基本统计中,对于标称型数据,统计缺失值数量,分级情况,众数以及众数占比。对于数值型数据,主要统计了均值,标准差,缺失值数量,最小值,最大值,中位数。

标准化与否对结果也会有一定的影响,我们先观察下现在标准化的状态。


一、原始数据分析

1.原数据展示

在求得原始数据的均值、方差、标准差、中位数、最小值、最大值之后,利用散点图将数据展示出来。
在这里插入图片描述
通过上图可以看出,除了x2,x7变量外,其他数据的波动性很强,分析时容易产生误差。故需要对此数据集进行标准化或归一化处理。

2.标准化和归一化选取

标准化、归一化的区别:

  • 归一化是标准化的一种,它的缩放仅与最大、最小值的差别有关;输出范围在0—1间
  • 标准化缩放和每个值都有关系,通过方差体现出来。当数据更集中时,数据标准化后更分散;数据分布很广时,数据标准化后会更集中。输出范围是一个特定的区间,在-∞—+∞。且均值为0,标准差为1的数据
  • 如果对输出结果范围有要求,用归一化;
  • 如果数据较稳定,不存在极端的最大最小值,用归一化;
    由于此数据较为不稳定

经过上述分析,此数据波动较大,存在极端最大最小值,故选用标准化去处理数据。

二、标准化处理

1.意义

数据标准化其实是对向量X按比例压缩再平移,本质上是一种线性变换。线性变换又很多良好的性质,这决定了对数据变换后的数据反而能提高数据效率。比如:线性变换不改变原始数据的数值排序。这保证了数据变换后依然有意义,因为线性变换保持线性组合与线性关系式不变。
并且在数据标准化后,数据的稳定性得到保证,对后续分析有很大的作用。

2.代码

result = {
    
    }
for col in df.columns[:-1]:
    result[col]=[]
    print(x[col].value_counts(1,ascending=True))  # 算每列标称属性的频率,得到众数所占比例
    # # print(' max: ',x[col].max(),'min:',x[col].min(),'median:',x[col].median())
    print(col,'\n  mean:',x[col].mean(),' std: ',x[col].std())
    print(' max: ',x[col].max(),'min:',x[col].min(),'median:',x[col].median())

    for each in x[col]:
        result[col].append((each-x[col].mean())/x[col].std())
        result[col].append(each/(x[col].max()))


在标准化后数据取得了很好的稳定性:
在这里插入图片描述
数据在进行归一化后,最大值与中间值,最低值差距较小,对后续结果的影响不大。

总结

在这一步完成了空缺值填充,异常值处理,数据标准化处理,为后续分析打下基础。

猜你喜欢

转载自blog.csdn.net/m0_65157892/article/details/129523883