【问题标题】:Scikit-learn multithreadingScikit-learn 多线程
【发布时间】:2018-12-21 10:28:00
【问题描述】:

您知道来自 scikit-learn 的模型是使用自动多线程还是仅使用顺序指令?

谢谢

【问题讨论】:

    标签: python python-3.x multithreading scikit-learn


    【解决方案1】:

    没有。默认情况下,所有 scikit-learn 估计器仅在单个线程上工作。

    但话又说回来,这完全取决于算法和问题。如果算法需要顺序数据,我们无能为力。如果数据集是多类或多标签的,并且算法在一对一的基础上工作,那么是的,它可以使用多线程。

    在您要使用的实用程序或算法中查找参数n_jobs,并将其设置为-1 以使用多线程。

    例如。

    • LogisticRegression 如果处理二元问题只会训练单个模型,这将需要数据顺序,所以这里使用n_jobs 没有效果。但它像 OvR 一样处理多类问题,因此它必须使用相同的数据训练那些许多估计器。在这种情况下,您可以使用n_jobs=-1

    • DecisionTreeClassifier 本质上启用了多类,不需要训练多个模型。所以我们那里没有那个参数。

    • RandomForestClassifier 这样的集成方法将训练多个估计器(无论问题类型如何),这些估计器单独处理数据的某些部分,因此我们可以再次使用n_jobs

    • cross_val_scoreGridSearchCV 这样的交叉验证实用程序将再次处理部分数据或一些单独的参数,这与其他折叠无关,因此我们在这里也可以使用多线程功能。

    【讨论】:

    • 感谢您的澄清
    猜你喜欢
    • 2013-10-15
    • 2019-07-21
    • 2016-10-23
    • 1970-01-01
    • 2016-06-05
    • 2012-10-15
    • 2014-08-22
    • 2014-05-11
    • 2023-03-25
    相关资源
    最近更新 更多