【问题标题】:scikit-learn: compute & plot recursive KBEST features (k='all') performancescikit-learn:计算和绘制递归 KBEST 特征(k='all')性能
【发布时间】:2017-06-16 02:35:47
【问题描述】:

我的目标:

  • 使用SelectKBest (KBest)k="all",对排名特征进行排序(简单易行)
  • 绘制已排序特征 (pretty much as this example for recursive feature elimination, RFECV) 的递归/渐进式交叉验证性能,即 1) 计算最顶层特征的交叉验证性能,2) 然后计算最顶层 + 第二个顶层的 cv 性能,3) 然后 + 第三个,... n) 所有特征组合。 (有点辛苦,没有完成)
  • 如下图所示绘制结果(只是使用排序的KBest-all 特征而不是RFECV)。 (简单)。

是的,我可以k-循环所有排名特征,然后“转换”数据以仅允许 k 最佳特征,然后计算每个的交叉验证性能,最后得到所有分数并绘制... -- 我想避免这段代码。

我期待我猜标准答案,一些像这样的包装函数一定已经存在于优秀的scikit-learn 库中。

也许GridSearchCV 可行?

【问题讨论】:

  • 可能这是您应该寻找的功能(RFECV,而不是 RFE)。具有递归特征消除和交叉验证选择最佳特征数量的特征排名。 scikit-learn.org/stable/modules/generated/…
  • 是的——我的错,我本来是想写RFECV的

标签: python machine-learning scikit-learn feature-extraction bigdata


【解决方案1】:

我没有找到标准解决方案,所以这是我所做的伪代码:

(如果有兴趣,很高兴提供一个 Jupyter 工作示例)

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

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 2018-08-16
    • 2017-11-04
    • 2013-08-17
    • 2017-03-30
    • 2020-11-01
    • 2015-11-19
    • 2014-07-12
    • 2013-03-07
    相关资源
    最近更新 更多