精华内容
下载资源
问答
  • 一、标准化和归一化的区别归一化其实就是标准化的一种方式,只不过归一化是将数据映射到了[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函数标准化


    展开全文
  • 本文测试使用Pandas使用的是Spyder,python3.6版本,已经安装好pandas包。测试数据已放云盘:链接:...1数据标准化数据按比例缩放,使之落入到特定区间,一般我们使用0-1标准化。公式如下: X∗=x−minmax−mi...

    本文测试使用Pandas使用的是Spyder,python3.6版本,已经安装好pandas包。测试数据已放云盘:链接:https://pan.baidu.com/s/1zozpY2BUTIvEJKf238leZg 密码:44zg。如需按照numpy,可以百度搜索如何安装。

    1数据标准化

    将数据按比例缩放,使之落入到特定区间,一般我们使用0-1标准化。公式如下:

    X=xminmaxmin

    #导包
    import pandas;
    from pandas import read_csv
    
    df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data13.csv")
    
    scale=(df.score-df.score.min())/(df.score.max()-df.score.min())

    数据计算前后对比
    这里写图片描述

    这里写图片描述

    2 数据分组

    根据数据分析对象的特征,按照一定数值指标,把数据分析对象划分为不同的区间部分来进行研究,以揭示其内在的联系和规律性。这里我们可以使用cut函数,cut(series,bins,right=True,labels=NULL),其中:

    series:需要分组的数据

    bins:分组的划分数组

    right:分组的时候,右边是否闭合

    labels:分组的自定义标签,可以不自定义

    #导包
    import pandas;
    from pandas import read_csv
    
    df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data14.csv",sep="|")
    
    bins=[min(df.cost)-1,20,40,60,80,100,max(df.cost)+1]
    
    labels=['20以下','20到40','40到60','60到80','80到100','100以上']
    
    result=pandas.cut(df.cost,bins=bins,right=False,labels=labels)

    数据处理前后对比:

    这里写图片描述

    这里写图片描述

    将对应的数据进行了标注。

    3 日期转换

    将字符型的日期格式的数据,转换成日期型数据的过程,使用date=to_datetime(dateString,format)

    属性 注释
    %Y 代表年份
    %m 代表月份
    %d 代表日期
    %H 代表小时
    %M 代表分钟
    %S 代表秒
    #导包
    from pandas import read_csv
    from pandas import to_datetime
    
    df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data15.csv",encoding='utf8')
    
    df_dt=to_datetime(df.注册时间,format="%Y/%m/%d")

    数据处理前后对照

    这里写图片描述

    这里写图片描述

    4日期格式化

    将日期型的数据,按照给定的格式,转为字符型的数据。日期格式化函数:apply(lambda x:处理逻辑),datetime.strftime(x,format) ,这里的format与时间转化相同。

    #导包
    from pandas import read_csv
    from pandas import to_datetime
    from datetime import datetime
    
    df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data16.csv",encoding='utf8')
    
    df_dt=to_datetime(df.注册时间,format="%Y/%m/%d")
    
    df_dt_str=df_dt.apply(lambda x: datetime.strftime(x,"%d-%m-%Y"))

    时间转换前后对比

    这里写图片描述

    5日期抽取

    从日期格式里,抽取出需要的部分属性。使用的发函数:datetime列.dt.property

    属性 注释
    second 1-60:秒,从1开始,到60
    minute 1-60:分钟,从1开始,到60
    hour 1-24:小时,从1开始,到24
    day 1-31:一个月中的第几天,从1开始,最大31
    month 1-12:月份,从1开始,到12
    year 年份
    weekday 1-7:一周中的第几天,从1开始,最大为7
    #导包
    from pandas import read_csv
    from pandas import to_datetime
    
    df=read_csv(r"C:\Users\JackPi\Desktop\pandas\data\data17.csv",encoding='utf8')
    
    df_dt=to_datetime(df.注册时间,format="%Y/%m/%d")
    
    s_y=df_dt.dt.year
    s_s=df_dt.dt.second
    s_m=df_dt.dt.minute
    s_h=df_dt.dt.hour
    s_d=df_dt.dt.day
    s_M=df_dt.dt.month
    s_w=df_dt.dt.weekday

    原始数据,转换数据对比

    这里写图片描述

    这里写图片描述
    这里写图片描述

    展开全文
  • 常用的数据标准化方法

    万次阅读 2016-06-13 14:46:39
    数据标准化(normalization)是将数据按照一定规则缩放,使之落入一个小的特定区间。这样去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是0-1标准化...

    数据的标准化(normalization)是将数据按照一定规则缩放,使之落入一个小的特定区间。这样去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。其中最典型的就是0-1标准化和Z标准化,当然,也有一些其他的标准化方法,用在不同场景,这里主要介绍几种常用的方法。

    1、Min-Max标准化(Min-Max normalization)

    也称离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:

    yi=ximin{xj}max{xj}min{xj},(1in,1jn)

    其中max{xj}为样本数据的最大值,min{xj}为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    2、Z-score 标准化(zero-mean normalization)

    也叫标准差标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

    yi=xixs,(1in)

    其中x为所有样本数据的均值,s 为所有样本数据的标准差。

    经过 Z-score 标准化后,各变量将有约一半观察值的数值小于0,另一半观察值的数值大于0,变量的平均数为0,标准差为1。经标准化的数据都是没有单位的纯数量。它是当前用得最多的数据标准化方法。如果特征非常稀疏,并且有大量的0(现实应用中很多特征都具有这个特点),Z-score 标准化的过程几乎就是一个除0的过程,结果不可预料。

    3、归一标准化

    yi=xin1x2i,(1in)

    则新序列 y1,y2,,yn[0,1] 且无量纲并且显然有niyi=1.

    归一化方法在确定权重时经常用到。针对实际情况,也可能有其他一些量化方法,或者要综合使用多种方法,总之最后的结果都是无量纲化。

    展开全文
  • 数据预处理——归一化标准化

    千次阅读 2018-05-08 17:38:33
    数据标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。 去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权 最典型的就是数据的归一化处理,...

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。

    去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权

    最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from sklearn import preprocessing 
    % matplotlib inline

    0-1标准化

    又叫Max-Min标准化,公式:

    x=xminmaxmin
    # 创建数据
    df = pd.DataFrame({'value1':np.random.rand(100)*10,
                       'value2':np.random.rand(100)*100})
    print(df.head())
    print('---------------')
    
    def maxmin (df,*cols):
        df_m = df.copy()
        for col in cols:
            ma = df[col].max()
            mi = df[col].min()
            df_m[col + '_m'] = (df[col] - mi) / (ma - mi)
        return df_m
    df1 = maxmin(df,'value1','value2')
    print(df1.head())
         value1     value2
    0  7.363287  15.749935
    1  5.713568  33.233757
    2  6.108123  21.522650
    3  0.804442  85.003204
    4  6.387467  21.264910
    ---------------
         value1     value2  value1_m  value2_m
    0  7.363287  15.749935  0.740566  0.151900
    1  5.713568  33.233757  0.574296  0.329396
    2  6.108123  21.522650  0.614062  0.210505
    3  0.804442  85.003204  0.079521  0.854962
    4  6.387467  21.264910  0.642216  0.207888
    
    # 使用 sklearn中的 scale 函数
    minmax_scaler = preprocessing.MinMaxScaler()   # 创建 MinMaxScaler对象
    df_m1 = minmax_scaler.fit_transform(df)    #  标准化处理
    df_m1 = pd.DataFrame(df_m1,columns=['value1_m','value2_m'])
    df_m1.head()
    value1_m value2_m
    0 0.740566 0.151900
    1 0.574296 0.329396
    2 0.614062 0.210505
    3 0.079521 0.854962
    4 0.642216 0.207888

    Z-Score

    也叫z分数,是一种具有相等单位的量数。它是将原始分数与团体的平均数之差除以标准差所得的商数,是以标准差为单位度量原始分数离开其平均数的分数之上多少个标准差,或是在平均数之下多少个标准差。
    - 它是一个抽象值,不受原始测量单位的影响,并可接受进一步的统计处理
    - 处理后的数值服从均值为0,方差为1的标准正态分布。
    - 一种中心化的方法,会改变原数据的数据分布,不适用于对稀疏数据做处理

    z=xμσ

    
    def data_Znorm(df, *cols):
        df_n = df.copy()
        for col in cols:
            u = df_n[col].mean()
            std = df_n[col].std()
            df_n[col + '_Zn'] = (df_n[col] - u) / std
        return(df_n)
    # 创建函数,标准化数据
    
    df_z = data_Znorm(df,'value1','value2')
    u_z = df_z['value1_Zn'].mean()
    std_z = df_z['value1_Zn'].std()
    print(df_z.head())
    print('标准化后value1的均值为:%.2f, 标准差为:%.2f' % (u_z, std_z))
    # 标准化数据
    # 经过处理的数据符合标准正态分布,即均值为0,标准差为1
    
    # 什么情况用Z-score标准化:
    # 在分类、聚类算法中,需要使用距离来度量相似性的时候,Z-score表现更好
         value1     value2  value1_Zn  value2_Zn
    0  7.363287  15.749935   0.744641  -1.164887
    1  5.713568  33.233757   0.196308  -0.550429
    2  6.108123  21.522650   0.327450  -0.962008
    3  0.804442  85.003204  -1.435387   1.268973
    4  6.387467  21.264910   0.420298  -0.971066
    标准化后value1的均值为:-0.00, 标准差为:1.00
    
    # Z-Score标准化
    zscore_scale = preprocessing.StandardScaler()
    df_z1 = zscore_scale.fit_transform(df)
    df_z1 = pd.DataFrame(df_z1,columns=['value1_z','value2_z'])
    df_z1.head()
    value1_z value2_z
    0 0.748393 -1.170755
    1 0.197297 -0.553202
    2 0.329100 -0.966855
    3 -1.442619 1.275366
    4 0.422416 -0.975959

    MaxAbs

    最大值绝对值标准化,和MaxMin方法类似,将数据落入一定的区间[-1,1],但是MaxAbs具有不破坏数据结构的特点,可以用于稀疏数据,或者
    是系数的CSR(行压缩)和CSC(列压缩)矩阵(为矩阵的两种储存格式)

    x=x|max|
    # MaxAbs标准化
    maxbas_scaler = preprocessing.MaxAbsScaler()
    df_ma = maxbas_scaler.fit_transform(df)
    df_ma = pd.DataFrame(df_ma,columns=['value1_ma','value2_ma'])
    df_ma.head()
    value1_ma value2_ma
    0 0.740969 0.158626
    1 0.574957 0.334715
    2 0.614661 0.216766
    3 0.080951 0.856112
    4 0.642772 0.214170

    RobustScaler

    在某些情况下,假如数据中有离群点,我们可以使用Z-Score进行标准化,但是标准化后的数据并不理想,因为异常点的特征往往在标准化后容易失去离群特征,此时就可以用RobustScaler 针对离群点做标准化处理。

    此方法对数据中心话和数据的缩放健壮性有更强的参数控制能力

    ————《Python数据分析与数据化运营》

    # RobustScaler标准化
    robustscaler = preprocessing.RobustScaler()
    df_r = robustscaler.fit_transform(df)
    df_r = pd.DataFrame(df_r,columns=['value1_r','value2_r'])
    df_r.head()
    value1_r value2_r
    0 0.360012 -0.644051
    1 0.055296 -0.303967
    2 0.128174 -0.531764
    3 -0.851457 0.703016
    4 0.179770 -0.536777

    绘制标准化散点图

    data_list = [df, df_m1, df_ma, df_z1, df_r]
    title_list = ['soure_data', 'maxmin_scaler', 
                  'maxabs_scaler', 'zscore_scaler',
                  'robustscaler']
    fig = plt.figure(figsize=(12,6))
    for i,j in enumerate(data_list):
    #  对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,
    #  利用它可以同时获得索引和值,enumerate多用于在for循环中得到计数'''
        plt.subplot(2,3,i+1)
        plt.scatter(j.iloc[:,:-1],j.iloc[:,-1])
        plt.title(title_list[i])

    这里写图片描述

    展开全文
  • 使用 Python 进行数据预处理的标准化

    千次阅读 2021-07-17 10:34:22
    标准化和规范化是机器学习和深度学习项目中大量使用的数据预处理技术之一。 这些技术的主要作用 以类似的格式缩放所有数据,使模型的学习过程变得容易。 数据中的奇数值被缩放或归一化并且表现得像数据的一部分。 ...
  • sklearn数据标准化

    千次阅读 2018-12-03 09:53:36
    数据标准化常见方法: 离差标准化:结果映射到[0,1]区间 Z-score标准化(正规化方法):新序列均值为0,方差为1 归一化方法 X_train 结果 array([[ 1., -1., 2.], [ 2., 0., 0.], [ 0., 1., -1.]]) ...
  • 一、数据标准化(归一化) 首先,数据标准化处理主要包括数据同趋化处理(中心化处理)和无量纲化处理。同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑...
  • Matlab数据归一化和标准化函数

    千次阅读 2019-04-19 17:38:37
    在用Matlab建立bp神经网络时,需要对特征值进行缩放,进行归一化。...标准化 premnmx()函数 用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。 premnmx语句的语法格式是: ...
  • 在进行机器学习之前,经常需要对训练数据进行标准化/归一化/正则化,为什么呢? **1)去除量纲的影响,将有量纲的数值变成无量纲的纯数值; 2)是去除各特征之间数值差异过大的问题,比如一个向量(uv:10000, rate:...
  • 数据标准化数据域的确定

    千次阅读 2016-03-30 08:28:46
    在进行数据标准化的过程中需要确定属性或者实体的域,通过该域可完成属性或者...构建一种通用的、标准化数据格式,这样便于系统内部或者标准化主体之间的数据交互;构建一种关于相同信息的统一描述,该描述特指业务
  • 机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒...
  • C#中DateTime类型数据格式化

    千次阅读 2018-06-27 16:51:47
    今天做项目时遇到了这样一个问题,我需要把一个string类型的数据转化为DateTime类型的数据,但转换后的数据格式却不是我们想要的标准格式(yyyy-MM-dd HH:mm:ss格式),转换后的DateTime数据的格式是与当前系统设置...
  • 数据规范化(标准化

    万次阅读 2018-01-24 16:57:36
    数据规范化(标准化) 在数据预处理时,这两个术语可以互换使用。(不考虑标准化在统计学中有特定的含义)。  下面所有的规范化操作都是针对一个特征向量(dataFrame中的一个colum)来操作的。  首先举一个...
  • 两个常用的数据标准化方法及Matlab和Python实现

    万次阅读 多人点赞 2017-12-12 19:13:12
    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果。为了消除指标(特征)之间的量纲影响,数据集需要进行数据标准化处理,以解决...
  • 数据仓库与元数据管理标准化

    千次阅读 2014-08-11 11:24:24
    数据仓库中的数据是从许多业务处理系统中抽取、转换而来,对于这样一个复杂的企业数据环境,如何以安全、高效的方式来对它们进行管理和访问就变得尤为重要。解决这一问题的关键是对元数据进行科学有效的管理。 2. ...
  • 数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果。为了消除指标(特征)之间的量纲影响,数据集需要进行数据标准化处理,以解决...
  • VBA-时间格式标准化

    千次阅读 2019-04-27 20:29:12
    如上图所示,A列的时间信息,统一转化为标准格式yyyy-mm-dd hh:mm:ss 注意到第5行和第6行,系统对月识别的效果是不一样的,默认第1位是月,当系统判断第1位明显不是月的时候,取第2位为月信息 Part 2:代码 Sub ...
  • 1.什么是特征预处理 特征预处理就是通过一些转化函数将特征数据转换成更加适合算法模型的特征数据过程(无量纲化处理) 2.预处理方法 : ... 数据标准化(normalization)是将数据按比例缩...
  • C/C++ 数据格式化

    千次阅读 2017-09-02 10:25:00
    C/C++ 数据格式化C/C++数据格式化输出的方式是设置格式标志,格式标志就是位掩码值,该位掩码值可以通过成员函数setf来设置,也可用unsetf来复位。标准流成员函数precision用来指定浮点值显示的小数位数。但是...
  • 数据特征预处理 通过特定的统计方法(数学方法...2.标准化 3.缺失值 类别型数据:one-hot编码 时间类型:时间的切分 sklearn 特征处理API: -sklearn.preprocessing 归一化:API: sklearn.preprocessing.Min...
  • Flex之数据格式化

    千次阅读 2010-10-21 17:08:00
    数据格式化是对某些特殊的数据的格式进行规范。例如,日期格式有很多种,可以为“1990-1-2”、“2/1/1990”等。有时数据格式化是必须的,如货币的格式要统一。 格式组件概述 Flex 3.0中提供了几种...
  • 数据处理之标准化/归一化方法

    万次阅读 2015-04-04 14:32:19
    归一是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。归一是为了加快训练网络的收敛性,可以不进行归一处理 归一的具体作用是归纳统一样本的统计分布性。归一在0-...
  • 机器学习Author:louwillMachine LearningLab 一直都有朋友在做机器学习模型时有疑问:我的数据要不要做标准化处理? 这个问题笔者也...
  • 简单计算//price*num=sum例如:fome pandas import read_csvdf = read_csv('filepath\\filename.csv')result = df.price*df.numdf['sum'] = result数据标准化 将数据按比例缩放,一般用0-1标准化x*=(x-min)/(max-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 638,310
精华内容 255,324
关键字:

数据格式标准化