精华内容
下载资源
问答
  • 数据标准化/归一化normalization

    万次阅读 多人点赞 2016-08-19 09:42:40
    这里主要讲连续型特征归一化的常用方法。 连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。 离散数据处理参考[数据预处理:独热编码(One-Hot ...

    http://blog.csdn.net/pipisorry/article/details/52247379

    这里主要讲连续型特征归一化的常用方法。

    连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。

    离散数据处理参考[数据预处理:独热编码(One-Hot Encoding)]。

    基础知识参考:

    [均值、方差与协方差矩阵]

    [矩阵论:向量范数和矩阵范数]

    数据的标准化(normalization)和归一化

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

        目前数据标准化方法有多种&#

    展开全文
  • 今天小编就为大家分享一篇使用sklearn进行对数据标准化归一化以及将数据还原的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 一、标准化归一化的区别归一化其实就是标准化的一种方式,只不过归一化是将数据映射到了[0,1]这个区间中。标准化则是将数据按照比例缩放,使之放到一个特定区间中。标准化后的数据的均值=0,标准差=1,因而标准...

    在对模型训练时,为了让模型尽快收敛,一件常做的事情就是对数据进行预处理。

    这里通过使用sklearn.preprocess模块进行处理。


    一、标准化和归一化的区别

    归一化其实就是标准化的一种方式,只不过归一化是将数据映射到了[0,1]这个区间中。

    标准化则是将数据按照比例缩放,使之放到一个特定区间中。标准化后的数据的均值=0,标准差=1,因而标准化的数据可正可负。


    二、使用sklearn进行标准化和标准化还原

    原理:

    即先求出全部数据的均值和方差,再进行计算。

    最后的结果均值为0,方差是1,从公式就可以看出。

    但是当原始数据并不符合高斯分布的话,标准化后的数据效果并不好。


    导入模块

    from sklearn.preprocessing import StandardScaler
    from sklearn.preprocessing import MinMaxScaler
    from matplotlib import gridspec
    import numpy as np
    import matplotlib.pyplot as plt


    通过生成随机点可以对比出标准化前后的数据分布形状并没有发生变化,只是尺度上缩小了。

    cps = np.random.random_integers(0, 100, (100, 2))
    
    ss = StandardScaler()
    std_cps = ss.fit_transform(cps)
    
    gs = gridspec.GridSpec(5,5)
    fig = plt.figure()
    ax1 = fig.add_subplot(gs[0:2, 1:4])
    ax2 = fig.add_subplot(gs[3:5, 1:4])
    
    ax1.scatter(cps[:, 0], cps[:, 1])
    ax2.scatter(std_cps[:, 0], std_cps[:, 1])
    
    plt.show()

    sklearn.preprocess.StandardScaler的使用:

    先是创建对象,然后调用fit_transform()方法,需要传入一个如下格式的参数作为训练集。

    X : numpy array of shape [n_samples,n_features]Training set.
    data = np.random.uniform(0, 100, 10)[:, np.newaxis]
    ss = StandardScaler()
    std_data = ss.fit_transform(data)
    origin_data = ss.inverse_transform(std_data)
    print('data is ',data)
    print('after standard ',std_data)
    print('after inverse ',origin_data)
    print('after standard mean and std is ',np.mean(std_data), np.std(std_data))
    通过invers_tainsform()方法就可以得到原来的数据。

    打印结果如下:

    可以看到生成的数据的标准差是1,均值接近0。

    data is  [[15.72836992]
     [62.0709697 ]
     [94.85738359]
     [98.37108557]
     [ 0.16131774]
     [23.85445883]
     [26.40359246]
     [95.68204855]
     [77.69245742]
     [62.4002485 ]]
    after standard  [[-1.15085842]
     [ 0.18269178]
     [ 1.12615048]
     [ 1.22726043]
     [-1.59881442]
     [-0.91702287]
     [-0.84366924]
     [ 1.14988096]
     [ 0.63221421]
     [ 0.19216708]]
    after inverse  [[15.72836992]
     [62.0709697 ]
     [94.85738359]
     [98.37108557]
     [ 0.16131774]
     [23.85445883]
     [26.40359246]
     [95.68204855]
     [77.69245742]
     [62.4002485 ]]
    after standard mean and std is  -1.8041124150158794e-16 1.0

    三、使用sklearn进行数据的归一化和归一化还原

    原理:

    从上式可以看出归一化的结果跟数据的最大值最小值有关


    使用时类似上面的标准化

    data = np.random.uniform(0, 100, 10)[:, np.newaxis]
    mm = MinMaxScaler()
    mm_data = mm.fit_transform(data)
    origin_data = mm.inverse_transform(mm_data)
    print('data is ',data)
    print('after Min Max ',mm_data)
    print('origin data is ',origin_data)

    结果:

    G:\Anaconda\python.exe G:/python/DRL/DRL_test/DRL_ALL/Grammar.py
    data is  [[12.19502214]
     [86.49880021]
     [53.10501326]
     [82.30089405]
     [44.46306969]
     [14.51448347]
     [54.59806596]
     [87.87501465]
     [64.35007178]
     [ 4.96199642]]
    after Min Max  [[0.08723631]
     [0.98340171]
     [0.58064485]
     [0.93277147]
     [0.47641582]
     [0.11521094]
     [0.59865231]
     [1.        ]
     [0.71626961]
     [0.        ]]
    origin data is  [[12.19502214]
     [86.49880021]
     [53.10501326]
     [82.30089405]
     [44.46306969]
     [14.51448347]
     [54.59806596]
     [87.87501465]
     [64.35007178]
     [ 4.96199642]]
    
    Process finished with exit code 0
    


    其他标准化的方法:

    上面的标准化和归一化都有一个缺点就是每当来一个新的数据的时候就要重新计算所有的点。

    因而当数据是动态的时候可以使用下面的几种计算方法:

    1、arctan反正切函数标准化:


    2、ln函数标准化


    展开全文
  • 数据转化为libsvm标准格式,将每一行或每一列的矩阵按行归一化到(-1,1)
  • ARCGIS数据处理标准化归一化的处理工具箱
  • 图像数据标准化归一化

    千次阅读 2020-09-01 14:20:27
    2、深度学习训练—详解图像数据标准化归一化 https://mp.weixin.qq.com/s/BH9TrDjuql0fcvuTQmTFWQ 3、机器学习之数据归一化 https://mp.weixin.qq.com/s/7jef0OCtTjySsHP5s0h5yw ...

    链接:

    1、标准化和归一化,请勿混为一谈,透彻理解数据变换

    https://blog.csdn.net/weixin_36604953/article/details/102652160

    2、深度学习训练—详解图像数据标准化与归一化

    https://mp.weixin.qq.com/s/BH9TrDjuql0fcvuTQmTFWQ

    3、机器学习之数据归一化

    https://mp.weixin.qq.com/s/7jef0OCtTjySsHP5s0h5yw

    4、为什么要做特征归一化和标准化

    https://www.cnblogs.com/shine-lee/p/11779514.html

     

    2020年8月28号

    数据预处理——标准化/归一化(实例)https://zhuanlan.zhihu.com/p/135473375 

    展开全文
  • Kmeans聚类①——数据标准化&归一化&正则化

    万次阅读 多人点赞 2019-06-14 20:55:34
    在进行机器学习之前,经常需要对训练数据进行标准化/归一化/正则化,为什么呢? **1)去除量纲的影响,将有量纲的数值变成无量纲的纯数值; 2)是去除各特征之间数值差异过大的问题,比如一个向量(uv:10000, rate:...
    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    数据分析目录:
    一、Excel系列——四大常用函数及十大高级图表
    二、SQL系列——性能优化/多表关联/窗口分析函数等
    三、统计学系列——概率论/置信区间/相关/抽样等
    四、Pandas系列——数据读取/清洗/规整/分析实战等
    五、Python做图系列——箱型图/散点图/回归图/热力图等
    六、业务积累系列——流水预测/精细化运营/排序算法等
    七、Kmeans系列——原理/评价指标/RFM实战等
    八、决策树系列——算法原理/调参/python实现/项目实战
    九、贝叶斯系列——算法原理/3种模型/文本分类实战
    十、神经网络系列——BP算法原理/最小二乘法/项目实战

    在进行机器学习之前,经常需要对训练数据进行标准化/归一化/正则化,为什么呢?(**文末有大礼赠送**

    1、去除量纲的影响,将有量纲的数值变成无量纲的纯数值;
    2、解决各特征之间数值差异过大的问题,比如一个向量(uv:10000, rate:0.03,money: 20),如果要与其它向量一起计算欧氏距离或者余弦相似度时,会向uv倾斜非常严重,导致其余2个特征对模型的贡献度非常低
    3、提升训练的速度,防止过拟合

    一、Z-score标准化

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    Z-score标准化是将数据变成均值为0,标准差为1的分布,此方法比较适合于本身较符合正太分布的数据集。有2种方法,1是基于python本身函数计算,如下:

    import pandas as pd
    data = pd.read_csv('chat.csv',encoding='gbk')
    df = data.values
    x = df[:,:4]
    print(x[:3])
    

    在这里插入图片描述
    通过调用x.mean和x.std(),可以看到均值为0,标准差为1

    x = (x-x.mean())/x.std()
    print(x.mean(),x.std())
    print(x[:3])
    

    在这里插入图片描述
    另1种是直接调用sklearn库

    from sklearn import preprocessing
    t= preprocessing.StandardScaler().fit(x)
    x=t.transform(x)
    print(x.mean(),x.std())
    print(x[:3])
    

    在这里插入图片描述
    可以看出均值也是0,标准差为1。建议用后者,因为后续可以直接用模型对测试数据进行标准化,这样能保证训练集和测试集是一样的标准方法

    二、最大最小归一化

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    有一个很形象的比喻,如果有一次期末考试题特别难,大家都在59分以下,学校觉得此成绩不太妥当,想进行整体提升,但是怎么提能保证公平性呢?

    最大最小化就出场了:最终分数 = (原始分数-最小分数)/(最大分数-最小分数)*100

    假设最大分数为50,最小为10,那么最终的最大分数 = (50-10)/(50-10)*100=100分
    如果不乘以100,那么数值区间就在[0,1]之间,如果想区间在[-1,10],可以将分子中的最小值改为均值

    x = (x-x.min())/(x.max()-x.min())
    print(x.max(),x.min())
    print(x[:3])
    

    在这里插入图片描述

    x = (x-x.mean())/(x.max()-x.min())
    print(x.max(),x.min())
    print(x[:3])
    

    在这里插入图片描述
    调用skearn库更方便

    t= preprocessing.MinMaxScaler().fit(x)
    x=t.transform(x)
    print(x.max(),x.min())
    print(x[:3])
    

    在这里插入图片描述
    最大最小化的优点是能确保所有的数据都在理想的区间内,缺点就是当加入新的数据后, 可能会导致最大最小值变化,从而全部的数据都会重新计算

    三、正则化

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    在训练数据不够多时,常常会导致过拟合,正则化主是防止过拟合的一种方法,常用的就L1和L2正则化

    ① L1正则化:将每一个样本的各向量绝对值之和作为范数,再用每个向量去除了这个范数,就得到这个样本L1正则化后的向量;
    ② L2正则化:将每一个样本的向量先平方和再开方作为范数,再相除

    如果用公式表达就是,p就是指1或者2
    ||x||p=(|x1|p+|x2|p+…+|xn|p)(1/p)
    正则化是针对行进行的,且正则化后的特征值均<1

    举例
    设定一个变量X1(10,20,30)和一个变量X2(1,2,3)
    L1正则化后:X1(1/6, 2/6,3/6),X2(1/6, 2/6,3/6),两者正则化的结果一模一样
    L2正则化后:X1(10/37, 20/37,30/37),X2(1/3.4,2/3.4,3/3.4),结果有一些差异

    t= preprocessing.Normalizer().fit(x)
    x=t.transform(x)
    print(x[:3]) 
    

    在这里插入图片描述

    四、归一化实战

    公众号: 数据小斑马,关注即可获得价值1000元的数据分析学习资料
    

    背景:我们基于观看UV、回头率、观看UV、送礼UV和送礼金额,通过一个特定的算法得到了平台每一位主播的评分,直接通过最大最小归一化再乘以*1000的方式缩放至0-1000区间。

    结果:发现主播评分在900以上的非常少,大部分都集中在300以下,如图:
    在这里插入图片描述
    这样的话除了评分较高的几位主播,其它的几百位主播根本拉不开差距,这样的评分不能如实反应出主播的质量差异,要优化

    ① 先开1/3方缩小差距再最大最小归一化

    
    ```python
      import pandas as pd
        import json
        import numpy as np
        import matplotlib.pyplot as plt
        import math
        
        # 读取评分
        with open('score.txt','r') as f:
            data = f.read()
        print(data)
        data = data.replace("'","\"") # json文件格式不正确,key是单引号,换成双引号
        print(data)
        data = json.loads(data) 
        
        data = pd.Series(data).sort_values(ascending=False)
        # 原始分数
        fig = plt.figure()
        ax1 = fig.add_subplot(151)
        ax1.hist(data)
        
        # 先开1/3方再最大最化归一化
        data1 = pow(data,1/3)
        data1 = (data1-data1.min())/(data1.max()-data1.min())*1000
        ax2 = fig.add_subplot(152)
        ax2.hist(data1)
    

    在这里插入图片描述

    与原始评分相比,确实要分散一些,效果有提升

    ② logistic函数直接缩放至[0,1],再乘以1000

    #  sigmoid曲线 logistic * 1000
    data2 = 1/(1+np.exp(-data)) * 1000
    ax3 = fig.add_subplot(153)
    ax3.hist(data2)
    

    在这里插入图片描述
    评分竟然由底部聚集变成了顶部聚集,也没法拉开差距了,不行

    ③ log10归一化* 1000,为了防止出现负数,给每个分数+1

    data3 = np.log(data+1.0)/np.log(data.max()+1)*1000
    ax4 = fig.add_subplot(154)
    ax4.hist(data3)
    

    在这里插入图片描述
    哎,这个不就是我们理想的分布嘛,已经非常满足我们的需求了,但是为了全面,我还是做了下一种尝试

    ④ atan函数归一化

    # atan函数归一化
    data = pd.DataFrame(data,columns=['score'])
    data['score'] = data['score'].apply(lambda x: math.atan(float(x)+0.1)*2.0/np.pi * 1000)
    ax5 = fig.add_subplot(155)
    ax5.hist(data['score'])
    plt.show()
    

    在这里插入图片描述
    这个与logistic函数非常像,都是向顶部聚集,所以最后坚定地选择了log10函数,完美!


    本人互联网数据分析师,目前已出ExcelSQLPandasMatplotlibSeaborn机器学习统计学个性推荐关联算法工作总结系列。


    微信搜索 " 数据小斑马" 公众号,回复“数据分析"就可以免费领取数据分析升级打怪 15本必备教材

    在这里插入图片描述

    展开全文
  • 数据标准化归一化

    千次阅读 2018-08-05 14:19:34
    标准化standardization: 又被称为0均值归一化归一化到0均值,方差为1的数据集中,公式中符号代表原始数据集的方差和均值 两者本质都是一种线性变换 区别是归一化仅有极值决定,将数据压缩到【0,1】范围内,而...
  • 一、数据归一化的好处:数据标准化归一化的区别和联系: 在进行处理数据的时候,标准化的方法是比较多的,其中数据归一化是一种常见的数据的标准化,只不过标准化只是将数据进行规范到一个范围之内,对于数据的...
  • 文章目录内容介绍标准化&归一化红酒数据集进行标准化&归一化标准化处理对PCA主成分分析的影响 ...数据标准化 同样我们都需要对原始数据进行处理,少不了的就是 standardization (或者叫做 Z-score normaliz
  • 数据标准化归一化

    千次阅读 2017-01-07 11:02:24
    数据标准化归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的...
  • 标准化归一化1、标准化(Standardization)和归一化(Normalization)概念1.1、定义1.2、联系和差异一、联系二、差异1.3、标准化归一化的多种方式2、标准化归一化的原因、用途3、什么时候Standardization,什么...
  • 一、数据标准化归一化) 首先,数据标准化处理主要包括数据同趋化处理(中心化处理)和无量纲化处理。同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑...
  • 数据标准化归一化)处理

    千次阅读 2016-06-29 10:30:25
    数据标准化归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的...
  • 今天小编就为大家分享一篇使用sklearn进行对数据标准化归一化以及将数据还原的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧在对模型训练时,为了让模型尽快收敛,一件常做的事情就是对...
  • 两个常用的数据标准化归一化)及Matlab实现

    万次阅读 多人点赞 2018-08-26 21:59:14
    数据标准化归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果。为了消除指标(特征)之间的量纲影响,数据集需要进行数据标准化处理,以解决...
  • 鸢尾花数据可视化,PCA降到两维后,对数据标准化归一化 用PCA降维,后输出降维后每一列的贡献率,各列贡献相加为1. // An highlighted block if __name__ == "__main__": iris = datasets.load_iris() # 获取...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,702
精华内容 21,880
关键字:

数据标准化以及归一化