1. 程式人生 > >sklearn機器學習庫中資料的標準化

sklearn機器學習庫中資料的標準化

本篇部落格主要借鑑的是http://www.cnblogs.com/chaosimple/p/4153167.html  這位大牛的部落格,
最近在學習sklearn,寫演算法基本上都會用到標準化, 資料標準化一共有三種,廢話不多說,看具體的程式碼:
#encoding:utf-8
'''
Created on 2015年10月13日
@author: ZHOUMEIXU204
'''

#sklearn資料標準化,資料標準化有三種
#第一種是Z-Score,或者去除均值和方差縮放
from  sklearn import preprocessing
import numpy as np
x=np.array([[1.,-1.,2.],
            [2.,0.,0.],
            [0.,1.,-1.]])
x_scaled=preprocessing.scale(x)
x_scaled.mean(axis=0)
x_scaled.std(axis=0)
# 使用sklearn.preprocessing.StandardScaler類,
# 使用該類的好處在於可以儲存訓練集中的引數(均值、方差)
# 直接使用其物件轉換測試集資料。
scaler=preprocessing.StandardScaler().fit(x)
scaler.mean_
scaler.std_
scaler.transform(x)  #跟上面的結果是一樣的

#第二種是將屬性縮放到一個指定範圍,也是就是(x-min)/(max-min)
#依賴於preprocessing中的MinMaxScaler類
x_train=np.array([[1.,-1.,2.],
            [2.,0.,0.],
            [0.,1.,-1.]])

min_max_scaler=preprocessing.MinMaxScaler()
x_train_minmax=min_max_scaler.fit_transform(x_train)
print(x_train_minmax)
# 當然,在構造類物件的時候也可以直接指定最大最小值的範圍:feature_range=(min, max),此時應用的公式變為:
# x_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0))
# x_scaled=X_std/(max-min)+min

#第三種是正則化Normalization

x=np.array([[1.,-1.,2.],
            [2.,0.,0.],
            [0.,1.,-1.]])
x_normalized=preprocessing.normalize(x,norm='l2')
print(x_normalized)

# 可以使用processing.Normalizer()類實現對訓練集和測試集的擬合和轉換
normalizer=preprocessing.Normalizer().fit(x)
print(normalizer)
normalizer.transform(x)