Python機器學習 資料預處理

2021-10-04 23:49:42 字數 3233 閱讀 8546

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

import numpy as np

from sklearn.preprocessing import minmaxscaler

x = np.array([[

-1,2

],[-

0.5,6]

,[0,

10],[

1,18]

])#實現歸一化

scaler = minmaxscaler(

)#例項化

scaler = scaler.fit(x)

#fit,在這裡本質是生成min(x)和max(x)

result = scaler.transform(x)

#通過介面匯出結果

#也可以訓練和匯出結果一步達成

# result_ = scaler.fit_transform(data)

standardization標準化:將特徵資料的分布調整成標準正太分布,也叫高斯分布,也就是使得資料的均值維0,方差為1.

from sklearn.preprocessing import standardscaler

scaler = standardscaler(

)#例項化

scaler.fit(data)

#fit,本質是生成均值和方差

scaler.mean_ #檢視均值的屬性mean_

scaler.var_ #檢視方差的屬性var_

x_std = scaler.transform(data)

#通過介面匯出結果

x_std.mean(

)#匯出的結果是乙個陣列,用mean()檢視均值

x_std.std(

)#用std()檢視方差

scaler.fit_transform(data)

#使用fit_transform(data)一步達成結果

大多數機器學習演算法中,會選擇standardscaler來進行特徵縮放,因為minmaxscaler對異常值非常敏感。在pca,聚類,邏輯回歸,

支援向量機,神經網路這些演算法中,standardscaler往往是最好的選擇。

minmaxscaler在不涉及距離度量、梯度、協方差計算以及資料需要被壓縮到特定區間時使用廣泛,比如數字影象

處理中量化畫素強度時,都會使用minmaxscaler將資料壓縮於[0,1]區間之中。

原理與上面的很像,只是資料會被規模化到[-1,1]之間。也就是特徵中,所有資料都會除以最大值。這個方法對那些已經中心化均值維0或者稀疏的資料有意義,後者不會改變矩陣的稀疏性,是0的還是0,而前者會改變。

根據四分位數來縮放資料。對於資料有較多異常值的情況,使用均值和方差來標準化顯然不合適,按中位數,一、四分位數縮放效果要好

使用百分位教轉換特徵,通過縮小邊緣異常值和非異常值之間的距離來提供特徵的非線性變換。可以使用引數output_distribution = "normal"來將資料對映到標準正態分佈。

sklearn.preprocessing.quantiletransformer(n_quantiles=1000, output_distribution=』uniform』,

ignore_implicit_zeros=false, subsample=100000, random_state=none, copy=true)

正則化是縮放單個樣本以具有單位範數的過程,這裡的」範數」,可以使用l1或l2範數。如果你計畫使用二次形式(如點積或任何其他核函式)來量化任何樣本間的相似度,則此過程將非常有用。

這個觀點基於 向量空間模型(vector space model) ,經常在文字分類和內容聚類中使用。

sklearn.preprocessing.normalizer(norm=』l2』, copy=true)

其中,norm : 『l1』, 『l2』, or 『max』, optional (『l2』 by default)

1.labelencoder:標籤專用,能夠將分類轉換為分類數值

import pandas as pd

from sklearn.preprocessing import labelencoder

y = pd.dataframe([『yes』,『yes』,『yes』,『no』,『no』,『no』],columns=[『target』])

label = labelencoder().fit_transform(y)

label

ordinalencoder:特徵專用,能夠將分類特徵轉換為分類數值

import pandas as pd

from sklearn.preprocessing import ordinalencoder

x = pd.dataframe([[『male』,『high』],

[『female』,『high』],

[『male』,『low』],

[『female』,『medium』],

[『female』,『medium』],

[『female』,『low』]],

columns=[『***』,『income』])

x = ordinalencoder().fit_transform(x)

onehotencoder:類別ordinalencoder可以用來處理有序變數,但對於名義變數,我們只有使用啞變數的方式來處理,才能夠盡量向演算法傳達最準確的資訊。

import pandas as pd

from sklearn.preprocessing import onehotencoder

x = pd.dataframe([『male』,『female』,『male』,『female』,『female』,『female』],columns=[『***』])

x = onehotencoder().fit_transform(x).toarray()

離散化(也稱為量化或繫結)提供了一種將連續特徵劃分為離散值的方法。某些具有連續特徵的資料集可能受益於離散化,因為離散化可以將連續屬性的資料集轉換為僅具有名義屬性的資料集。

kbinsdiscretizer:k個等寬箱的離散化特徵,預設情況下,輸出是one-hot編碼成稀疏矩陣,並且可以使用encode引數。對於每個特性,在fit再加上分箱的數量,他們會定義間隔。

機器學習python資料預處理

from pandas import read csv from sklearn.preprocessing import standardscaler from numpy import set printoptions from sklearn.preprocessing import minm...

Python機器學習之資料預處理

coding utf 8 created on sat sep 29 22 39 26 2018 author lxiao217 email lxiao217 163.com 資料預處理 csv comma srpared values,以逗號為分隔符的數值 如果資料以csv檔案的形式儲存在硬碟上,...

python 機器學習之資料預處理

資料預處理方法,主要是處理資料的量綱和同趨勢化問題。import numpy as np from sklearn import preprocessing 零均值規範 data np.random.rand 3,4 隨機生成3行4列的資料 data standardized preprocessi...