首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多项式朴素贝叶斯分类问题,需要归一化?

多项式朴素贝叶斯分类问题,需要归一化?
EN

Stack Overflow用户
提问于 2019-07-30 18:26:24
回答 1查看 153关注 0票数 0

使用多项朴素贝叶斯进行分类不起作用,请参阅代码

代码语言:javascript
复制
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction import DictVectorizer
import numpy as np

# training data
data = [
{'house': 100, 'street': 50, 'shop': 25, 'car': 100, 'tree': 20},

{'house': 5, 'street': 5, 'shop': 0, 'car': 10, 'tree': 500, 'river': 1}
] 

dv = DictVectorizer(sparse=False)
X = dv.fit_transform(data)
Y = np.array([10, 20])


mnb=MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
mnb.fit(X, Y)

# test data
test_data1 = [
{'testname': 0, 'street': 0, 'shop': 0, 'car': 0, 'Hi': 0, 'Blue': 5},
]


print (mnb.predict(dv.transform(test_data1)) )

输出是10,但我期望它是20。

我的理解是,这里出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-01 19:36:10

您的测试集为10和20提供了相同的概率。下面是一个关于朴素贝叶斯如何计算每个输出类别的概率的示例。https://medium.com/syncedreview/applying-multinomial-naive-bayes-to-nlp-problems-a-practical-explanation-4f5271768ebf

在您的示例中,测试数据中的任何属性都不会出现在训练数据中(单词street、shop和car的概率为0)。

尝试运行代码

代码语言:javascript
复制
#Return probability estimates for the test vector X.
print (mnb.predict_proba(dv.transform(test_data1)) ) 

这两个类的精度都是0.5。所以模型返回的第一个类是10。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57269570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档