資料的特徵預處理
數值型資料:
標準縮放: 歸一化 標準化 缺失值
類別型資料:one-hot編碼
時間型別: 時間的切分
歸一化處理:統計人覺得幾個特徵同等重要時,要用歸一化
目的:使得乙個特徵不會對最終結果不會造成更大影響
特點: 通過對原始資料進行變換,把資料對映到(預設[0,1])之間
公式:x′=
(x−m
in)/
(max
−min
)x'=(x-min)/(max-min)
x′=(x−
min)
/(ma
x−mi
n)x ′′
=x′(
mx−m
i)+m
ix''=x'(mx-mi)+mi
x′′=x′
(mx−
mi)+
mi注: 作用於每一列 min為每列最小,max為每列最大 預設mx=1,mi=0, 可以通過feature_range=(mi,mx)修改。
缺點:受異常點影響大,魯棒性較差,只適合傳統精確小資料場景
sklearn歸一化api:sklearn.preprocessing.minmaxscaler
minmaxscaler(feature_range=(0,1)...)
每個特徵縮放到給定範圍(預設[0,1])
minmaxscalar.fit_transform(x)
x:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
**:
from sklearn.preprocessing import minmaxscaler
defmm()
:"""
歸一化處理 可以設定歸一化後的特徵值範圍
:return:none
"""mm=minmaxscaler(feature_range=(2
,3))
data=mm.fit_transform([[
90,2,
10,40]
,[60,
4,15,
45],[
75,3,
13,46]
])print
(data)
if __name__==
"__main"
: mm(
)
[[3. 2. 2. 2. ]
[2. 3. 3. 2.83333333]
[2.5 2.5 2.6 3. ]]
總結:
注意在特定場景下最大值最小值是變化的,另外,最大值與最小值非常容易受異常點影響,所有這種方法魯棒性較差,只適合傳統精確小資料場景。
特點: 通過對原始資料進行變換把資料變換到均值為0,方差為1範圍內
公式:x′=
(x−m
ean)
/c
x'=(x-mean)/c
x′=(x−
mean
)/c注意:作用於每一列,mean為平均值,c為標準差
對於歸一化來說:如果出現異常點,影響了最大值和最小值,那麼結果顯然會發生改變
對於標準化來說:如果出現異常點,由於具有一定資料量,少量的異常點對於平均值的影響並不大,從而方差改變較小。
sklearn特徵化api:skikit-learn:scikit-learn.preprocessing.standardscaler
standardscaler(...)
處理之後每列來說所有資料都聚集在均值0附近標準差差為1
standardscaler.fit_transform(x)
x:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
standardscaler.mean_
原始資料中每列特徵的平均值
standardscaler.std_
原始資料每列特徵的方差
**:
from sklearn.preprocessing import standardscaler
defstand()
:"""
標準化縮放
:return:
"""std=standardscaler(
)
data=std.fit_transform([[
1.,-
1.,3
.],[
2.,4
.,2.
],[4
.,6.
,-1.
]])print
(data)
return
none
if __name__==
"__main"
: stand(
)
[[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]]
標準化總結:
在已有樣本足夠多的情況下比較穩定,適合現在嘈雜大資料場景。
數值型資料: 標準縮放:
1、歸一化
2、標準化
3、缺失值
類別型資料: one-hot編碼
時間型別: 時間的切分
缺失值處理方法:
1.刪除:如果每列或者行資料缺失值達到一定的比例,建議放棄整行或者整列
插補:可以通過缺失值每行或者每列的平均值、中位數來填充
2、sklearn缺失值api:sklearn.preprocessing.imputer
imputer(missing_values='nan',strategy='mean',axis=0)
完成缺失值插補
imputer.fit_transform(x)
x:numpy array格式的資料[n_samples,n_features]
返回值:轉換後的形狀相同的array
**:
from sklearn.preprocessing import imputer
import numpy as np
defim()
:"""
缺失值處理
:return:
"""im=imputer(missing_values=
'nan'
,strategy=
'mean'
,axis=0)
data=im.fit_transform([[
1,2]
,[np.nan,3]
,[7,
6]])
print
(data)
return
none
if __name__==
"__main"
: im(
)
[[1. 2.]
[4. 3.]
[7. 6.]]
機器學習 資料特徵預處理
通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料 數值型資料 標準縮放 1 歸一化 2 標準化 3 缺失值 類別型資料 one hot編碼 時間型別 時間的切分 sklearn特徵處理api sklean.preprocessing 特點 通過對原始資料進行變化把資料對映到 預設為 0,1...
機器學習 特徵預處理
通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料的過程。特徵的單位或者大小相差較大,或者某特徵的方差相比其他的特徵要大出幾個數量級,容易影響 支配 目標結果,使得一些演算法無法學習到其它的特徵。對資料進行標準化或者歸一化可解決此類現象 資料標準化 是消除變數間的量綱關係,從而使資料具有可...
機器學習 特徵工程 特徵預處理
定義 將原始資料轉換為更好地代表 模型的潛在問題的特徵的過程,從而提高了對未知資料的 準確性。內容 主要有三部分 1 特徵抽取 2 特徵預處理 3 資料的降維 特徵預處理 通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料。1 包含內容 2 sklearn特徵處理api sklearn.pr...