Python 对文档进行多类别分类

Python 对文档进行多类别分类,python,machine-learning,classification,Python,Machine Learning,Classification,我编写了一个基于的分类程序,它可以很好地将一个文档分类为一个类别。然而,我的上下文已经改变,我现在需要将文档分为N个类别 基本上,我需要从“垃圾邮件”/“非垃圾邮件”分类切换到“垃圾邮件和扑克”、“垃圾邮件和其他东西”、“非垃圾邮件” 我考虑了两种选择: 调整算法并按概率对可能的类别进行排序。这可能行得通,但我觉得不对。你觉得怎么样 使用完全不同的算法,在这种情况下,您会推荐哪种算法 提前感谢您的反馈:)我们使用来自Weka库的J48算法(),它工作得很好 而且,Lingpipe工作得很好 这两

我编写了一个基于的分类程序,它可以很好地将一个文档分类为一个类别。然而,我的上下文已经改变,我现在需要将文档分为N个类别

基本上,我需要从“垃圾邮件”/“非垃圾邮件”分类切换到“垃圾邮件和扑克”、“垃圾邮件和其他东西”、“非垃圾邮件”

我考虑了两种选择:

  • 调整算法并按概率对可能的类别进行排序。这可能行得通,但我觉得不对。你觉得怎么样

  • 使用完全不同的算法,在这种情况下,您会推荐哪种算法

  • 提前感谢您的反馈:)

    我们使用来自Weka库的J48算法(),它工作得很好

    而且,Lingpipe工作得很好


    这两种方法都很容易实现,而且都是开箱即用的。

    没有理由不将朴素贝叶斯扩展到多个类别——事实上,它是一个简单的分类器,可以自然地扩展到多个类别。如果您的类别“垃圾邮件和扑克”、“垃圾邮件和其他东西”、“非垃圾邮件”完全不相交,您可以将其视为一个单独的三向分类任务:如果您的类别c_1、c_2和c_3具有先验概率p_1、p_2和p_3,以及似然度(给定类的实例概率)l_1、l_2和l_3,然后,类的后验概率与其前验概率的乘积成正比(正态化器就是p_1*l_1+p_2*l_2+p_3*l_3之和)。这同样适用于任何数量的类

    但是,我怀疑您可能会在实践中发现更好的性能,首先确定它是否是垃圾邮件,然后确定垃圾邮件的类型(两阶段分类过程)


    汤姆·米切尔(Tom Mitchell)的书《机器学习》(Machine Learning)是一本非常通俗易懂的入门书,如果你碰巧有机会使用它。

    因为你的类不是不相交的,这就是多标签分类。在scikit学习包中,使用简单的一对一规则(也称为二进制相关性):对于每个决策,垃圾邮件/非垃圾邮件、扑克/非扑克等,都有一个单独的分类器进行训练,在预测时,每个分类器都在测试样本上独立运行

    更聪明的方法包括


    (免责声明:我在sklearn中编写了部分多标签分类代码,因此这不是无偏见的建议。)

    您可以使用k-最近邻算法对文档进行多类别分类,我使用Python,但我相信我可以在某处找到与lingpipe相当的方法。谢谢你的反馈:)这是我的问题,我的类别不是完全不相交的。我可以有“垃圾邮件和扑克”和“非垃圾邮件和扑克”:/如果你的类别不是不相交的,并且沿着几个独立的轴,那么为每个轴设置分类器,并从它们的组合输出中得出一个复合标签:即垃圾邮件与非垃圾邮件、扑克与非扑克,等等。