1. 程式人生 > 實用技巧 >機器學習-特徵處理

機器學習-特徵處理

引自:https://www.cnblogs.com/xiaorui111/p/10907224.html

一.預處理的作用

在機器學習任務中,學習器都會對資料有一定的要求,比如在最近鄰演算法中,我需要尋找與中心點最近鄰的點,假設我們使用歐式距離度量,如果有一個屬性值是千萬量級,而另一個屬性是100以內,那麼如此計算的距離會嚴重依賴於大量級的屬性,這對最後模型結果是有很大的影響的。總之,預處理的目的就是為了能夠讓學習器得到“乾淨”的資料。

二.歸一化

通過原始資料進行變換把資料對映到(預設為[0,1])之間,作用於每一列將性縮放到一個指定的最大和最小值(通常是1-0)之間,這可以通過preprocessing.MinMaxScaler類實現。

  • 公式:max,min為一列最大,最小值
  • API:sklearn.preprocessing.MinMaxScaler
  • 相關語法:
MinMaxScaler(feature_range=(0,1),......).fit_transform(x)
###feature_range設定縮放給定的範圍;x為所需要處理的資料集
  • 缺點:在特定的場景下最大值最小值是變化的,易受異常點的影響,只適用精確小資料

三.標準化

當個體特徵太過或明顯不遵從高斯正態分佈時,標準化表現的效果較差。實際操作中,經常忽略特徵資料的分佈形狀,移除每個特徵均值,劃分離散特徵的標準差,從而等級化,進而實現資料中心化。通過對原始資料進行變換把資料變換到均值為0,標準差為1的範圍內(作用於每一列)。

  • 公式:
  • API:sklearn.preprocessing.StandardScaler
  • 相關語法:
StandardScaler().fit_transform(x)   ###例項化,並轉換資料
StandardScaler.mean_   ###檢視原始資料中每列平均值
StandardScaler.var_    ###檢視原始資料中每列方差

四.正則化

正則化的過程是將每個樣本縮放到單位範數(每個樣本的範數為1),如果要使用如二次型(點積)或者其它核方法計算兩個樣本之間的相似性這個方法會很有用。
該方法是文字分類和聚類分析中經常使用的向量空間模型(Vector Space Model)的基礎.
Normalization主要思想是對每個樣本計算其p-範數,然後對該樣本中每個元素除以該範數,這樣處理的結果是使得每個處理後樣本的p-範數(l1-norm,l2-norm)等於1。

  • p-範數的計算公式:||X||p=(|x1|p+|x2|p+...+|xn|p)1/p
  • API:sklearn.preprocessing.Normalizer
  • 相關語法:
Normalizer().fit_transform(x)    ###例項化,並轉換資料

五.二值化

特徵的二值化主要是為了將資料特徵轉變成boolean變數。在sklearn中,sklearn.preprocessing.Binarizer函式可以實現這一功能,Binarizer函式也可以設定一個閾值,結果資料值大於閾值的為1,小於閾值的為0。

  • API:sklearn.preprocessing.Binarizer
  • 相關語法:
Binarizer().fit_transform(x)    ###例項化,並轉換資料

六.Onehot編碼

在建模過程中,我們通常會碰到各種型別的屬性,如果是標稱型屬性,也就是不具備序列性、不能比較大小的屬性,通常我們不能用簡單的數值來粗暴替換。因為屬性的數值大小會影響到權重矩陣的計算,不存在大小關係的屬性,其權重也不應該發生相應的變化,那麼我們就需要用到One-hot編碼(也有人稱獨熱編碼)這種特殊的編碼方式了。

  • API:sklearn.preprocessing.OneHotEncoder
  • 相關語法:
OneHotEncoder().fit_transform(x)    ###例項化,並轉換資料

七.缺失值的處理

由於各種原因,許多現實的資料集包含缺失值,通常變為為空白、NaN或其他佔位符。使用不完整資料集的基本策略是丟棄包含缺失值的整行或整列,然而這樣會丟失可能有價值的資料。一個更好的策略就是從已知的部分資料中推斷出缺失值。
Imputer類提供了基本的策略來填充缺失值,可以用行或者列的均值、中位數或眾數來填充缺失值。

  • API:sklearn.preprocessing.imputer
  • 相關語法:
imputer(missing_values=, strategy= ,axis=1.......)  
###missing_values為缺失的資料,strategy為需要代替的資料