Skip to main content
 首页 » 编程设计

python之使用 scikit-learn 进行 ANOVA 测试的交叉验证特征选择

2025年05月04日21jirigala

我正在使用 scikit-learn 进行特征选择。这是我的代码

from sklearn.feature_selection import GenericUnivariateSelect 
from sklearn.feature_selection import f_classif 
 
 
scores = GenericUnivariateSelect(f_classif, 'k_best').fit(features_pd, target_pd) 

如何使用 f_classif 作为 CV 方式使结果更可靠?

请您参考如下方法:

Scikit-learn 具有递归特征消除和交叉验证选择方法,称为 RFECV .以下代码仅供引用,与给出的例子相似on this link .

import matplotlib.pyplot as plt 
from sklearn.svm import SVC 
from sklearn.cross_validation import StratifiedKFold 
from sklearn.feature_selection import RFECV 
svc = SVC(kernel="linear") 
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(labels, 50), 
      scoring='precision') 
rfecv.fit(features, labels) 
print("Optimal number of features : %d" % rfecv.n_features_) 
print rfecv.support_ 
features=features[:,rfecv.support_] 
# Plot number of features VS. cross-validation scores 
plt.figure() 
plt.xlabel("Number of features selected") 
plt.ylabel("Cross validation score (nb of correct classifications)") 
plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_) 
plt.show() 

示例输出:

引用链接:

编辑:使用方差分析检验的 CV 特征选择

要使用 Anova 测试和交叉验证,您需要使用 Pipeline , Select Percentile和 cross-val score .基于给出的示例 here您可以结合这些技术使用 CV+Annova 测试进行特征选择。