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

时间:2019-06-02 18:20:57

标签: python classification text-classification naivebayes multiclass-classification

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

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

1 个答案:

答案 0 :(得分:0)

是的,这种将单独的二进制分类器适合于单个数据集中存在的多个类别中的每个类别的策略称为“一个对所有”或"one versus rest"。某些sklearn模型附带此参数作为参数,例如logistic regression,您可以将multi_class参数设置为'ovr'进行一次休息。

有一个不错的sklearn对象,可以轻松实现称为OneVersusRestClassifier的其他算法。对于您的朴素贝叶斯示例,它很简单:

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

clf = OneVsRestClassifier(GaussianNB())

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

(有趣的是,如我最初所假设的,当存在三个或更多类时,一个朴素贝叶斯模型与所有朴素贝叶斯模型并不简单地等同于多项式朴素贝叶斯。有一个简短的示例here证明了这一点。)< / p>