我想执行递归功能消除与包括交叉验证(RFECV)。我的问题是,虽然我对我的数据进行了大量抽样,但我的特征数(278)太慢了,而且很可能无法在我分配给实验的时间内完成。
我已经看到,通过定义可以并行运行的作业数量,scikit- defining中的典型交叉验证支持并行化。是否有可能将RFECV中的任务并行化?
发布于 2017-02-11 12:56:13
版本0.18版本的变更量显示RFECV现在支持n_jobs
。
遵循RFECV文件中的示例(我将n_samples
从50改为5000)
from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFECV
from sklearn.svm import SVR
X, y = make_friedman1(n_samples=5000, n_features=5, random_state=0)
estimator = SVR(kernel="linear")
1份工作:22.5
%%time
selector = RFECV(estimator, step=1, cv=5, n_jobs=1)
selector = selector.fit(X, y)
CPU times: user 23.1 s, sys: 2.71 s, total: 25.8 s
Wall time: 22.5 s
4份工作:11.8
%%time
selector = RFECV(estimator, step=1, cv=5, n_jobs=4)
selector = selector.fit(X, y)
CPU times: user 3.42 s, sys: 312 ms, total: 3.74 s
Wall time: 11.8 s
https://stackoverflow.com/questions/38313512
复制