Python 3.x 在管道上工作时,RandomSearchCV太慢
我正在测试使用超参数运行功能选择的方法 我正在运行功能选择算法Python 3.x 在管道上工作时,RandomSearchCV太慢,python-3.x,scikit-learn,xgboost,feature-selection,hyperparameters,Python 3.x,Scikit Learn,Xgboost,Feature Selection,Hyperparameters,我正在测试使用超参数运行功能选择的方法 我正在运行功能选择算法SequentialFeatureSelection和超参数算法RandomizedSearchCV和xgboost模型 我运行以下代码: from xgboost import XGBClassifier from mlxtend.feature_selection import SequentialFeatureSelector from sklearn.pipeline import Pipeline from sklearn.
SequentialFeatureSelection
和超参数算法RandomizedSearchCV
和xgboost
模型
我运行以下代码:
from xgboost import XGBClassifier
from mlxtend.feature_selection import SequentialFeatureSelector
from sklearn.pipeline import Pipeline
from sklearn.model_selection import RandomizedSearchCV
import pandas as pd
def main():
df = pd.read_csv("input.csv")
x = df[['f1','f2','f3', 'f4', 'f5', 'f6','f7','f8']]
y = df[['y']]
model = XGBClassifier(n_jobs=-1)
sfs = SequentialFeatureSelector(model, k_features="best", forward=True, floating=False, scoring="accuracy", cv=2, n_jobs=-1)
params = {'xgboost__max_depth': [2, 4], 'sfs__k_features': [1, 4]}
pipe = Pipeline([('sfs', sfs), ('xgboost', model)])
randomized = RandomizedSearchCV(estimator=pipe, param_distributions=params,n_iter=2,cv=2,random_state=40,scoring='accuracy',refit=True,n_jobs=-1)
res = randomized.fit(x.values,y.values)
if __name__=='__main__':
main()
文件input.csv
只有39行数据(不包括标题):
如您所见,数据量太小,需要优化的参数也很少
我检查了CPU的数量:
lscpu
我得到:
CPU(s): 12
因此,可以创建12个线程并并行运行
我查看了这篇帖子:
但是我已经使用了n\u jobs=-1
那为什么它跑得太慢了?(超过15分钟!!!)?这应该只需要一瞬间,我以前认为为嵌套作业设置n_jobs>1是有问题的;尝试将功能选择器或随机搜索设置为
n\u jobs=1
。然而,在Colab上尝试您的脚本和一些变体,一切都很好,最多只需要几秒钟。您使用的是什么版本的sklearn?另请参见scikit learn==0.24.1I我尝试将XGBClassifier和SequentialFeatureSelector设置为n_jobs=1,但结果相同。。。
CPU(s): 12