【发布时间】:2013-01-02 19:53:12
【问题描述】:
我想使用 Scikit-learn 的半监督朴素贝叶斯 (Bernoulli) 的实现。根据this link in github 的说法,一年前有一些工作和讨论(半监督NB 类)。另一方面,似乎有another different implementation (function fit_semi?) which seems it was polished by another user afterwards。但是,它们都没有在当前的稳定版本中可用。
有人可以向我展示一个示例,说明如何在当前版本的 scikit-learn 中使用这两种实现之一来构建半监督朴素贝叶斯?谢谢。
P.S.:我正在使用来自 NLTK 的 scikit-learn 分类器和 SklearnClassifier 类
编辑
我在我的项目中尝试了 SemiSupervisedNB 的代码,将未标记类的标签从 -1 更改为 2(我正在使用 NLTK 中的 SKlearnClassifier,我的未标记类获得标签 2)。但是,我收到 ValueError: array must not contain infs or NaNs when computing d(模型的当前参数和先前参数之间的差异),因为截距数组包含 inf 值......关于如何解决这个问题的任何想法?
【问题讨论】:
-
您可以尝试检查分支并进行处理,但我不确定它目前是否处于良好状态 - 它也远远落后于当前的稳定。您可以尝试将分支变基/合并到当前主控上。但是如果你不熟悉 git / 项目,你可能会遇到一些问题。或者只是等待@larsmans 发表评论并告诉你该怎么做;)
-
感谢您的回复。不幸的是,我现在没有太多时间审查代码......我也会等待@ogrisel :)
-
很抱歉,但我真的没有时间解决这个问题,甚至没有时间指导你如何去做。半监督的 NB 应该可以工作(一位同事几个月前尝试过),但与当前的 scikit-learn 完全不匹配。正如@amueller 建议的那样,您可以尝试重新设置它。
-
@AM2 几个月前我开了一个issue on GitHub 关于这个话题。我找到了一种实现
SemiSupervisedNB工作的方法。但是,到目前为止,我还没有测试过所描述的对主分支的更改是否会影响其他分类器或代码。谨慎尝试! -
@Peter Stahl 谢谢。我在我的项目中尝试了 SemiSupervisedNB 的代码,将未标记类的标签从 -1 更改为 2(我正在使用 NLTK 中的 SKlearnClassifier,我的未标记类获得标签 2)。但是,我收到 ValueError: array must not contain infs or NaNs when computing d(模型的当前参数和先前参数之间的差异),因为截距数组包含 inf 值......关于如何解决这个问题的任何想法?
标签: python classification bayesian scikit-learn bayesian-networks