一、定義
通過特定的統計方法(數學方法)將資料轉換成演算法要求的資料。
二、方法
(一)數值型資料
標準縮放:
1、歸一化
2、標準化
3、缺失值
(二)類別型資料
one-hot編碼
(三)時間型別
時間的切分
三、sklearn特徵處理api
sklearn.preprocessing
四、歸一化
(一)原理
通過對原始資料進行變換把資料對映到(預設為[0,1])之間
(二)目的
使得乙個特徵不會對最終結果造成更大的影響
(三)公式
注:作用於每一列,max為一列的最大值,min為一列的最小值,那麼x』』為最終結果,mx,mi分別為指定區間值預設mx為1,mi為0
(四)sklearn歸一化api
sklearn.preprocessing.minmaxscaler
(五)minmaxscaler語法
minmaxscaler(feature_range=(0,1)…)
每個特徵縮放到給定範圍(預設[0,1])
minmaxscaler.fit_transform(x)
x:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
(六)步驟
1、例項化minmaxscaler
2、通過fit_transform轉換
例如:from sklearn.preprocessing import minmaxscaler
def mm():
「」"歸一化處理
:return:none
「」"mm=minmaxscaler()
data=mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
ifname==『main』:
mm()
返回值:
[[1. 0. 0. 0. ]
[0. 1. 1. 0.83333333]
[0.5 0.5 0.6 1. ]]
(七)應用場景
注意在特定場景下最大值最小值是變化的,另外,最大值與最小值非常容易受異常點影響,所以這種方法魯棒性較差,只適合傳統精確小資料場景。
五、標準化
(一)原理
通過對原始資料進行變換把資料變換到均值為0,標準差為1範圍內
(二)目的
使得乙個特徵不會對最終結果造成更大的影響
(三)公式
注:作用於每一列,mean為平均值,σ為標準差
(四)與歸一化進行比較
1、對於歸一化來說:如果出現異常點,影響了最大值和最小值,那麼結果顯然會發生改變。
2、對於標準化來說:如果出現異常點,由於具有一定資料量,少量的異常點對於平均值的影響並不大,從而方差改變較小。
(五)sklearn歸一化api
scikit-learn.preprocessing.standardscaler
(六)standardscaler語法
standardscaler(…)處理之後每列來說所有資料都聚集在均值0標準差為1附近
1、standardscaler.fit_transform(x)
x:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
2、standardscaler.mean_
原始資料中每列特徵的平均值
3、standardscaler.std_
原始資料每列特徵的方差
(七)步驟
1、例項化standardscaler
2、通過fit_transform轉換
例如:from sklearn.preprocessing import minmaxscaler,standardscaler
def stand():
「」"標準化縮放
:return:none
「」"std=standardscaler()
data=std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
print(data)
ifname==『main』:
stand()
返回值[[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]]
(八)應用場景
在已有樣本足夠多的情況下比較穩定,適合現代嘈雜大資料場景。
六、缺失值
(一)缺失值處理方法
(二)sklearn缺失值api
sklearn.preprocessing.imputer
(三)imputer語法
imputer(missing_values=『nan』,strategy=『mean』,axis=0)完成缺失值插補
imputer.fit_transform(x)
x:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
(四)步驟
1、初始化imputer,指定」缺失值」,指定填補策略,指定行或列
2、呼叫fit_transform
例如:from sklearn.preprocessing import minmaxscaler,standardscaler,imputer
import numpy as np
def im():
「」"缺失值處理
:return:none
「」"#nan,nan
im=imputer(missing_values=『nan』,strategy=『mean』,axis=0)
data=im.fit_transform([[1, 2],[np.nan, 3],[7, 6]])
print(data)
return none
ifname==『main』:
im()
(五)關於np.nan(np.nan)
1、 numpy的陣列中可以使用np.nan/np.nan來代替缺失值,屬於float型別
2、如果是檔案中的一些缺失值,可以替換成nan,通過np.array轉化成float型的陣列即可
特徵預處理,特徵選擇
統一量綱 特徵規格不一樣,不能放在一起比較。主要看模型,比如樹模型就不太需要,而計算距離之類的模型,或者神經網路就需要 主要有標準化,區間放縮,歸一化。標準化 標準化,均值為0,方差為1 from sklearn.preprocessing import standardscaler 標準化,返回值...
特徵工程之特徵預處理
概念 特徵預處理是什麼呢?特徵預處理是通過統計方法 數學方法 將資料轉換成演算法要求的資料,所以特徵預處理也叫做資料預處理。下面是幾種資料預處理的方法 1 數值型資料 標準縮放 1 歸一化2 標準化 2 類別型資料 one hot編碼 3 時間類別 時間的劃分 下面介紹歸一化和標準化歸一化 歸一化 ...
特徵工程之特徵預處理
在前面我們分別討論了特徵工程中的特徵選擇與特徵表達,本文我們來討論特徵預處理的相關問題。主要包括特徵的歸一化和標準化,異常特徵樣本清洗與樣本資料不平衡問題的處理。由於標準化和歸一化這兩個詞經常混用,所以本文不再區別標準化和歸一化,而通過具體的標準化和歸一化方法來區別具體的預處理操作。z score標...