使用Sklearn的RFECV(带交叉验证的递归特征消除)选择特定数量的特征

我想知道是否可以使用Sklearn的RFECV来选择固定数量的最重要特征。例如,在处理一个包含617个特征的数据集时,我试图使用RFECV来查看这5个特征中哪些是最重要的。然而,与RFE不同的是,RFECV没有’n_features_to_select’参数,这让我感到困惑。我应该如何处理这个问题?


回答:

根据这个Quora帖子

RFECV对象通过交叉验证来调整或寻找这个n_features参数。在每次消除“step”数量的特征时,它会在验证数据上计算得分。在验证数据上得分最高的那一步剩余的特征数量,被认为是“最佳n_features”。

这表明RFECV决定了最佳的特征数量(n_features)以获得最佳结果。
拟合后的RFECV对象包含一个ranking_属性,用于特征排名,以及一个support_掩码来选择找到的最优特征。
但是,如果你必须从RFECV中选择前n_features,你可以使用ranking_属性

optimal_features = X[:, selector.support_] # selector是一个拟合后的RFECV对象n = 6 # 选择前6个特征feature_ranks = selector.ranking_  # selector是一个拟合后的RFECV对象feature_ranks_with_idx = enumerate(feature_ranks)sorted_ranks_with_idx = sorted(feature_ranks_with_idx, key=lambda x: x[1])top_n_idx = [idx for idx, rnk in sorted_ranks_with_idx[:n]]top_n_features = X[:5, top_n_idx]

参考资料:sklearn文档Quora帖子

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注