1. 程式人生 > >sklearn feature selection特徵選擇

sklearn feature selection特徵選擇

一、特徵選擇器

1. sklearn.feature_selection.SelectKBest(score_func, k)

   Select features according to the k highest scores.

  其中引數score_func是評分函式,預設是f_classif ; k預設為10,指定選擇特徵的個數。

2. sklearn.feature_selection.SelectFpr(score_func, alpha=0.05): score_func引數預設如上。

   根據FPR測試選擇alpha以下的pvalues。FPR測試代表假陽性率/誤檢率測試。 它控制錯誤檢測的總量。

    false-positive rate(誤檢率)= sum(fp) / (sum(fp)+sum(tn))

其中P值就是當原假設為真時,所得到的樣本觀察結果更極端的結果出現的概率”。如果P值很小,就表明,在原假設為真的情況下出現的那個分佈裡面,只有很小的部分,比出現的這個事件更為極端

P值碰巧的概率對無效假設統計意義
P>0.05碰巧出現的可能性大於5%不能否定無效假設兩組差別無顯著意義
P<0.05碰巧出現的可能性小於5%可以否定無效假設兩組差別有顯著意義
P <0.01碰巧出現的可能性小於1%可以否定無效假設兩者差別有非常顯著意義

3. sklearn.feature_selection.

SelectFdr(score_func=<function f_classif>alpha=0.05)

選擇估計的錯誤發現率的p值

這使用Benjamini-Hochberg程式。 alpha是預期錯誤發現率的上限。

二、Score_func

三、應用例項

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris 


# 獲取iris資料集
iris = load_iris()
X_data = iris.data
y_data = iris.target

X_train, X_test, y_train, y_test = train_test_split(X_data, y_data, \
                                                    test_size = 0.25, random_state = 1)

from sklearn.feature_selection import SelectKBest, chi2
skb = SelectKBest(chi2, k=2)

X_train_chi2 = skb.fit_transform(X_train, y_train)
X_test_chi2 = skb.transform(X_test)

from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(random_state = 1)
lr.fit(X_train_chi2, y_train)
print('Test accuracy: %.3f' % lr.score(X_test_chi2, y_test))

Test accuracy: 0.684