python中常用的九種預處理方法分享

2021-08-28 02:26:13 字數 2740 閱讀 1847

1. 標準化(standardization or mean removal and variance scaling)

變換後各維特徵有0均值,單位方差。也叫z-score規範化(零均值規範化)。計算方式是將特徵值減去均值,除以標準差。

sklearn.preprocessing.scale(x)
一般會把train和test集放在一起做標準化,或者在train集上做標準化後,用同樣的標準化器去標準化test集,此時可以用scaler

scaler = sklearn.preprocessing.standardscaler().fit(train)

scaler.transform(train)

scaler.transform(test)

實際應用中,需要做特徵標準化的常見情景:svm

2. 最小-最大規範化

最小-最大規範化對原始資料進行線性變換,變換到[0,1]區間(也可以是其他固定最小最大值的區間)

min_max_scaler = sklearn.preprocessing.minmaxscaler()

min_max_scaler.fit_transform(x_train)

3.規範化(normalization)規範化是將不同變化範圍的值對映到相同的固定範圍,常見的是[0,1],此時也稱為歸一化。

將每個樣本變換成unit norm。

x = [[ 1, -1, 2],[ 2, 0, 0], [ 0, 1, -1]]

sklearn.preprocessing.normalize(x, norm='l2')

得到:

array([[ 0.40, -0.40, 0.81], [ 1, 0, 0], [ 0, 0.70, -0.70]])
可以發現對於每乙個樣本都有,0.4^2+0.4^2+0.81^2=1,這就是l2 norm,變換後每個樣本的各維特徵的平方和為1。類似地,l1 norm則是變換後每個樣本的各維特徵的絕對值和為1。還有max norm,則是將每個樣本的各維特徵除以該樣本各維特徵的最大值。

在度量樣本之間相似性時,如果使用的是二次型kernel,需要做normalization

from sklearn.preprocessing import normalizer

df1_std = normalizer().fit_transform(df1)

df1_std[:5]

4. 特徵二值化(binarization)給定閾值,將特徵轉換為0/1

binarizer = sklearn.preprocessing.binarizer(threshold=1.1)

binarizer.transform(x)

5. 標籤二值化(label binarization)

lb = sklearn.preprocessing.labelbinarizer()
6. 類別特徵編碼有時候特徵是類別型的,而一些演算法的輸入必須是數值型,此時需要對其編碼。

enc = preprocessing.onehotencoder()

enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])

enc.transform([[0, 1, 3]]).toarray() #array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]])

上面這個例子,第一維特徵有兩種值0和1,用兩位去編碼。第二維用三位,第三維用四位。

另一種編碼方式

newdf=pd.get_dummies(df,columns=["gender","title"],dummy_na=true)
7.標籤編碼(label encoding)

le = sklearn.preprocessing.labelencoder() 

le.fit([1, 2, 2, 6])

le.transform([1, 1, 2, 6]) #array([0, 0, 1, 2])

#非數值型轉化為數值型

le.fit(["paris", "paris", "tokyo", "amsterdam"])

le.transform(["tokyo", "tokyo", "paris"]) #array([2, 2, 1])

8.特徵中含異常值時

sklearn.preprocessing.robust_scale
9.生成多項式特徵這個其實涉及到特徵工程了,多項式特徵/交叉特徵。

poly = sklearn.preprocessing.polynomialfeatures(2)

poly.fit_transform(x)

原始特徵:轉化後:

原位址

python中常用的九種預處理方法分享

本文總結的是我們大家在python中常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 1.標準化 standardization or mean removal and variance scaling 變換後各維特徵有0均值,單位方差。也叫z score規範化 零...

sklearn中常用資料預處理方法

normalize x,norm l2 axis 1,copy true,return norm false scale input vectors individually to unit norm vector length 範化是將不同變化範圍的值對映到相同的固定範圍,常見的是 0,1 此時也...

python中常見的資料預處理方法

以下通過sklearn的preprocessing模組 from sklearn.preprocessing import standardscaler 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。1 sklearn.prepro...