精华内容
下载资源
问答
  • python 归一化数据

    千次阅读 2018-06-25 22:42:44
    归一化数据输入为矩阵,对每一列的数据进行归一化。#归一化数据 def autoNorm(dataset): minVals=dataset.min(0)#列中最小值 maxVals=dataset.max(0)#列中的最大值 ranges=maxVals-minVals #normDataSet=zeros...

    归一化数据

    输入为矩阵,对每一列的数据进行归一化。

    #归一化数据
    def autoNorm(dataset):
        minVals=dataset.min(0)#列中最小值
        maxVals=dataset.max(0)#列中的最大值
        ranges=maxVals-minVals
        #normDataSet=zeros(shape(dataset))#创建与样本特征矩阵同大小的数值全是0的矩阵
        m=dataset.shape[0]#m是dataset的列数,即样本特征的维数
        normDataSet=dataset-tile(minVals,(m,1))#tile()是将minVals复制成m行3列,即与dataset同大小的矩阵
        normDataSet=normDataSet/tile(ranges,(m,1))
        return normDataSet#返回归一化的样本特征矩阵

    展开全文
  • 在建立回归模型时,往往需要对数据进行归一化和反归一化。 然而,一定要注意训练集与测试集使用的归一化参数必须统一!! 常用的归一化方法有很多,这里以sklearn的MinMaxScale()为例,下面讲述了归一化和反归一化在...

    问题描述:
    在建立回归模型时,往往需要对数据进行归一化和反归一化。
    然而,一定要注意训练集与测试集使用的归一化参数必须统一!!
    常用的归一化方法有很多,这里以sklearn的MinMaxScale()为例,下面讲述了归一化和反归一化在建模中的详细过程

    先看一个最普通的归一化例子:

    import numpy as np
    from sklearn.preprocessing import MinMaxScaler #导入库
    
    data = np.random.randint(0,5,size=5) #随机生成长度为5的数据
    m = MinMaxScaler() #建立一个归一化器
    data_1 = m.fit_transform(data) #利用m对data进行归一化,并储存data的归一化参数
    data_2 = m.inverse_transform(data_1) #利用m对data_1进行反归一化
    

    上面例子只有一组数据data,对data进行归一化,再进行反归一化,流程正确,但在实际建模中几乎不存在这种简单的操作。

    因此在正常建模时,对测试集和训练集进行归一化和反归一化时,应执行如下代码:

    import pandas as pd
    import numpy as np
    from sklearn.preprocessing import MinMaxScaler
    
    # 建立数据集:假设训练集有10个样本,测试集有5个样本;两个输入特征,一个输出
    train_data = np.random.randint(5,size=(10,3))
    test_data = np.random.randint(5,size=(5,3))
    train_data = pd.DataFrame(train_data ,columns = ['output','input1','input2'])
    test_data = pd.DataFrame(test_data ,columns = ['output','input1','input2'])
    
    # 对训练集和测试集进行归一化
    mm = MinMaxScaler()
    train_data_m = mm.fit_transform(train_data.values) #注意fit_transform() 和 transform()的区别
    test_data_m = mm.transform(test_data.values) #注意fit_transform() 和 transform()的区别
    
    # ...假设这里经过模型训练,得到了模型model;
    # 这里model_fit()和model.predict()是假设的模型训练函数和预测函数
    model = model_fit(train_data_m) #训练模型
    predicted_y_m = model.predict(test_data_m[:,[1,2]]) #利用输入特征input1和input2测试模型
    # 这里predicted_y_m.shape为(5,),例如:array([0.1, 0.2, 0.3, 0.54, 0.5])
    
    # 预测结果反归一化
    	#先将预测数据设定为前面归一化时设定的维度
    predicted_data_m = test_data_m  #将归一化后的test_data_m赋给predicted_data_m
    predicted_data_m [:,0] = predicted_y #将第1列的真实值改为预测值
    	#归一化
    predicted_data = mm.inverse_transform(predicted_data_m) #反归一化
    
    # 预测结果为:
    predicted_y = predicted_data[:,0]
    

    这里重点需要关注的有两点;
    第一点: fit_transform() 和 transform()的区别。两者都是归一化函数,但是fit_transform() 会储存归一化函数是的相关参数,因此对训练集使用fit_transform() ,储存了训练集归一化的相关参数,然后利用这些参数对测试集进行统一的归一化transform()【切记不能再使用fit_transform() ,第二次使用fit_transform() 会刷新mm里储存的参数!!】
    第二点: 反归一化时任然要使用归一化时储存的参数和格式。归一化时使用的是mm = MinMaxScaler(),因此后面仍然要使用mm进行反归一化;归一化时fit_transform(train_data.values) 中的train_data.values是n3维度(这里10个样本,即为103)的数组,因此反归一化时的数据也必须是3列,即m*3(m为测试集样本数,这里为5)

    以上就是以sklearn.preprocessing.MinMaxScaler为例的归一化和反归一化方法。

    其他matlab或其他库的归一化和反归一化方法原理大致相同,只要把握以上两点即可。训练集、测试集、归一化、反归一化 均要使用同一参数的归一化函数!!

    展开全文
  • 数据归一化数据的标准化是将数据按比例缩放,使之落入一个小的特定区间,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。为什么要做归一化:1)加快梯度下降求最优解...

    数据归一化:

    数据的标准化是将数据按比例缩放,使之落入一个小的特定区间,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

    为什么要做归一化:

    1)加快梯度下降求最优解的速度

    如果两个特征的区间相差非常大,其所形成的等高线非常尖,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛。

    2)有可能提高精度

    一些分类器需要计算样本之间的距离,如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

    归一化类型

    1)线性归一化

    这种归一化比较适用在数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定,实际使用中可以用经验常量来代替max和min。

    2)标准差标准化

    经过处理的数据符合标准正态分布,即均值为0,标准差为1。

    3)非线性归一化

    经常用在数据分化较大的场景,有些数值大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括log、指数、反正切等。需要根据数据分布的情况,决定非线性函数的曲线。

    log函数:x = lg(x)/lg(max)

    反正切函数:x = atan(x)*2/pi

    Python实现

    线性归一化

    定义数组:x = numpy.array(x)

    获取二维数组列方向的最大值:x.max(axis = 0)

    获取二维数组列方向的最小值:x.min(axis = 0)

    对二维数组进行线性归一化:

    def max_min_normalization(data_value, data_col_max_values, data_col_min_values):

    """ Data normalization using max value and min value

    Args:

    data_value: The data to be normalized

    data_col_max_values: The maximum value of data's columns

    data_col_min_values: The minimum value of data's columns

    """

    data_shape = data_value.shape

    data_rows = data_shape[0]

    data_cols = data_shape[1]

    for i in xrange(0, data_rows, 1):

    for j in xrange(0, data_cols, 1):

    data_value[i][j] =

    (data_value[i][j] - data_col_min_values[j]) /

    (data_col_max_values[j] - data_col_min_values[j])

    标准差归一化

    定义数组:x = numpy.array(x)

    获取二维数组列方向的均值:x.mean(axis = 0)

    获取二维数组列方向的标准差:x.std(axis = 0)

    对二维数组进行标准差归一化:

    def standard_deviation_normalization(data_value, data_col_means,

    data_col_standard_deviation):

    """ Data normalization using standard deviation

    Args:

    data_value: The data to be normalized

    data_col_means: The means of data's columns

    data_col_standard_deviation: The variance of data's columns

    """

    data_shape = data_value.shape

    data_rows = data_shape[0]

    data_cols = data_shape[1]

    for i in xrange(0, data_rows, 1):

    for j in xrange(0, data_cols, 1):

    data_value[i][j] =

    (data_value[i][j] - data_col_means[j]) /

    data_col_standard_deviation[j]

    非线性归一化(以lg为例)

    定义数组:x = numpy.array(x)

    获取二维数组列方向的最大值:x.max(axis=0)

    获取二维数组每个元素的lg值:numpy.log10(x)

    获取二维数组列方向的最大值的lg值:numpy.log10(x.max(axis=0))

    对二维数组使用lg进行非线性归一化:

    def nonlinearity_normalization_lg(data_value_after_lg,

    data_col_max_values_after_lg):

    """ Data normalization using lg

    Args:

    data_value_after_lg: The data to be normalized

    data_col_max_values_after_lg: The maximum value of data's columns

    """

    data_shape = data_value_after_lg.shape

    data_rows = data_shape[0]

    data_cols = data_shape[1]

    for i in xrange(0, data_rows, 1):

    for j in xrange(0, data_cols, 1):

    data_value_after_lg[i][j] =

    data_value_after_lg[i][j] / data_col_max_values_after_lg[j]

    以上这篇基于数据归一化以及Python实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    展开全文
  • matlab 工具函数 —— normalize(归一化数据
                         
    function x = normalize(x, mu, sigma)x = bsxfun(@minus, x, mu);x = bsxfun(@rdivide, x, sigma);end
    • 1
    • 2
    • 3
    • 4

    这里归一化使用的函数为:

    x  =xμσ  x′=x−μσ

  • (3)no normalization

  •            

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 在进行处理数据的时候,标准化的方法是比较多的,其中数据归一化是一种常见的数据的标准化,只不过标准化只是将数据进行规范到一个范围之内,对于数据归一化来说,是将数据规范到0到1之间或者是-1到1之间。...
  • 我要比较不同的模型,想选用MSE或者RMSE计算,但是如果用实际值,MSE比较大,大概在10这个数量级,用归一化的预测输出MSE小很多,大概在0.02这个量级,但是这样做可行吗?我可不可以两个都比较?另外我要明说这是...
  • 多数情况下,需要对数据集进行归一化处理,再对数据进行分析#首先,引入两个库 ,numpy,sklearnfrom sklearn.preprocessing import MinMaxScalerimport numpy as np#将csv文件导入矩阵当中my_matrix = np.loadtxt...
  • Day Two——填充缺失值、归一化数据、PCA降维分析 完整代码及数据地址 第一部分数据catering_sale.xls 第二部分数据normalization_data.xls 第三部分数据discretization_data.xls 第四部分数据electricity_data...
  • 在处理不同取值范围的特征值时,通常会对数据进行归一化处理,将取值范围处理为0~1或者-1~1之间。 归一化公式为: newValue = (oldValue-min)/(max-min) 代码为: from numpy import * def autoNorm(dataSet...
  • 归一化数据的好处

    2019-10-05 05:35:57
    归一化数据不仅可以将标量统一到(0,1)方便计算,在求loss function时还利于找到全局最优解。 Reference: https://blog.csdn.net/BVL10101111/article/details/54973321 转载于:...
  • 在sklearn中划分训练集和测试集、以及标准化、归一化数据
  • https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html#sklearn.preprocessing.MinMaxScaler.fit
  • 数据标准化/归一化normalization

    万次阅读 多人点赞 2016-08-19 09:42:40
    这里主要讲连续型特征归一化的常用方法。 连续型特征还有一种处理方式是,先分桶/分箱(如等频/等距的分)[待写]进行离散化后再使用离散数据的处理方法。 离散数据处理参考[数据预处理:独热编码(One-Hot ...
  • 就是把数据归一化到[0, 1]区间上。 好处: 防止某一维度的数据的数值大小对距离就算产生影响。多个维度的特征是等权重的,所以不能被数值大小影响。 下面是归一化特征值的代码: #归一化特征值 def autoNorm...
  • 归一化(区别于标准化)一般是指,把数据变换到(0,1)之间的小数。主要是为了方便数据处理,或者把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。 不过还是有很多人使用时将归一化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,966
精华内容 3,586
关键字:

归一化数据