我对SKLearn还是比较陌生,对功能选择有疑问。
我正在尝试建立一个SVM模型,我的数据具有大约30个特征(全部约1万个数据点),并且我目前正在尝试消除尽可能多的无用特征。我首先删除了与其他功能高度相关的功能,现在想使用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: The classifier does not expose "coef_" or "feature_importances_" attributes
我已经将功能缩减到大约10个,只是为了查看我是否可以加快测试速度,还尝试了step
变量和kernel='linear'
变量那里似乎没有什么可以帮助加快它的速度,它只运行了几个小时就什么都不做。我只想要列出使用RFECV方法使用的功能。有人对我做错了什么或我可以做些什么来加快速度吗?
非常感谢
答案 0 :(得分:2)
尝试以下方法以加快流程:
RFECV(SVR(kernel='linear'), step=5, scoring='accuracy', min_features_to_select = 10)
这应该明显更快。根据您的特定需求调整“步骤”和“ min_features_to_select”。