資料歸一化處理就是將所有資料都對映到同一尺度
最值歸一化(normalization)把所有資料對映到0-1之間。
使用這種標準化方法的原因是,有時資料集的標準差非常非常小,有時資料中有很多很多零(稀疏資料)需要儲存住0元素。
xsc
ale=
x−xm
inxm
ax−x
mi
nx_=\frac}-x_}
xscale
=xm
ax−
xmin
x−x
min
import numpy as np
import matplotlib.pyplot as plt
x = np.random.randint(0,100,size=100)
(x-np.min(x)) / (np.max(x)-np.min(x))
最值歸一化把資料縮放至給定的最小值與最大值之間,通常是0與1之間,可用minmaxscaler實現。或者將最大的絕對值縮放至單位大小,可用maxabsscaler實現。
公式:
x_std = (x - x.min(axis=0)) / (x.max(axis=0) - x.min(axis=0)) ;
x_scaler = x_std/ (max - min) + min
#例子:將資料縮放至[0, 1]間。訓練過程: fit_transform()
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)
#out: array([[ 0.5 , 0. , 1. ],
[ 1. , 0.5 , 0.33333333],
[ 0. , 1. , 0. ]])
#將上述得到的scale引數應用至測試資料
x_test = np.array([[ -3., -1., 4.]])
x_test_minmax = min_max_scaler.transform(x_test) #out: array([[-1.5 , 0. , 1.66666667]])
#可以用以下方法檢視scaler的屬性
min_max_scaler.scale_ #out: array([ 0.5 , 0.5, 0.33...])
min_max_scaler.min_ #out: array([ 0., 0.5, 0.33...])
與上述標準化方法相似,但是它通過除以最大值將訓練集縮放至[-1,1]。這意味著資料已經以0為中心或者是含有非常非常多0的稀疏資料。
x_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
max_abs_scaler = preprocessing.maxabsscaler()
x_train_maxabs = max_abs_scaler.fit_transform(x_train)
# doctest +normalize_whitespace^, out: array([[ 0.5, -1., 1. ], [ 1. , 0. , 0. ], [ 0. , 1. , -0.5]])
x_test = np.array([[ -3., -1., 4.]])
x_test_maxabs = max_abs_scaler.transform(x_test) #out: array([[-1.5, -1. , 2. ]])
max_abs_scaler.scale_ #out: array([ 2., 1., 2.])
均值方差歸一化是把所有資料歸一到均值為0方差為1的分布中:
xsc
ale=
x−xm
eans
x_=\frac}
xscale
=sx
−xme
an
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)
#output :x_scaled = [[ 0. -1.22474487 1.33630621]
[ 1.22474487 0. -0.26726124]
[-1.22474487 1.22474487 -1.06904497]]
#scaled之後的資料零均值,單位方差
x_scaled.mean(axis = 0) # column mean: array([ 0., 0., 0.])
x_scaled.std(axis = 0) #column standard deviation: array([ 1., 1., 1.])
standardscaler計算訓練集的平均值和標準差,以便測試資料集使用相同的變換。
scaler = preprocessing.standardscaler().fit(x) #out: standardscaler(copy=true, with_mean=true, with_std=true)
scaler.mean_ #out: array([ 1., 0. , 0.33333333])
scaler.std_ #out: array([ 0.81649658, 0.81649658, 1.24721913])
#測試將該scaler用於輸入資料,變換之後得到的結果同上
scaler.transform(x) #out: array([[ 0., -1.22474487, 1.33630621], [ 1.22474487, 0. , -0.26726124], [-1.22474487,1.22474487, -1.06904497]])
scaler.transform([[-1., 1., 0.]]) #scale the new data, out: array([[-2.44948974, 1.22474487, -0.26726124]])
機器學習 資料預處理
均值為0,標準差為1 from sklearn import preprocessing scaler preprocessing.standardscaler scaler.fit transform x 對原始資料進行線性變換,變換到 0,1 區間 也可以是其他固定最小最大值的區間 from s...
機器學習 資料預處理
1 連續資料特徵離散化的方法 由於lr 中模型表達能力有限,可以通過特徵離散化來提高非線性學習能力。主要方法 1 等距離散 取值範圍均勻劃分成n 等分,每份的間距相等。2 等頻離散 均勻分為n 等分,每份內包含的觀察點數相同 3 優化離散 3 1 卡方檢驗方法 統計樣本的實際觀測值與理論判斷值之間的...
機器學習處理離散資料 機器學習一 資料預處理
為了能更系統的整理到學的知識進行乙個整理,也作為乙個自我監督,接下來就把較為系統的知識點都整理到部落格上。相應的 也會同步到github上。下面所有的 都是使用python寫的,資料預處理主要用到的是sklearn.preprocessing模組 sklearn.apachecn.org cn 0....