在sklearn中有這麼幾個常用的預處理方法。另外為了將資料預處理的各個階段連線起來還可以使用pipeline。類功能
說明standardscaler
無量綱化
標準化,基於特徵矩陣的列,將特徵值轉換至服從標準正態分佈
minmaxscaler
無量綱化
區間縮放,基於最大最小值,將特徵值轉換到[0, 1]區間上
normalizer
歸一化基於特徵矩陣的行,將樣本向量轉換為「單位向量」
binarizer
二值化基於給定閾值,將定量特徵按閾值劃分
onehotencoder
啞編碼將定性資料編碼為定量資料
imputer
缺失值計算
計算缺失值,缺失值可填充為均值等
polynomialfeatures
多項式資料轉換
多項式資料轉換
functiontransformer
自定義單元資料轉換
使用單變元的函式來轉換資料函式來轉換資料
首先準備資料
from sklearn.datasets import load_iris
iris = load_iris()
train_data = iris.data
target_data = iris.target
然後是sklearn的具體實現
"""
缺失值計算
"""#缺失值計算,返回值為計算缺失值後的資料
#引數missing_value為缺失值的表示形式,預設為nan
#引數strategy為缺失值填充方式,預設為mean(均值)
from sklearn.preprocessing import imputer
imputer().fit_transform(train_data)
""" 無量綱化
"""#1.標準化
#根據【均值】和【標準差】調整
from sklearn.preprocessing import standardscaler
standardscaler().fit_transform(train_data)
#2.區間縮放
#利用最大最小值縮放
#區間縮放,返回值為縮放到[0, 1]區間的資料
from sklearn.preprocessing import minmaxscaler
minmaxscaler().fit_transform(train_data)
#3.正則化
#正則化和標準化的區別是正則化是根據【特徵均值】和【特徵值標準差】調整
from sklearn.preprocessing import normalizer
normalizer().fit_transform(train_data)
""" 對定量特徵二值化
"""#主要是閾值設定 threshold=n
#閾值設定為3,返回值為二值化後的資料
from sklearn.preprocessing import binarizer
binarizer(threshold=3).fit_transform(train_data)
""" 對定性特徵啞編碼
todo iris資料都是定量的,沒必要做
"""#啞編碼,對iris資料集的目標值,返回值為啞編碼後的資料
from sklearn.preprocessing import onehotencoder
onehotencoder().fit_transform(target_data.reshape((1,-1)))
""" 分類特徵數值化
"""from sklearn.preprocessing import labelencoder
le = labelencoder()
data_pd['l1_index'] = le.fit_transform(data_pd['l1'])
data_pd['topk_word_index'] = le.fit_transform(data_pd['topk_word'])
""" 資料變換
"""#1.多項式轉換
#引數degree為度,預設值為2
from sklearn.preprocessing import polynomialfeatures
polynomialfeatures().fit_transform(train_data)
#2.自定義轉換函式
#第乙個引數是單變元函式
#本例為對數函式的資料變換
from numpy import log1p
from sklearn.preprocessing import functiontransformer
functiontransformer(log1p).fit_transform(train_data)
注:
基於樹的方法是不需要進行特徵的歸一化,例如隨機森林,bagging 和 boosting等。
基於引數的模型或基於距離的模型,都是要進行特徵的歸一化。
sklearn 資料預處理
公式為 x mean std 計算時對每個屬性 每列分別進行。將資料按期屬性 按列進行 減去其均值,並處以其方差。得到的結果是,對於每個屬性 每列來說所有資料都聚集在0附近,方差為1。實現時,有兩種不同的方式 該語言能直接將給定的資料進行。from sklearn import preprocess...
sklearn的資料預處理
sklearn是乙個比較常用的機器學習庫,其中的sklearn.preprocessing包含了常用的預處理函式,一般在kaggle等資料競賽 拿到資料的時候,首先要觀察資料特徵,分布等資訊,然後進行資料預處理。資料預處理有利於計算機進行計算。原始資料存在的問題 1.存在缺失值 2.存在異常點及雜訊...
sklearn中常用資料預處理方法
normalize x,norm l2 axis 1,copy true,return norm false scale input vectors individually to unit norm vector length 範化是將不同變化範圍的值對映到相同的固定範圍,常見的是 0,1 此時也...