sklearn feature selection特徵選擇
阿新 • • 發佈:2019-01-29
一、特徵選擇器
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