【发布时间】:2018-09-07 19:19:17
【问题描述】:
我将 scikit-learn 和 cross_validate 函数用于一个简单的机器学习模型。我想将函数参数“n_jobs”设置为“-1”以允许使用多个内核。但是,如果总是出错。有没有人可以解决这个问题?
这是错误信息:
File "C:\ProgramData\Anaconda3\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\ProgramData\Anaconda3\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\ProgramData\Anaconda3\lib\multiprocessing\popen_spawn_win32.py", line 33, in __init__
prep_data = spawn.get_preparation_data(process_obj._name)
File "C:\ProgramData\Anaconda3\lib\multiprocessing\spawn.py", line 172, in get_preparation_data
main_mod_name = getattr(main_module.__spec__, "name", None)
AttributeError: module '__main__' has no attribute '__spec__'
我的代码如下所示:
#Go trough each alpha, save average RMSE from crossvalidation into array
for k, i in enumerate(alpha):
Model.set_params(Ridge__alpha = i)
scores = cross_validate(Model,X,y,scoring='neg_mean_squared_error',cv=10,n_jobs=-1)
avgRMSE[k] = np.mean(np.sqrt(-1*scores['test_score']))
我使用以下版本: 蟒蛇 3.6 蟒蛇5.1 scikit-learn 0.19.1 scipy 1.0.0 numpy 1.14.2
完全相同的脚本在我朋友的笔记本电脑(Win10 与我相同的操作系统)上运行,没有任何问题。我不知道这里有什么问题,所以我真的希望在这里得到一些帮助:)
【问题讨论】:
标签: python multithreading scikit-learn