gpt4 book ai didi

python - RFECV 机器学习特征选择花费的 Python 时间太长

转载 作者:行者123 更新时间:2023-12-02 03:06:49 24 4
gpt4 key购买 nike

我是 SKLearn 的新手,对特征选择有疑问。

我正在尝试构建一个 SVM 模型,我的数据具有大约 30 个特征,所有这些特征都大约 10k 个数据点,我目前正在尝试尽可能多地消除无用的特征。我先舍弃了与其他特征高度相关的特征,现在想使用 RFECV 优化剩余的特征。

首先,我在 sklearn 网站上找到了这段代码,我遇到了一些问题,想知道是否有人可以提供帮助。

X = df.drop(['label'], axis=1)
y = df['label']

rfe = RFECV(SVR(kernel='linear'), step=1, scoring='accuracy')
rfe.fit(X, y)
print(rfe.ranking_)

首先,如果我按原样运行它,它需要永远运行,我已经离开它很长时间了,但实际上我还没有设法让它完成。但是,如果我删除 kernel='linear',它运行得相当快,但随后会产生一条错误消息,该消息似乎来自 rfe.fit(X, y):

RuntimeError:分类器未公开“coef_”或“feature_importances_”属性

我已经将我的功能减少到大约 10 个,只是为了看看我是否可以加快速度作为测试,并且还尝试使用 step 变量,但是使用 kernel='linear' 变量似乎没有任何帮助加速它,它只是运行了几个小时而没有做任何事情。我想要的只是使用 RFECV 方法使用的功能列表。有人对我做错了什么或我可以做些什么来加快速度有什么建议吗?

非常感谢

最佳答案

  1. 当您删除“kernel='linear'”时它运行得很快的原因是它很快就会失败。
  2. 只有 SVR(kernel='linear') 返回可由 RFECV 使用的 coef_。如果您使用任何其他内核,则不会返回 coef_,因此 RFECV 无法使用它。
  3. 通过设置“step=1”,您强制 RFECV(SVR(kernel='linear'), step=1, scoring='accuracy') 适应所有 n 个特征,排除系数最低的特征,再次拟合 n-1 个特征,再次排除系数最低的特征,等等。这很耗时。

试试这个来加快这个过程:

RFECV(SVR(kernel='linear'), step=5, scoring='accuracy', min_features_to_select = 10)

这应该明显更快。根据您的特定需求调整“step”和“min_features_to_select”。

关于python - RFECV 机器学习特征选择花费的 Python 时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com