有没有一种快速的方法可以同时训练多个模型?

Is there a fast way to train many models at the same time?

我想训练一个 2-way 分类器,也就是说,假设我有 4 类 个要将文本分类到的分类器。我不想将所有训练数据分组到一个训练集中,然后标签将是 4 个标签。相反,我想制作一个二进制标签。例如,我必须首先制作 4 个数据集副本,然后,我制作标签 A,其余的不是 A,然后第二个数据集将是 B 和 Not B,依此类推..

在那之后,我必须制作 4 个模型(例如朴素贝叶斯)并训练我制作的每个数据集。我想要的是一种无需所有这些工作即可完成所有这些工作的方法。这可能吗?

是的,这种单独的二元分类器适用于单个数据集中存在的多个 类 中的每一个的策略称为 "one versus all" 或 "one versus rest". Some sklearn models come with this available as a parameter, such as logistic regression,您可以在其中设置 multi_class 参数到 'ovr' 一个 v. 休息。

有一个很好的 sklearn 对象,它使其他算法变得容易,称为 OneVersusRestClassifier。对于您的朴素贝叶斯示例,它很简单:

from sklearn.multiclass import OneVsRestClassifier
from sklearn.naive_bayes import GaussianNB

clf = OneVsRestClassifier(GaussianNB())

然后您可以从那里照常使用您的分类器,例如clf.fit(X,y)

(有趣的是,当存在三个或更多 类 时,单对所有朴素贝叶斯模型并不简单等同于多项朴素贝叶斯模型,正如我最初假设的那样。有一个简短的例子 here这证明了这一点。)