資料預處理,是指在使用學習演算法分析資料之前,對原始資料集作適當的變換,使得變換後的資料更適合學習演算法。一般的機器學習演算法要求對資料集做標準化的預處理。在實際處理時,我們經常忽略資料的分布形狀,而只是對資料作中心化變換,即,每個變數的值減去其均值。這樣,中心化之後的資料,變數的均值是0。
python的sklearn.preprocessing
包提供了標準化的通用函式和變換類。
sklearn.preprocessing包的scale()
函式提供了乙個快速簡單的標準化操作。
from sklearn import preprocessing
import numpy as np
x_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
x_scaled = preprocessing.scale(x_train)
x_scaled
縮放資料成零均值、單位方差。
x_scaled.mean(axis=0)
x_scaled.std(axis=0)
standardscaler
類執行transformer api, 在訓練集上計算均值與標準差,可以在後面的檢驗集上進行相同的變換,因此,該類適合用於管道函式。
scaler = preprocessing.standardscaler().fit(x_train)
scaler.mean_
scaler.scale_
scaler.transform(x_train)
x_test = [[-1., 1., 0.]]
scaler.transform(x_test)
另外一種標準化方法,是把特徵縮放到乙個指定的範圍內,通常在[0, 1]之內。
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)
min_max_scaler.scale_
min_max_scaler.min_
x_test = np.array([[-3., -1., 4.]])
x_test_minmax = min_max_scaler.transform(x_test)
如果資料是稀疏的,即,有很多零值,那麼中心化會破壞資料的稀疏結構。maxabsscaler()
,maxabs_scale()
函式特別被設計用來縮放稀疏資料。
如果資料裡包括離群點(outliers
), 通用方法效果不好,這是因為離群點的影響。robust_scale()
,robustscaler()
函式使用更穩健的估計量。
資料預處理 資料標準化
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 ...
資料預處理之標準化
近來趁專案間隔期,工作不是太多,也在利用空餘時間把資料分析的完整流程用python實現一遍,也恰好整理下這幾年手頭的一些資料,順序可能比較亂,後期再慢慢調整。資料的標準化 normalization 是將資料按照一定規則縮放,使之落入乙個小的特定區間。這樣去除資料的單位限制,將其轉化為無量綱的純數值...
7 資料預處理 資料標準化
這個文章知識講解了入門的資料預處理,更多的歸一化方法請看 sklearn中常用資料預處理方法 由於資料的偏差與跨度會影響機器學習的成效,因此正規化 標準化 資料可以提公升機器學習的成效。首先由例子來講解 例子1 資料標準化 例子2 資料標準化對機器學習成效的影響 資料預處理模組 from sklea...