我正在使用scikit学习做特征选择。这是我的密码
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是一种简历方式,这样的结果就更可靠了?
发布于 2017-08-28 19:56:10
Scikit-learn有一个递归的特征消除和交叉验证的选择方法,称为RFECV。下面的代码可供参考,类似于给定的在这个链接上示例。
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测试和交叉验证,您需要使用管道、选择百分位数和交叉val评分。根据给定的这里示例,您可以结合这些技术来使用CV+Annova测试进行特征选择。
https://stackoverflow.com/questions/45925011
复制相似问题