用sklearn.preprocessing.StandardS

作者: fred_33c7 | 来源:发表于2019-04-20 20:45 被阅读0次

    数据集的标准化,在scikit中,对于众多机器学习评估器来说是必须的;如果各独立特征不进行标准化,结果标准正态分布数据差距很大:比如使用均值为0、方差为1的高斯分布.

    标准化的流程简单来说可以表达为:将数据按其属性(按列进行)减去其均值,然后除以其方差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1。

    下面我们用numpy自带的算法和sklearn提供的standardscaler来看看分别怎么做:

    #1.首先生成测试 数据
    import numpy as np
    np.random.seed(123)
    data = np.random.randn(10, 4)
    print('original data: ')
    print(data)
    

    我们就看到我们生成的数据,其中np.random.seed()函数是使生成的随机数具有可预测性,那如果我们用sklearn.preprocessing.StandardScaler怎么写呢?

    from sklearn.preprocessing import StandardScaler
    data = np.random.randn(10, 4)
    scaler = StandardScaler()
    scaler.fit(data)
    trans_data = scaler.transform(data)
    print('original data: ')
    print(data)
    print('transformed data: ')
    print(trans_data)
    print('scaler info: scaler.mean_: {}, scaler.var_: {}'.format(scaler.mean_, scaler.var_))
    print('\n')
    

    非常简单,核心代码就是先生成 StandardScaler()对象,然后调用transform()方法
    那用numpy自己的方法怎么写呢?

    mean = np.mean(data, axis=0)
    std = np.std(data, axis=0)
    var = std * std
    print('mean: {}, std: {}, var: {}'.format(mean, std, var))
    # numpy 的广播功能
    another_trans_data = data - mean
    # 注:是除以标准差
    another_trans_data = another_trans_data / std
    print('another_trans_data: ')
    print(another_trans_data)
    

    其实就是最基本的数学方法。

    相关文章

      网友评论

        本文标题:用sklearn.preprocessing.StandardS

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