天天看點

特征選擇——卡方檢驗(使用Python sklearn進行實作)

在看這篇文章之前,如果對卡方檢驗不熟悉,可以先參考:卡方檢驗

Python有包可以直接實作特征選擇,也就是看自變量對因變量的相關性。今天我們先開看一下如何用卡方檢驗實作特征選擇。

1. 首先import包和實驗資料:

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2
from sklearn.datasets import load_iris

#導入IRIS資料集
iris = load_iris()
iris.data#檢視資料
           

結果輸出:

array([[ 5.1,  3.5,  1.4,  0.2],
       [ 4.9,  3. ,  1.4,  0.2],
       [ 4.7,  3.2,  1.3,  0.2],
       [ 4.6,  3.1,  1.5,  0.2],
       [ 5. ,  3.6,  1.4,  0.2],
       [ 5.4,  3.9,  1.7,  0.4],
       [ 4.6,  3.4,  1.4,  0.3],
           

2. 使用卡方檢驗來選擇特征

model1 = SelectKBest(chi2, k=2)#選擇k個最佳特征
model1.fit_transform(iris.data, iris.target)#iris.data是特征資料,iris.target是标簽資料,該函數可以選擇出k個特征 
           

結果輸出為:

array([[ 1.4,  0.2],
       [ 1.4,  0.2],
       [ 1.3,  0.2],
       [ 1.5,  0.2],
       [ 1.4,  0.2],
       [ 1.7,  0.4],
       [ 1.4,  0.3],
           

可以看出後使用卡方檢驗,選擇出了後兩個特征。如果我們還想檢視卡方檢驗的p值和得分,可以使用第3步。

3. 檢視p-values和scores

model1.scores_  #得分
           

得分輸出為:

array([ 10.81782088, 3.59449902, 116.16984746, 67.24482759])

可以看出後兩個特征得分最高,與我們第二步的結果一緻;

model1.pvalues_  #p-values
           

p值輸出為:

array([ 4.47651499e-03, 1.65754167e-01, 5.94344354e-26, 2.50017968e-15])

可以看出後兩個特征的p值最小,置信度也最高,與前面的結果一緻。

也可以參考官方的幫助文檔:selectKbest幫助文檔