几个月前,我在 GitHub 上打开了一个关于这个主题的问题。可以将相应的代码添加到 scikit-learn 的当前 master 分支。
大约一年前,用户@larsmansSemisupervisedNB
在文件中添加了一个实验类。sklearn/naive_bayes.py
此代码位于emnb
他的分叉 scikit-learn 存储库的分支中,可以在此处访问。
基本代码位于两个文件中:
当前主分支中的文件naive_bayes.py
必须替换为该emnb
分支中较旧的文件。
需要对类进行编辑,LabelBinarizer
这可以sklearn/preprocessing.py
在 master 分支的文件中找到。整个类必须由其在@larsmansemnb
分支中的定义替换。在那里,它驻留在文件中sklearn/preprocessing/__init__.py
。
尽管一年来朴素贝叶斯分类器的代码没有太大变化,但还是添加了一些错误修复。naive_bayes.py
因此,保留文件和类的当前版本LabelBinarizer
而不是给实验版本不同的名称是有意义的。
我刚刚创建了自己的 scikit-learn 存储库分支,并将实验文件添加到当前 stable 分支之上0.13.X
。这个分支被调用0.13.X-emnb
并且可以在这里访问。如果您查看我最近的三个提交(1和2和3),您会看到我已更改和新创建的文件。
由于SemisupervisedNB
不能与其他分类器的最新版本一起使用,我刚刚在naive_bayes.py
called旁边添加了一个新模块semisupervised_naive_bayes.py
。在那里,您可以在重命名的版本中找到旧版本的分类器,例如SemiMultinomialNB
,MultinomialNB
这样它们就不会与最新版本的分类器发生冲突。同样,我在SemisupervisedLabelBinarizer
旁边添加了一个类LabelBinarizer
(名称的选择有点不幸,但至少很清楚它应该用于什么)。
因此,如果您想使用分类器的半监督版本,请使用模块sklearn.semisupervised_naive_bayes
。对于当前版本,请使用模块sklearn.naive_bayes
。
但请记住,这是高度实验性的。这只是使旧代码正常工作的设置。我没有搜索错误。