Skip to main content
 首页 » 编程设计

python之我可以使用 NaiveBayesClassifier 对两个以上的分类进行分类吗

2025年05月04日10落叶无声

我看到的大多数使用 NaiveBayesClassifier 的例子只有两个:“pos”、“neg”。我想进入文本的主题,比如娱乐、体育、电影、政治、文学。可以为此训练 NaiveBayesClassifier,还是我应该寻找其他地方?

请您参考如下方法:

当然可以。当您将训练集传递给 NaiveBayesClassifier.train 方法时,它将为训练集中的每个标签创建一个贝叶斯模型。如果您的训练集有多个标签,那么您的分类器将分类为多个标签。如果你的训练集只有 2 个标签,那么你的分类器只会给出两个分类。当您要求分类器进行分类时,它会返回给定特征集概率最高的模型。

在贝叶斯分类器中,为每个标签创建一个概率模型。选择最匹配特征的模型。这是一个虚构的例子:

import nltk 
 
articles = [({'entertaining':0.6, 'informative':0.2, 'statistical':0.6}, 'sports'), 
            ({'entertaining':0.7, 'informative':0.2, 'statistical':0.8}, 'sports'), 
            ({'entertaining':0.1, 'informative':0.7, 'statistical':0.2}, 'news'), 
            ({'entertaining':0.2, 'informative':0.8, 'statistical':0.3}, 'news'), 
            ({'entertaining':0.8, 'informative':0.2, 'statistical':0.1}, 'movies')] 
 
classifier = nltk.NaiveBayesClassifier.train(articles) 
 
label = classifier.classify({'entertaining':0.9, 'informative':0.2, 'statistical':0.1}) 
 
print label 
#movies     
 
probabilities = classifier.prob_classify({'entertaining':0.9, 'informative':0.2, 'statistical':0.1}) 
 
for sample in probabilities.samples(): 
    print "{0}: {1}".format(sample, probabilities.prob(sample)) 
#news:   0.0580 
#sports: 0.2999 
#movies: 0.6522