【特征選擇】過濾式特征選擇法
阿新 • • 發佈:2018-04-30
ont topk 泛化能力 cccccc 大於 pre 定性 輸出 eat 方差選擇法適用於離散型特征,連續型特征需要須離散化後使用;方差較小的特征很少,方差選擇法簡單但不好用,一般作為特征選擇的預處理步驟,先去掉方差較小的特征,然後使用其他特征選擇方法選擇特征。
# 過濾式特征選擇法的原理
使用發散性或相關性指標對各個特征進行評分,選擇分數大於閾值的特征或者選擇前K個分數最大的特征。
# 過濾式特征選擇法的特點
特征選擇過程與學習器無關,相當於先對初始特征進行過濾,再用過濾後的特征訓練學習器。過濾式特征選擇法簡單、易於運行、易於理解,通常對於理解數據有較好的效果,但對特征優化、提高模型泛化能力來說效果一般。
# 常用的過濾式特征選擇法
- 方差選擇法
使用方差作為特征評分標準,如果某個特征的取值差異不大,通常認為該特征對區分樣本的貢獻度不大,因此在構造特征過程中去掉方差小於閾值的特征。註意:
# -*- coding: utf-8 -*- # 載入數據 from sklearn.datasets import load_iris iris = load_iris() print("iris特征名稱\n",iris.feature_names) print("iris特征矩陣\n",iris.data) # 特征選擇--方差選擇法 from sklearn.feature_selection import VarianceThreshold vt= VarianceThreshold(threshold = 1) # threshold為方差的閾值,默認0 vt = vt.fit_transform(iris.data) # 函數返回值為特征選擇後的特征 print("方差選擇法選擇的特征\n",vt)
- 卡方檢驗法(分類問題)
使用統計量卡方檢驗作為特征評分標準,卡方檢驗值越大,相關性越強(卡方檢驗是評價定性自變量對定性因變量相關性的統計量)
# -*- coding: utf-8 -*- # 載入數據 from sklearn.datasets import load_iris iris = load_iris() # 特征選擇from sklearn.feature_selection import SelectKBest # 移除topK外的特征 from sklearn.feature_selection import chi2 # 卡方檢驗 skb = SelectKBest(chi2,k=2) new_data = skb.fit_transform(iris.data,iris.target)
- 皮爾森相關系數法法(回歸問題)
使用pearson系數作為特征評分標準,相關系數絕對值越大,相關性越強(相關系數越接近於1或-1時,相關性越強;相關系數越接近於0時,相關性越弱)。
# -*- coding: utf-8 -*- # 載入數據 from sklearn.datasets import load_iris irisdata = load_iris() # 特征選擇(pearson相關系數法) from sklearn.feature_selection import SelectKBest # 移除topK外的特征 from scipy.stats import pearsonr # 計算皮爾森相關系數 from numpy import array """ # 函數返回值:保留topk特征,移除topk外特征 # 第一個參數:皮爾森相關系數(輸入特征矩陣和目標向量,輸出二元組(評分,P),二數組第i項為第i個特征的評分和p值 # 第二個參數:topK個數 """ skb = SelectKBest(lambda X, Y: tuple(map(tuple,array(list(map(lambda x:pearsonr(x, Y), X.T))).T)), k=3) skb = skb.fit_transform(irisdata.data, irisdata.target)
【特征選擇】過濾式特征選擇法