Python scikit学习:计算与编程;绘制递归KBEST特征(k=';全部';)性能
我的目标是:Python scikit学习:计算与编程;绘制递归KBEST特征(k=';全部';)性能,python,machine-learning,scikit-learn,feature-extraction,bigdata,Python,Machine Learning,Scikit Learn,Feature Extraction,Bigdata,我的目标是: 使用和k=“all”,对分级功能进行排序(简单易行) 绘制排序特征()的递归/渐进式交叉验证性能,即1)计算最顶端特征的交叉验证性能,2)然后计算最顶端+第二顶端的cv性能,3)然后+第三。。。n) 所有功能组合在一起。(有点辛苦&没有完成) 如下图所示绘制结果(仅使用排序后的KBest all功能,而不是RFECV)。(简单) 是的,我可以k-循环所有排名特征,然后“转换”数据以仅允许k最佳特征,然后计算每个特征的交叉验证性能,最后获得所有分数并绘制…--我想避免使用这种代码
- 使用和
,对分级功能进行排序(简单易行)k=“all”
- 绘制排序特征()的递归/渐进式交叉验证性能,即1)计算最顶端特征的交叉验证性能,2)然后计算最顶端+第二顶端的cv性能,3)然后+第三。。。n) 所有功能组合在一起。(有点辛苦&没有完成)
- 如下图所示绘制结果(仅使用排序后的
功能,而不是RFECV)。(简单)KBest all
k
-循环所有排名特征,然后“转换”数据以仅允许k
最佳特征,然后计算每个特征的交叉验证性能,最后获得所有分数并绘制…--我想避免使用这种代码
我期待一个标准答案,因为我想像这样的包装函数一定已经存在于优秀的scikit learn
库中了
也许用它是可行的
我没有找到标准的解决方案,因此这是我所做工作的伪代码: (如果有兴趣,很乐意提供Jupyter工作示例) -
可能这就是您应该寻找的函数(RFECV,而不是RFE)。具有递归特征消除和交叉验证选择最佳特征数的特征排序。是的,我的错,我本来打算写RFECV的
def get_sorted_kbest_feature_keys(kbest_fitted_model):
return [fkey for fkey, _ in sorted(enumerate(kbest_fitted_model.scores_), key=lambda tuple: tuple[1], reverse=True)]
def select_features_transformer_function(X, **kwargs):
selected_feature_keys = kwargs["selected_feature_keys"]
X_new = X[:, selected_feature_keys]
# apply other transformers as desired
return X_new
kbest = SelectKBest(scoring_func, k="all") # scoring_func like "f1_macro"
kbest.fit(X, y)
selected_feature_keys = get_kbest_sorted_feature_keys(kbest)
scores = []
for num_seletected_kbest_features in range(1, num_features + 1):
selected_feature_keys = sorted_kbest_feature_keys[:num_seletected_kbest_features]
my_transformer = FunctionTransformer(select_features_transformer_function, accept_sparse=True, kw_args={"selected_feature_keys": selected_feature_keys})
classifier = # example SVC
estimator = make_pipeline(my_transformer, classifier)
cv_scores = cross_val_score(estimator, X, y, scoring=scoring_name, verbose=True, n_jobs=-1)
scores.append(cv_scores.mean())
# Then I can plot the scores as in:
### http://scikit-learn.org/stable/auto_examples/feature_selection/plot_rfe_with_cross_validation.html#sphx-glr-auto-examples-feature-selection-plot-rfe-with-cross-validation-py