机器学习-数据预处理

归一化

StandardScaler

如果非标准正态分布X~N(μ,σ^2),那么关于X的一个一次函数 (X-μ)/σ ,就一定是服从标准正态分布N(0,1)。

举个具体的例子,一个量X,是非标准正态分布,期望是10,方差是5^2(即X~N(10,5^2));

那么对于X的线性函数Y=(X-10)/5,Y就是服从标准正态分布的Y~N(0,1)。

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


def test_algorithm():
    np.random.seed(0)
    data = np.random.normal(5,5,size=(1000,1))

    scaler = StandardScaler()
    scaler.fit(data)
    trans_data = scaler.transform(data)


    trans_data1 = data - np.mean(data, axis=0)
    trans_data1 = trans_data1 / np.std(data, axis=0)

    fig, ax = plt.subplots(1, 3, figsize=(18, 5), sharey=False)
    ax[0].set_title('origin data'),ax[0].hist(data)
    ax[1].set_title('use sklearn'),ax[1].hist(trans_data)
    ax[2].set_title('by self'),ax[2].hist(trans_data1)
    plt.show()



if __name__ == '__main__':
    test_algorithm()
View Code

 

posted @ 2018-10-26 12:58  逐梦客!  阅读(110)  评论(0)    收藏  举报