我想为我的数据尝试几种不同的模型并交叉验证它们,因此结果有些可靠。
对于我的交叉验证,我调用:
cross_val_score(model, X, y, scoring = 'mean_squared_error', cv=kf, n_jobs = -1)
它并行执行了我的 10 倍交叉验证。由于我正在运行的机器有 40 个内核和足够的内存,我想并行尝试四个不同的“模型”值,每个值都进行 10 倍交叉验证。
但是,当我尝试以下列方式使用 joblib 时,出现错误:
results = Parallel(n_jobs = num_jobs)(delayed(crossVal)(model) for model in models)
/usr/local/lib/python2.7/dist-packages/sklearn/cross_validation.py:1433: UserWarning: Multiprocessing-backed parallel loops cannot be nested, setting n_jobs=1 for train, test in cv)
其中crossVal是我定义的一个方法,主要是调用cross_val_score。
有没有一种优雅的方法可以在不手动启动几个不同的 python 文件的情况下做到这一点?