如何在Sklearn中使用SVC运行RFECV [英] How to run RFECV with SVC in sklearn

查看:303
本文介绍了如何在Sklearn中使用SVC运行RFECV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用SVC作为分类器,使用GridSearchCV通过交叉验证(RFECV)进行递归特征消除.

I am trying to perform Recursive Feature Elimination with Cross Validation (RFECV) with GridSearchCV as follows using SVC as the classifier.

我的代码如下.

X = df[my_features]
y = df['gold_standard']

x_train, x_test, y_train, y_test = train_test_split(X, y, random_state=0)

k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)

clf = SVC(class_weight="balanced")
rfecv = RFECV(estimator=clf, step=1, cv=k_fold, scoring='roc_auc')

param_grid = {'estimator__C': [0.001, 0.01, 0.1, 0.25, 0.5, 0.75, 1.0, 10.0, 100.0, 1000.0],
              'estimator__gamma': [0.001, 0.01, 0.1, 1.0, 2.0, 3.0, 10.0, 100.0, 1000.0],
              'estimator__kernel':('rbf', 'sigmoid', 'poly')
       }

CV_rfc = GridSearchCV(estimator=rfecv, param_grid=param_grid, cv= k_fold, scoring = 'roc_auc', verbose=10)

CV_rfc.fit(x_train, y_train)

但是,我收到一条错误消息:RuntimeError: The classifier does not expose "coef_" or "feature_importances_" attributes

However, I got an error saying: RuntimeError: The classifier does not expose "coef_" or "feature_importances_" attributes

有没有办法解决此错误?如果不是,我可以与SVC一起使用的其他feature selection技术是什么?

Is there a way to resolve this error? If not what are the other feature selection techniques that I can use with SVC?

如果需要,我很乐意提供更多详细信息.

I am happy to provide more details if needed.

推荐答案

要查看更多功能选择实现,请查看:

To look at more feature selection implementations you can have a look at:

https://scikit-learn.org/stable /modules/classes.html#module-sklearn.feature_selection

例如,在下一个链接中,他们将PCA与k-best功能选择和svc一起使用.

As an example, in the next link they use PCA with k-best feature selection and svc.

使用的一个示例是,为了更简单起见,可以从上一个链接中进行修改:

An example of use would be, modified form the previous link for more simplicity:

iris = load_iris()

X, y = iris.data, iris.target

# Maybe some original features where good, too?
selection = SelectKBest()

# Build SVC
svm = SVC(kernel="linear")

# Do grid search over k, n_components and C:

pipeline = Pipeline([("features", selection), ("svm", svm)])

param_grid = dict(features__k=[1, 2],
                  svm__C=[0.1, 1, 10])

grid_search = GridSearchCV(pipeline, param_grid=param_grid, cv=5, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)

这篇关于如何在Sklearn中使用SVC运行RFECV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆