精华内容
下载资源
问答
  • 归一化标准化处理PCA主成分分析的影响 内容介绍 本章节为 特征标准化 处理总结,其中 等内容。 本专栏介绍关于数据分析工作中常用的 使用Python进行数据预处理 的方法总结。通过对图片数据、数值数字、文本数据、...

    内容介绍

    数据标准化 :是使数据落入同一范围,是一种常用的数据预处理操作。目的是处理不同比例和维度的数据,以便可以将其缩放到相同的数据间隔和范围,从而减少比例,特征和分布差异对模型的影响。除了用于模型计算之外,标准化数据还具有直接计算和生成复合指标的含义,这是对指标进行加权的必要步骤。

    标准化&归一化

    数据标准化

    同样我们都需要对原始数据进行处理,少不了的就是 standardization (或者叫做 Z-score normalization),要求 均值 μ=0标准差 σ=1
    在这里插入图片描述
    数据归一化

    另一种方法叫做 Min-Max scaling (或者叫做 "normalization"也就是我们常说的0-1归一化)。处理后的所有特征的值都会被压缩到 0到1区间上.这样做还可以抑制离群值对结果的影响。
    在这里插入图片描述

    红酒数据集进行标准化&归一化

    import pandas as pd
    import numpy as np
    
    df = pd.read_excel('data/wine_data.xlsx') #葡萄酒数据集
    df.head()
    

    在这里插入图片描述

    # 选取指定字段
    # 在数据中,Alcohol和Malic acid 衡量的标准应该是不同的,特征之间数值差异较大
    df[['Class label', 'Alcohol', 'Malic acid']]
    

    在这里插入图片描述

    # 标准化和归一化实现
    from sklearn import preprocessing
    
    std_scale = preprocessing.StandardScaler().fit(df[['Alcohol', 'Malic acid']])
    df_std = std_scale.transform(df[['Alcohol', 'Malic acid']])
    
    minmax_scale = preprocessing.MinMaxScaler().fit(df[['Alcohol', 'Malic acid']])
    df_minmax = minmax_scale.transform(df[['Alcohol', 'Malic acid']])
    
    print('标准化后:Alcohol={:.2f}, Malic acid={:.2f}'.format(df_std[:,0].mean(), df_std[:,1].mean()))
    print('\n标准化后的标准差:Alcohol={:.2f}, Malic acid={:.2f}'.format(df_std[:,0].std(), df_std[:,1].std()))
    
    >>> 标准化后:Alcohol=-0.00, Malic acid=-0.00
    >>> 标准化后的标准差:Alcohol=1.00, Malic acid=1.00
    
    print('归一化后的最小值:Alcohol={:.2f}, Malic acid={:.2f}'
          .format(df_minmax[:,0].min(), df_minmax[:,1].min()))
    print('\n归一化后的最大值:Alcohol={:.2f}, Malic acid={:.2f}'
          .format(df_minmax[:,0].max(), df_minmax[:,1].max()))
    
    >>> 归一化后的最小值:Alcohol=0.00, Malic acid=0.00
    >>> 归一化后的最大值:Alcohol=1.00, Malic acid=1.00
    
    # 数据可视化
    from matplotlib import pyplot as plt
    
    def plot():
        plt.figure(figsize=(8,6))
        # 绿色表示原始数据
        plt.scatter(df['Alcohol'], df['Malic acid'], color='green', label='input scale', alpha=0.5)
        # 红色表示标准化后数据
        plt.scatter(df_std[:,0], df_std[:,1], color='red', label='Standardized [$N  (\mu=0, \; \sigma=1)$]', alpha=0.3)
        # 蓝色表示归一化后数据
        plt.scatter(df_minmax[:,0], df_minmax[:,1], color='blue', label='min-max scaled [min=0, max=1]', alpha=0.3)
    
        plt.title('Alcohol and Malic Acid content of the wine dataset')
        plt.xlabel('Alcohol')
        plt.ylabel('Malic Acid')
        plt.legend(loc='upper left')
        plt.grid()
        plt.tight_layout()
    
    plot()
    plt.show()
    

    在这里插入图片描述

    
    # 我们将原始的和变换后都放到了同一个图上,观察下结果吧!接下来我们再看看数据是否被打乱了呢?
    
    fig, ax = plt.subplots(3, figsize=(6,14))
    
    for a,d,l in zip(range(len(ax)), 
                   (df[['Alcohol', 'Malic acid']].values, df_std, df_minmax),
                   ('Input scale', 
                    'Standardized [$N  (\mu=0, \; \sigma=1)$]', 
                    'min-max scaled [min=0, max=1]')
                    ):
        for i,c in zip(range(1,4), ('red', 'blue', 'green')):
            ax[a].scatter(d[df['Class label'].values == i, 0], 
                      d[df['Class label'].values == i, 1],
                      alpha=0.5,
                      color=c,
                      label='Class %s' %i
                      )
        ax[a].set_title(l)
        ax[a].set_xlabel('Alcohol')
        ax[a].set_ylabel('Malic Acid')
        ax[a].legend(loc='upper left')
        ax[a].grid()
        
    plt.tight_layout()
    
    plt.show()
    

    在这里插入图片描述
    在机器学习中,如果我们对训练集做了上述处理,那么同样的对测试集也必须要经过相同的处理。

    std_scale = preprocessing.StandardScaler().fit(X_train)
    X_train = std_scale.transform(X_train)
    X_test = std_scale.transform(X_test)
    

    标准化处理对PCA主成分分析的影响

    # 主成分分析(PCA)和一个非常有用的套路,接下来,咱们来看看数据经过标准化处理和未经标准化处理后使用PCA的效果。
    
    import pandas as pd
    
    df = pd.read_excel('data/wine_data.xlsx') #葡萄酒数据集
    df.head()
    

    在这里插入图片描述

    # 将数据集划分为单独的训练和测试数据集
    # 将随机将葡萄酒数据集分为训练数据集和测试数据集,其中训练数据集包含70%的样本,测试数据集包含30%的样本。
    
    from sklearn.model_selection import train_test_split
    
    X_wine = df.values[:,1:]
    y_wine = df.values[:,0]
    
    X_train, X_test, y_train, y_test = train_test_split(X_wine, y_wine,
        test_size=0.30, random_state=12345)
    
    # 标准化处理数据
    from sklearn import preprocessing
    
    std_scale = preprocessing.StandardScaler().fit(X_train)
    X_train_std = std_scale.transform(X_train)
    X_test_std = std_scale.transform(X_test)
    
    # 使用PCA进行降维
    # 在标准化和非标准化数据集上执行PCA,将数据集转换成二维特征子空间。
    
    from sklearn.decomposition import PCA
    
    # 非标准化数据
    pca = PCA(n_components=2).fit(X_train)
    X_train = pca.transform(X_train)
    X_test = pca.transform(X_test)
    
    
    # 标准化数据
    pca_std = PCA(n_components=2).fit(X_train_std)
    X_train_std = pca_std.transform(X_train_std)
    X_test_std = pca_std.transform(X_test_std)
    
    from matplotlib import pyplot as plt
    
    fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10,4))
    
    
    for l,c,m in zip(range(1,4), ('blue', 'red', 'green'), ('^', 's', 'o')):
        ax1.scatter(X_train[y_train==l, 0], X_train[y_train==l, 1],
            color=c, 
            label='class %s' %l, 
            alpha=0.5,
            marker=m
            )
    
    for l,c,m in zip(range(1,4), ('blue', 'red', 'green'), ('^', 's', 'o')):
        ax2.scatter(X_train_std[y_train==l, 0], X_train_std[y_train==l, 1],
            color=c, 
            label='class %s' %l, 
            alpha=0.5,
            marker=m
            )
    
    ax1.set_title('Transformed NON-standardized training dataset after PCA')    
    ax2.set_title('Transformed standardized training dataset after PCA')    
        
    for ax in (ax1, ax2):
    
        ax.set_xlabel('1st principal component')
        ax.set_ylabel('2nd principal component')
        ax.legend(loc='upper right')
        ax.grid()
    plt.tight_layout()
    
    plt.show()  
    

    直观上,可以清晰的看到经过标准化的数据可分性更强的。
    在这里插入图片描述

    展开全文
  • PCA之后进行归一化

    2011-10-18 21:46:00
    ifstream fin("E:\\feature_pca.txt ",std::ifstream::in); for(int i = 0;i ; ++i) for(int j = 0;j ; ++j) { fin >> fc->data.fl[i*cols+j]; } fin.close(); cvNormalize(fc,dst,1,0,CV_C,NULL); ...

    不过还是有问题,正在慢慢分析原因吧。

    #include <cv.h>
    #include <cxcore.h>
    #include <highgui.h>
    #include <fstream>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
    	ifstream myfile( "E:\\feature_size.txt ");
    	if (!myfile.is_open())
    		cout << "Unable to open file";
    	int rows = 0,cols = 20;
    	myfile >> rows ;
    	//ifstream feature_file( "E:\\features.txt ");
    	CvMat *fc = cvCreateMat(rows,cols,CV_32FC1);
    	CvMat *dst = cvCreateMat(rows,cols,CV_32FC1);
    	ifstream fin("E:\\feature_pca.txt ",std::ifstream::in);
    	for(int i = 0;i < rows; ++i)
    		for(int j = 0;j < cols; ++j)
    		{
    			fin >> fc->data.fl[i*cols+j];
    		}        
    		fin.close();
        cvNormalize(fc,dst,1,0,CV_C,NULL);
    	ofstream file( "E:\\feature_guiyihua.txt ");
    	for (int i = 0; i < dst->rows;++i)
    	{
    		for(int j = 0;j < dst->cols; ++j)
    		{
    			file << cvmGet(dst,i,j) << " ";
    		}
    		file << "\n";
    	}
    }
    

      

    展开全文
  • 一、特征处理 特征处理是通过特定的统计方法,将数据转化成算法要求的数据。其API为sklearn.preprocessing。先来看一组数据: 第一组中的特征1 相比于特征2而言大了几十倍,在正常处理时这些点...归一化是通过对原始数

    一、特征处理

    特征处理是通过特定的统计方法,将数据转化成算法要求的数据。其API为sklearn.preprocessing。先来看一组数据:
    在这里插入图片描述
    第一组中的特征1 相比于特征2而言大了几十倍,在正常处理时这些点即可视为异常点,影响统计结果分析。采用特征处理后转变为右侧的数据,可以更加方便的处理而不会产生异常值。
    常见的处理方法如下:

    数据类型处理方法
    数值型数据归一化、标准化、缺失值
    类别型数据one hot编码
    时间型数据时间的切分

    ( 一)归一化

    归一化是通过对原始数据进行变换把数据映射到一定范围(默认0-1)之间。其公式为:
    在这里插入图片描述
    归一化实例:
    在这里插入图片描述

    # 导入特征处理api及其子库
    from sklearn.preprocessing import MinMaxScaler,StandardScaler,Imputer
    # 定义一个归一化处理函数
    def mm(data):
        """归一化处理"""
        # 实例化mm
        mm=MinMaxScaler(feature_range=(2,3))
        # 调用fit_transform来处理数据
        data=mm.fit_transform(data)
        print("归一化处理后的数据为:")
        print(data)
        return None
    
    data=[[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]
    mm(data=data)
    
    

    归一化处理后,原本的数据全部集中在(2-3)之间。
    在这里插入图片描述
    注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景。

    (二)标准化

    在这里插入图片描述
    对于归一化来说:如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变

    对于标准化来说:如果出现异常点,由于具有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

    def std(data):
        """标准化处理数据"""
        # 实例化
        sd=StandardScaler()
        data=sd.fit_transform(data)
        print("标准化处理后的数据为:")
        print(data)
        return None
    data=[[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]
    std(data=data)
    

    在这里插入图片描述
    标准化方法,在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。

    (三)缺失值处理方法

    缺失值的处理一般分为两种,其一为删除,其一为填补。当缺失数据达到一定比例时,采取删除法,当数据量较小,可填补每行或每列的平均值或中位数。其api为Imputer
    在这里插入图片描述

    def im(data):
        """缺失值处理"""
        # 实例化,将平均值填充至缺失值
        im=Imputer(missing_values='NaN', strategy='mean', axis=0)
        data=im.fit_transform(data)
        print("缺失值处理后的数据为:")
        print(data)
        return None
    data=[[90, 2, 10, np.nan], [60, np.nan, 15, 45], [75, 3, 13, 46]]
    im(data=data)
    

    在这里插入图片描述

    二、特征选择

    在实际的数据中,数据量大、特征冗杂且很多特征之间存在较大的相关性。部分噪声对预测结果有负影响。
    在这里插入图片描述
    如上图,在机器学习识别鸟的种类时,如上四个特征哪几个是需要的?可以看出,第三个特征和第四个有较大的相关性,较为冗余。因此在处理之前有必要对数据的特征进行一次选择。
    特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值、也不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征,同时也降低了识别学习的难度。

    (一)Filter(过滤式):VarianceThreshold

    在这里插入图片描述
    低方差意味着数据较为集中,差异不大。因此选择过滤式方法过滤掉方差较小的特征是一个不错的办法。

    from sklearn.feature_selection import VarianceThreshold
    def var(data):
        """
        特征选择-删除低方差的特征
        :return: None
        """
        # 将方差小于1的数据舍弃
        var = VarianceThreshold(threshold=1.0)
    
        data = var.fit_transform(data)
        print("方差处理后的数据为:")
    
        print(data)
        return None
    data=[[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]]
    var(data=data)
    
    

    在这里插入图片描述

    (二)降维处理 主成分分析法(PCA)

    PCA的本质是一种简化分析的技术,其目的是将数据维数压缩,尽可能降低原数据的维度,损失少量信息。

            简化前                             简化后
    

    在这里插入图片描述

    from sklearn.decomposition import PCA
    def pca(data):
        """主成分分析"""
        # n_components=0.9-损失的数据信息为10%
        pca=PCA(n_components=0.9)
        data=pca.fit_transform(data)
        print("降维后的数据为:")
        print(data)
        return None
    data=[[2, 8, 4, 5], [6, 3, 0, 8], [5, 4, 9, 1]]
    pca(data=data)
    

    在这里插入图片描述
    保留了原始数据90%的信息的同时,将原数据从三维降低至二维。

    以上为机器学习中特征的处理与选择相关的方法,后续将介绍机器学习常用的模拟器。

    展开全文
  • 归一化的好处及归一化,标准化的处理方法 版权声明:本文为其他博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出...

    归一化的好处及归一化,标准化的处理方法

    版权声明:本文为其他博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接: https://blog.csdn.net/pipisorry/article/details/52247379
             <!--一个博主专栏付费入口结束-->
            <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
                                        <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-d284373521.css">
                <div class="htmledit_views" id="content_views">
                                            <p>http://<a href="http://blog.csdn.net/pipisorry/article/details/52247379" rel="nofollow">blog.csdn.net/pipisorry/article/details/52247379</a></p>
    

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

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

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

    基础知识参考:

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

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

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

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

        目前数据标准化方法有多种,归结起来可以分为直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响,然而不幸的是,在数据标准化方法的选择上,还没有通用的法则可以遵循。

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

    归一化的目标

    1 把数变为(0,1)之间的小数
            主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。
    2 把有量纲表达式变为无量纲表达式
            归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。
    另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。

    归一化后有两个好处

    1. 提升模型的收敛速度

    如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)


    2.提升模型的精度

    归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

        在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。

        在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

    从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

    3. 深度学习中数据归一化可以防止模型梯度爆炸。

    数据需要归一化的机器学习算法

    需要归一化的模型:

            有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM(距离分界面远的也拉近了,支持向量变多?)。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。
            有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression(因为θ的大小本来就自学习出不同的feature的重要性吧?)。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛(模型结果不精确)。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

            有些模型/优化方法的效果会强烈地依赖于特征是否归一化,如LogisticReg,SVM,NeuralNetwork,SGD等。

    不需要归一化的模型:

        (0/1取值的特征通常不需要归一化,归一化会破坏它的稀疏性。)

        有些模型则不受归一化影响,如DecisionTree。

        ICA好像不需要归一化(因为独立成分如果归一化了就不独立了?)。

        基于平方损失的最小二乘法OLS不需要归一化。

    [线性回归与特征归一化(feature scaling)]

    皮皮blog

     

     

    常见的数据归一化方法

    最常用的是 min-max标准化 和 z-score 标准化。

    min-max标准化(Min-max normalization)/0-1标准化(0-1 normalization)/线性函数归一化/离差标准化

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

    其中max为样本数据的最大值,min为样本数据的最小值。

    def Normalization(x):
        return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]

    如果想要将数据映射到[-1,1],则将公式换成:

    x* = x* * 2 -1

    或者进行一个近似

    x* = (x - x_mean)/(x_max - x_min), x_mean表示数据的均值。

    def Normalization2(x):
        return [(float(i)-np.mean(x))/(max(x)-min(x)) for i in x]

    这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。

    ps: 将数据归一化到[a,b]区间范围的方法:

    (1)首先找到原本样本数据X的最小值Min及最大值Max
    (2)计算系数:k=(b-a)/(Max-Min)
    (3)得到归一化到[a,b]区间的数据:Y=a+k(X-Min)  或者 Y=b+k(X-Max)

    即一个线性变换,在坐标上就是求直线方程,先求出系数,代入一个点对应的值(x的最大/最小就对应y的最大/最小)就ok了。

    z-score 标准化(zero-mean normalization)

    最常见的标准化方法就是Z标准化,也是SPSS中最为常用的标准化方法,spss默认的标准化方法就是z-score标准化。

    也叫标准差标准化,这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。

    经过处理的数据符合标准正态分布,即均值为0,标准差为1,注意,一般来说z-score不是归一化,而是标准化,归一化只是标准化的一种[lz]。

    其转化函数为:

    x* = (x - μ ) / σ

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

    z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种标准化方式要求原始数据的分布可以近似为高斯分布,否则效果会变得很糟糕。

    标准化的公式很简单,步骤如下

      1.求出各变量(指标)的算术平均值(数学期望)xi和标准差si ;
      2.进行标准化处理:
      zij=(xij-xi)/si
      其中:zij为标准化后的变量值;xij为实际变量值。
      3.将逆指标前的正负号对调。
      标准化后的变量值围绕0上下波动,大于0说明高于平均水平,小于0说明低于平均水平。

    
     
    1. def z_score(x, axis):
    2. x = np.array(x).astype(float)
    3. xr = np.rollaxis(x, axis=axis)
    4. xr -= np.mean(x, axis=axis)
    5. xr /= np.std(x, axis=axis)
    6. # print(x)
    7. return x

    为什么z-score 标准化后的数据标准差为1?

    x-μ只改变均值,标准差不变,所以均值变为0

    (x-μ)/σ只会使标准差除以σ倍,所以标准差变为1

    这两种最常用方法使用场景:

    1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。

    2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
    原因是使用第一种方法(线性变换后),其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不同的量纲、距离的计算结果会不同。而在第二种归一化方式中,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。
    [再谈机器学习中的归一化方法(Normalization Method) ]

    皮皮blog

    log函数转换

    通过以10为底的log函数转换的方法同样可以实现归一下,具体方法如下:

    看了下网上很多介绍都是x*=log10(x),其实是有问题的,这个结果并非一定落到[0,1]区间上,应该还要除以log10(max),max为样本数据最大值,并且所有的数据都要大于等于1。

    atan函数转换

    用反正切函数也可以实现数据的归一化。

    使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上,而并非所有数据标准化的结果都映射到[0,1]区间上。

    Decimal scaling小数定标标准化

    这种方法通过移动数据的小数点位置来进行标准化。小数点移动多少位取决于属性A的取值中的最大绝对值。

    将属性A的原始值x使用decimal scaling标准化到x'的计算方法是:
    x'=x/(10^j)
    其中,j是满足条件的最小整数。
    例如 假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用每个值除以1000(即,j=3),这样,-986被规范化为-0.986。
    注意,标准化会对原始数据做出改变,因此需要保存所使用的标准化方法的参数,以便对后续的数据进行统一的标准化。

    Logistic/Softmax变换

    [Sigmod/Softmax变换 ]

    模糊量化模式

    新数据=1/2+1/2sin[派3.1415/(极大值-极小值)*(X-(极大值-极小值)/2) ] X为原数据

    皮皮blog

     

    数据标准化/归一化的编程实现

    python库实现和调用

    [Scikit-learn:数据预处理Preprocessing data ]

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

    ref:

     

    展开全文
  • 为何要归一化?如何归一化和标准化?为何要归一化·提升模型的收敛速度·提升模型的精度·总结如何归一化和标准化min-max(0-1) 标准化z-score(标准差) 标准化nonlinearity(非线性) 归一化 为何要归一化 ·提升模型的...
  • 对虹膜数据和选择数据执行归一化PCA
  • 去均值、归一化PCA

    2020-02-08 15:15:29
    归一化:对数据进行处理后将其限定在一定的范围内,这样可以减少各维度数据因取值范围差异而带来的干扰。 比如有两个维度的特征数据A和B,A的取值范围是(0,10),而B的取值范围是(0,10000), 我们会...
  • 鸢尾花数据可视化,PCA降到两维后,对数据标准化、归一化PCA降维,后输出降维后每一列的贡献率,各列贡献相加为1. // An highlighted block if __name__ == "__main__": iris = datasets.load_iris() # 获取...
  • 归一化化定义:我是这样认为的,归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快。所谓特征归一化,就是...
  • 特征归一化处理

    2019-09-13 22:45:22
    其中最典型的就是数据的归一化处理,即将数据统一映射到[0,1]区间上。 归一化的目标 1 把数变为(0,1)之间的小数  主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到...
  • 今天这篇还是讲特征工程那一堆事,准确点说是数据预处理范畴内的,在做PCA降维时,我发现利用方差过滤出的主成分和利用PCA降维得到的主成分对应位置的方差有些不同:VarianceThreshold:[90370.21684180899, 55277....
  • PyTorch 数据归一化与反归一化

    万次阅读 多人点赞 2019-04-11 11:12:47
    文章目录数据归一化除最大值法MinMaxScaler均值和标准差反归一化 数据归一化 除最大值法 def read_and_normalize_train_data(): train_data, train_label = load_train() print('Convert to numpy...') train_...
  • 6.项目中的数据是否会归一化处理,哪个机器学习算法不需要归一化处理 ?答:归一化的目的是处理不同规模和量纲的数据,时期缩放到相同的数据区间和范围,以减少规模、特征、分布差异对模型的影响。Max-Min(线性归一...
  • 3.归一化处理 保留所有的特征,但是减少参数的大小(或者是说:减少参数的重要性) 为了消除指标之间量纲的影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于...
  • 数据预处理方式(去均值、归一化PCA降维)

    万次阅读 多人点赞 2018-08-31 10:34:38
    另一种是均值方差归一化,一般是把均值归一化成0,方差归一化成1。适用于分布没有明显边界的情况。 2. 进行归一化的原因是把各个特征的尺度控制在相同的范围内,这样可以便于找到最优解,不进行归一化时如左图,...
  • 归一化与标准化 归一化 常用的方法是通过对原始数据进行线性变换把数据映射到[0,1]之间,变换函数为:  x∗=x−xminxmax−xminx∗=x−xminxmax−xmin 不同变量往往量纲不同,归一化可以消除量纲对最终结果的...
  • 数据处理特征归一化归一化目的使预处理数据限定在[0,1]或者[-1,1]消除样本数据不良影响 特征归一化—最大最小标准化(:最大最小归一化结果值映射[0,1]转换函数: 适用数据值比较集中 缺点:如果max和min不稳定...
  • 图像特征点提取,形状图像归一化和QPCA(四元数主成分) 基于算法的水印嵌入(QWEMS)和提取(QWEXS)方案。 特征点墨西哥帽子小波尺度相互作用的提取方法用于选择可以存活的点各种攻击,也可用作水印嵌入和提取的...
  • 为什么要进行图像预处理?大概是为了 (1)使得原始图像符合某种既定规则,便于后续处理。 (2)去除图像中的影响后续处理...大概分为去均值、归一化PCA、白化几种。 假定数据表示成矩阵为X,其中我们假定X是[N...
  • 归一化(Normalization) 1)数据处理更快 : 把数据变成(0,1)或者(1,1)之间的小数。 2)统一量纲(去单位): 有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种...
  • 对图像进行归一化,用于图像处理1.18%,而此时特征向量只选取前 15 维。融合特征中采用 PCA特征是由于它是均方误差最小意义下对原图像的最佳逼
  • 一、在介绍去均值和归一化之前,先介绍几个概念 1.1 平均值 1.2 方差、标准差 1.3 贝赛尔修正 1.4 平均值与标准差的适用范围及误用 1.5 为什么正态分布非常常见 二、常用数据预处理方法 2.1 去均值 2.2 .两...
  • 对于大多数的机器学习算法和优化算法来说,将特征值缩放到相同区间可以使得获取性能更好的模型。...所以进行需要对特征归一化,今天我介绍一下归一化方法。 一、两种常用的归一化方法: (1)min...
  • 1:减去均值,然后归一化 2:PCA白化 本文从python代码实现的角度去实现它 首先生成一个随机数组用于实验,维度是(40,500),代表有40个样本,每个样本的维度是500维。from numpy import random X= random....
  • def mm(): # 归一化处理 mm = MinMaxScaler() data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]]) print(data) if __name__=='__main__': mm() 标准化 from sklearn.preprocessing i
  • 一、数据为什么需要归一化处理 归一化的目的是处理不同规模和量纲的数据,使其缩放到相同的数据区间和范围,以减少规模、特征、分布差异对模型的影响。 方法: 1.极差变换法 2. 0均值标准化(Z-score方法) 1.Max-...
  • 数据归一化方法

    千次阅读 2019-06-13 16:41:40
    数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,432
精华内容 5,372
关键字:

pca处理归一化处理