【问题标题】:scikit-learn cross_validate parameter n_jobs=-1 causes errorscikit-learn cross_validate 参数 n_jobs=-1 导致错误
【发布时间】: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


    【解决方案1】:

    如果我在外部系统终端中执行我的脚本并写入

    如果 name == 'ma​​in':

    脚本开头:我的问题解决了。

    仍然想知道是否有更好的解决方案,尤其是因为在我朋友的系统上,它在没有该修复的情况下运行(而且他使用相同的操作系统和硬件)

    例子:

    #Imports are here
    
    if __name__ == '__main__':
    
        #All the other code start from here
    
        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']))
    
        #More code
    

    【讨论】:

    猜你喜欢
    • 2017-12-08
    • 2019-05-09
    • 2020-03-26
    • 2020-09-30
    • 1970-01-01
    • 2018-08-10
    • 2013-04-21
    • 1970-01-01
    • 2018-08-08
    相关资源
    最近更新 更多