特徵選擇方法總結

2021-10-11 00:22:34 字數 2630 閱讀 8354

1、方差篩選法

移除低方差的特徵。低方差說明特徵比較均勻,區分度低。如,一列數值全為1,則這列數值的方差為0。這一列特徵對於訓練模型是沒有意義的。

使用方差篩選法的**:

from sklearn.feature_selection import variancethreshold

# 6個樣本,3維的特徵向量

x =[[0

,0,1

],[0

,1,0

],[1

,0,0

],[0

,1,1

],[0

,1,0

],[0

,1,1

]]# 根據方差.對於布林值型別的資料,刪除80%的值都為1或都為0的特徵。所以下面使用0.8

# 由於特徵是伯努利隨機變數(兩個取值),方差計算公式:var_thresh = p(1-p)

df=pd.dataframe(x,columns=

['age'

,'***'

,'level'])

sel = variancethreshold(threshold=(.8

*(1-

.8)))

feature=sel.fit_transform(x)

## feature 的值如下:

array([[

0,1]

,[1,

0],[

0,0]

,[1,

1],[

1,0]

,[1,

1]])

這裡篩選之後,變成了array型別,丟失了特徵名稱,如果想要知道保留的是哪些特徵,可以如下操作

chosed_feat=

all_columns=df.columns.tolist(

)feat_index=sel.get_support(indices=

true

)for i in feat_index:

)## chosed_feat 為 ['***', 'level']

方差分析法可以作為初級的特徵篩選方法,一般可以先將閾值設定大一些(如0.95),先刪除那些取值過於均勻的特徵。

2、基於單變數統計特徵進行選擇

2.1 使用卡方統計量

import numpy as np

from sklearn.datasets import load_iris

from sklearn.feature_selection import selectkbest

from sklearn.feature_selection import chi2

# 載入資料集

iris = load_iris(

)x, y = iris.data, iris.target

data=pd.dataframe(np.array(x)

,columns=

['a'

,'b'

,'c'

,'d'])

print

('原始特徵:'

)print

(x.shape)

print

(x[:10,

:])# 使用卡方分布選擇2個維度的變數

# x_new = selectkbest(chi2, k=2).fit_transform(x, y)

selector = selectkbest(chi2, k=2)

.fit(data, y)

x_new=selector.transform(data)

#fit_transform()就是將fit和transform兩個結合起來了

print

('選取之後:'

)print

(x_new[:10

])fea_index=selector.get_support(indices=

true

)#得到篩選的特徵的index

columns=data.columns.tolist(

) fea=

for i in fea_index:

)print

('篩選的特徵為:'

)print

(fea)

結果如下:

當然,除了卡方(chi),我們也可以使用其他單變數方法。如:

只需要改變selectkbest 中的引數就可以了。如我們可以使使用者資訊方法。

參考的部落格:

1、特徵選擇selectkbest

2、python 特徵選擇

特徵選擇方法總結

摘要 1.特徵選擇的功能 3.過濾特徵選擇 filter feature select 4.嵌入特徵選擇 embeding feature select 內容 1.特徵選擇的功能 減少特徵數量 降維,使模型泛化能力更強,減少過擬合 增強對特徵和特徵值之間的理解 特徵選擇的目標是尋找最優特徵子集。特徵...

特徵選擇 常見方法總結

特徵選擇方法 目的 減少特徵數量 降維,使模型泛化能力更強,減少過擬合增強對特徵和特徵值之間的理解 方法 一 方差選擇法。from sklearn.feature selection import variancethreshold a.特徵值需為離散型變數,若是連續型,需要連續變數離散化。b.最簡...

特徵選擇方法

特徵獲取過程 特徵獲取定義的角度 特徵獲取要解決的兩個問題 啟發式方法為一種近似演算法,具有很強的主觀傾向。隨機方法是一種相對較新的方法,細分為完全隨機方法和概率隨機方法兩種。總的說來,上述三類中只有窮舉法能保證最優,但耗時並且計算複雜度很高,後兩者以效能為代價換取簡單 快速的實現,但不能保證最優。...