有没有Python中的朴素贝叶斯分类器?

22
  • 我已经尝试了Orange框架进行朴素贝叶斯分类。

    • 这些方法非常不直观,文档组织也非常混乱。这里有没有其他的框架可以推荐?
    • 目前我主要使用NaiveBayesian
  • 我在考虑使用nltk的NaiveClassification,但是他们认为它不能处理连续变量。

我的选择有哪些?

6个回答

25

scikit-learn有高斯朴素贝叶斯分类器的实现。总的来说,该库的目标是在易于阅读和使用的代码与效率之间提供良好的平衡。希望这将是一个学习算法工作的好库。


13

这个链接可能是一个不错的起点。它提供了一个朴素贝叶斯分类器的完整源代码(包括文本解析器、数据存储和分类器)的 Python 实现。虽然它很完整,但也足够小,可以在一次会话中消化掉。我认为这段代码写得相当不错,并且有良好的注释。这是《集体智慧编程》一书的源代码文件之一。

要获取源代码,请单击该链接,下载并解压缩zip文件,从主文件夹“PCI_Code”转到“chapter 6”文件夹,其中有一个名为“docclass.py”的 Python 源代码文件。 这是贝叶斯垃圾邮件过滤器的完整源代码。训练数据(电子邮件)保存在一个 SQLite 数据库中,该数据库也包含在同一个文件夹中('test.db')。你所需的唯一外部库是 Python 绑定到 sqlite 的库(pysqlite),如果还没有安装 sqlite,你也需要安装它。


1
我可以为Toby的书添加一个插头吗?它非常出色。如果你正在使用他的源代码,支持他可能是一个不错的选择!最重要的是,这个文件展示了一个朴素贝叶斯系统,如果你去掉SQL处理,只需要几行代码就可以实现。如果你想要一个小的贝叶斯分类器,你可以非常简单地自己制作。重要的函数只有"fprob"、"weightedprob"和"naivebayes.classify"。 - Ian
我发现《集体智慧编程》中的源代码非常糟糕(可能是因为它是用一个较旧、丑陋的Python版本编写的)。尽管代码很丑陋,但我强烈推荐这本书作为机器学习入门。 - Buttons840
1
下载链接已经失效了。有没有人知道新的链接是什么? - krasnaya

9
如果你正在处理自然语言,请查看自然语言工具包
如果你正在寻找其他东西,这里有一个简单的PyPI搜索
看起来pebl可以处理连续变量。

你知道有什么可以允许连续变量的东西吗? - disappearedng
pebl教程涵盖了离散化,因此我认为它可以通过该方法处理连续变量,至少如此。 - Hank Gay

3

我发现Divmod Reverend是最简单、最易于使用的Python贝叶斯分类器。


链接失效。https://github.com/MostAwesomeDude/divmod-docs 看起来是有效的。 - Quamis
链接对我仍然有效... - Cerin
是的,昨天我尝试时没有成功。 - Quamis
1
现在两个链接都失效了。 - Basic

2

0

还有 SpamBayes,我认为它可以用作一般的朴素贝叶斯分类器,而不仅是用于垃圾邮件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接