Scikit学习多线程

Enz*_*oli 2 python multithreading python-3.x scikit-learn

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

谢谢

Viv*_*mar 9

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

但是,这又取决于算法和问题。如果算法需要顺序数据,那么我们将无能为力。如果数据集是多类或多标签的,并且算法是基于一对多的,那么可以使用多线程。

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

例如。

  • 如果处理二进制问题,则LogisticRegression仅会训练一个模型,这将顺序需要数据,因此使用此处n_jobs无效。但是它像OvR一样处理多类问题,因此它将必须训练使用相同数据的许多估计量。在这种情况下,您可以使用n_jobs=-1

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

  • 诸如RandomForestClassifier之类的集成方法将训练多个估计器(与问题类型无关),这些估计器分别处理数据的某些部分,因此在这里我们可以再次使用n_jobs

  • 交叉验证实用程序(例如GridSearchCVcross_val_scoreGridSearchCV)将再次对数据的某些部分或某些单独的参数起作用,这与其他折叠无关,因此在这里我们也可以使用多线程功能。