您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

用Python实例分类多项式朴素贝叶斯分类器

5b51 2022/1/14 8:20:24 python 字数 3401 阅读 435 来源 www.jb51.cc/python

我正在寻找一个关于如何运行Multinomial Naive Bayes分类器的简单示例.我从StackOverflow中看到了这个例子: Implementing Bag-of-Words Naive-Bayes classifier in NLTK import numpy as np from nltk.probability import FreqDist from nltk.classi

概述

Implementing Bag-of-Words Naive-Bayes classifier in NLTK

import numpy as np
from nltk.probability import FreqDist
from nltk.classify import SklearnClassifier
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_selection import SelectKBest,chi2
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline

pipeline = Pipeline([('tfidf',TfidfTransformer()),('chi2',SelectKBest(chi2,k=1000)),('nb',MultinomialNB())])
classif = SklearnClassifier(pipeline)

from nltk.corpus import movie_reviews
pos = [FreqDist(movie_reviews.words(i)) for i in movie_reviews.fileids('pos')]
neg = [FreqDist(movie_reviews.words(i)) for i in movie_reviews.fileids('neg')]
add_label = lambda lst,lab: [(x,lab) for x in lst]
#Original code from thread:
#classif.train(add_label(pos[:100],'pos') + add_label(neg[:100],'neg'))
classif.train(add_label(pos,'pos') + add_label(neg,'neg'))#Made changes here

#Original code from thread:    
#l_pos = np.array(classif.batch_classify(pos[100:]))
#l_neg = np.array(classif.batch_classify(neg[100:]))
l_pos = np.array(classif.batch_classify(pos))#Made changes here
l_neg = np.array(classif.batch_classify(neg))#Made changes here
print "Confusion matrix:\n%d\t%d\n%d\t%d" % (
          (l_pos == 'pos').sum(),(l_pos == 'neg').sum(),(l_neg == 'pos').sum(),(l_neg == 'neg').sum())

运行此示例后,我收到了警告.

C:\Python27\lib\site-packages\scikit_learn-0.13.1-py2.7-win32.egg\sklearn\feature_selection\univariate_selection.py:327: 
UserWarning: Duplicate scores. Result may depend on feature ordering.There are probably duplicate features,or you used a classification score for a regression task.
warn("Duplicate scores. Result may depend on feature ordering."

Confusion matrix:
876 124
63  937

所以,我的问题是……

>有谁能告诉我这个错误信息是什么意思?
>我对原始代码进行了一些更改,但为什么混淆矩阵的结果比原始代码中的结果要高得多呢?
>如何测试此分类器的准确性?

混淆矩阵更高(或不同),因为您正在训练不同的数据.

混淆矩阵是衡量准确度的指标,并显示误报的数量等.阅读更多内容http://en.wikipedia.org/wiki/Confusion_matrix

总结

以上是编程之家为你收集整理的用Python实例分类多项式朴素贝叶斯分类器全部内容,希望文章能够帮你解决用Python实例分类多项式朴素贝叶斯分类器所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶