【學習摘錄】機器學習特徵選擇

應用過機器學習進行數據挖掘的同窗應該都知道特徵選擇對模型表現的重要性。本文基於網上經典特徵選擇相關文章整理出乾貨:經常使用方法分類以及調包俠該如何用sklearn快速上手,供你們參考。

(一)預處理:

1 無量綱化:

1.1 區間縮放
from sklearn.preprocessing 
import MinMaxScaler #區間縮放,返回值爲縮放到[0, 1]區間的數據
MinMaxScaler().fit_transform(iris.data)
1.2 標準化(特徵值服需從正態分佈)
from sklearn.preprocessing import StandardScaler #標準化,返回值爲標準化後的數據
StandardScaler().fit_transform(iris.data)

2 特徵二值化:定量特徵二值化的核心在於設定一個閾值,大於閾值的賦值爲1,小於等於閾值的賦值爲0

3 特徵啞變量

4 缺失值計算:通常以均值填充

5 數據變換:常見的數據變換有基於多項式的、基於指數函數的、基於對數函數的

(二)特徵選擇

1 過濾

1.1 基於方差
from sklearn.feature_selection
import VarianceThreshold
#方差選擇法,返回值爲特徵選擇後的數據 #參數threshold爲方差的閾值
VarianceThreshold(threshold=3).fit_transform(iris.data)
1.2 相關係數
from sklearn.feature_selection 
import SelectKBest
from scipy.stats import pearsonr
SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)
1.3 卡方檢驗
from sklearn.feature_selection
import SelectKBest
from sklearn.feature_selection import chi2#選擇K個最好的特徵,返回選擇特徵後的數據
SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)
1.4 互信息

2 遞歸特徵消除:遞歸消除特徵法使用一個基模型來進行多輪訓練,每輪訓練後,消除若干權值係數的特徵,再基於新的特徵集進行下一輪訓練

3 嵌入法

3.1 基於懲罰項的特徵選擇法
3.2 樹模型中GBDT也可用來做爲基模型進行特徵選擇,使用feature_selection庫的SelectFromModel類結合GBDT模型,來選擇特徵的代碼以下:
from sklearn.feature_selection 
import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier  
SelectFromModel(GradientBoostingClassifier()).fit_transform(iris.data, iris.target)

(四)降維

1 主成分分析

from sklearn.decomposition 
import PCA2 3 #主成分分析法,返回降維後的數據 #參數n_components爲主成分數目 PCA(n_components=2).fit_transform(iris.data)

2 線性判別分析

from sklearn.lda 
import LDA2 3 #線性判別分析法,返回降維後的數據 #參數n_components爲降維後的維數 LDA(n_components=2).fit_transform(iris.data, iris.target)

參考:機器學習

  1. http://note.youdao.com/notesh...(收藏自公衆號數據挖掘入門與實戰)函數

  2. https://www.zhihu.com/questio...學習

相關文章
相關標籤/搜索