用于一个类分类的算法



我有超过 15000 个特定主题的文本文档。我想基于前者构建一个语言模型,以便我可以向该模型呈现各种主题的新随机文本文档,并且算法会告诉新文档是否属于同一主题。

我尝试了sklearn.naive_bayes.MultinomialNBsklearn.svm.classes.LinearSVC和其他人,但是我有以下问题:

这些算法需要具有多个标签或类别的训练数据,而我只有涵盖特定主题的网页。其他文档没有标记,并且具有许多不同的主题。

我将不胜感激有关如何训练只有一个标签的模型或如何进行一般操作的任何指导。到目前为止,我所拥有的是:

c = MultinomialNB()
c.fit(X_train, y_train)
c.predict(X_test)

谢谢。

你要找的是OneClassSvm。有关更多信息,您可能需要查看此链接中的相应文档。

TextBlob 模块中还有另一个分类器,称为 PositiveNaiveBayesClassifier。引用他们的文档:

朴素贝叶斯分类器的一种变体,它使用部分标记的训练集执行二元分类,即当只有一个类被标记而另一个没有被标记时。 假设两个标签上存在先验分布,则使用未标记的集合来估计特征的频率。

代码用法:

>>> from text.classifiers import PositiveNaiveBayesClassifier
>>> sports_sentences = ['The team dominated the game',
                        'They lost the ball',
                        'The game was intense',
                        'The goalkeeper catched the ball',
                        'The other team controlled the ball']
>>> various_sentences = ['The President did not comment',
                         'I lost the keys',
                         'The team won the game',
                         'Sara has two kids',
                         'The ball went off the court',
                         'They had the ball for the whole game',
                         'The show is over']
>>> classifier = PositiveNaiveBayesClassifier(positive_set=sports_sentences,
                                unlabeled_set=various_sentences)
>>> classifier.classify("My team lost the game")
True
>>> classifier.classify("And now for something completely different.")
False

OCC 问题与异常检测/新颖检测密切相关。在这些问题中,我们只有正类,它们通常是非高斯的。

OCC 的主要动机是缺乏可用于将其定义为另一个类的数据集。通常,使用任何判别模型都会改进这些任务的一对一指标。

流行的方法基于 SVM,例如通常具有非柔性几何边界(订阅超球)的单类 SVM,而灵活的 SVM(没有平移不变内核)是支持向量数据描述 (SVDD) [WIP]。

因此,单类 SVM 是 SVDD 的一个特定情况,其中 K(x,x)=const。

有关更多详细信息,请查看此处。

相关内容

  • 没有找到相关文章

最新更新