美文网首页
13. 数据变换:考试成绩要求正态分布合理吗?

13. 数据变换:考试成绩要求正态分布合理吗?

作者: 进击的原点 | 来源:发表于2019-02-23 15:39 被阅读0次

    正态分布

    正态分布也叫作常态分布,就是正常状态下,呈现分布的情况。正态分布曲线反映了随机变量的分布规律。理论上的正态分布曲线是一条中间高,两端逐渐下降且完全对称的钟形曲线

    image.png

    数据变换在数据分析中的角色

    数据挖掘前的准备工作:


    image.png

    数据变换是数据准备的重要环节,常用的变换方法有:

    1. 数据平滑: 去除数据的噪声,将连续数据离散化。可采用分箱,聚类和回归的方法。
    2. 数据聚集: 对数据进行汇总,在SQL中有些聚集函数可以供我们操作,如Max,Sum等。
    3. 数据概化: 将数据由低的概念抽象成较高的概念,减少数据复杂度。比如上海,杭州,深圳,北京可以概化为中国。
    4. 数据规范化: 使属性数据按比例缩放,将原来的数值映射到一个新的特定区域,常用Min-Max规范化,Z-core规范化,按小数定标规范化。
    5. 属性构造: 构造出新的属性成为新的属性集中。

    数据规范的几种方法

    • Min-Max规范化
      将原始数据变换到[0,1]空间,用公式表示就是:新数值 = (原数值 - 极小值)/(极大值 - 极小值)
    • Z-Score规范化
      将数据规范到0均值,1方差的标准正态分布上,减少百分制80和500分制80的数据值差异问题
      新数值 = (原数值 - 均值)/ 标准差
    • 小数定标规范化
      将数据转化为[-1,1]区间中,小数定标规范化通过移动属性A的值的小数点位置进行规范化。小数点的移动位数依赖于A的最大绝对值。
      新数值 = 原数值 / 最大绝对值位数

    Python 的 SciKit-Learn 库使用

    • Min-Max规范化
    # coding:utf-8
    from sklearn import preprocessing
    import numpy as np
    # 初始化数据,每一行表示一个样本,每一列表示一个特征
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # **将数据进行 [0,1] 规范化**
    min_max_scaler = preprocessing.MinMaxScaler()
    minmax_x = min_max_scaler.fit_transform(x)
    print (minmax_x)
    

    运行结果:

    [[0.         0.         0.66666667]
     [1.         1.         1.        ]
     [0.         1.         0.        ]]
    
    
    • Z-Score规范化
    # coding:utf-8
    from sklearn import preprocessing
    import numpy as np
    # 初始化数据,每一行表示一个样本,每一列表示一个特征
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    
    # 将数据进行 Z-Score 规范化
    scaled_x = preprocessing.scale(x)
    print (scaled_x)
    

    运行结果:

    [[-0.70710678 -1.41421356  0.26726124]
     [ 1.41421356  0.70710678  1.06904497]
     [-0.70710678  0.70710678 -1.33630621]]
    
    • 小数定标规范化
    # coding:utf-8
    from sklearn import preprocessing
    import numpy as np
    # 初始化数据
    x = np.array([[ 0., -3.,  1.],
                  [ 3.,  1.,  2.],
                  [ 0.,  1., -1.]])
    # 小数定标规范化
    j = np.ceil(np.log10(np.max(abs(x))))
    scaled_x = x/(10**j)
    print (scaled_x)
    

    运行结果:

    [[ 0.  -0.3  0.1]
     [ 0.3  0.1  0.2]
     [ 0.   0.1 -0.1]]
    

    数据挖掘中数据变换比算法选择更重要

    我们要让数据满足一定的规律,达到规范性的要求,便于进行挖掘,这是数据变换的作用。


    image.png

    相关文章

      网友评论

          本文标题:13. 数据变换:考试成绩要求正态分布合理吗?

          本文链接:https://www.haomeiwen.com/subject/bdkpyqtx.html