python - 将文档分类为多个类别

标签 python machine-learning classification

我写了一个基于Naive Bayes algorithm的分类程序这对于将一份文档仅归为一类非常有效。但是,我的上下文发生了变化,我现在需要将文档分为 N 个类别。

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

我考虑了 2 个选项:

  1. 调整算法并根据概率对可能的类别进行排序。这可能有效,但对我来说似乎不正确。你怎么看?

  2. 使用完全不同的算法,在这种情况下,您会推荐哪一个?

提前感谢您的反馈:)

最佳答案

没有理由不将朴素贝叶斯扩展到多个类别——事实上,它是一个自然扩展到多类别情况的简单分类器。如果您的类别“垃圾邮件和扑克”、“垃圾邮件和其他东西”、“不是垃圾邮件”完全不相交,您可以将其视为一个单一的三向分类任务:如果您的类别 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) 是对这方面内容的非常简单的介绍,如果您碰巧有机会阅读的话。

关于python - 将文档分类为多个类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854304/

相关文章:

python - 如何通过Python上传本地PowerPoint文件到SharePoint目录

python - 将函数传递给 Python 3 中的类

machine-learning - Keras中进行交叉验证和validation_data/validation_split之间的区别

python - 交叉验证分类错误

r - 如何在R中使用e1071包的 'svm'进行多类分类

python - 从 for 循环中获取平均值

python - python中的图像分类

hadoop - 将文件拆分为 80% 和 20% 以在 MapReduce 中构建模型和预测的更好方法

graphics - 使用要点描述符进行图像分类

python - 选择 Bokeh 图中的文本