【发布时间】:2018-12-21 10:28:00
【问题描述】:
您知道来自 scikit-learn 的模型是使用自动多线程还是仅使用顺序指令?
谢谢
【问题讨论】:
标签: python python-3.x multithreading scikit-learn
您知道来自 scikit-learn 的模型是使用自动多线程还是仅使用顺序指令?
谢谢
【问题讨论】:
标签: python python-3.x multithreading scikit-learn
没有。默认情况下,所有 scikit-learn 估计器仅在单个线程上工作。
但话又说回来,这完全取决于算法和问题。如果算法需要顺序数据,我们无能为力。如果数据集是多类或多标签的,并且算法在一对一的基础上工作,那么是的,它可以使用多线程。
在您要使用的实用程序或算法中查找参数n_jobs,并将其设置为-1 以使用多线程。
例如。
LogisticRegression 如果处理二元问题只会训练单个模型,这将需要数据顺序,所以这里使用n_jobs 没有效果。但它像 OvR 一样处理多类问题,因此它必须使用相同的数据训练那些许多估计器。在这种情况下,您可以使用n_jobs=-1。
DecisionTreeClassifier 本质上启用了多类,不需要训练多个模型。所以我们那里没有那个参数。
像RandomForestClassifier 这样的集成方法将训练多个估计器(无论问题类型如何),这些估计器单独处理数据的某些部分,因此我们可以再次使用n_jobs。
像cross_val_score 或GridSearchCV 这样的交叉验证实用程序将再次处理部分数据或一些单独的参数,这与其他折叠无关,因此我们在这里也可以使用多线程功能。
【讨论】: