如何计算 naive_bayes MultinomialNB 中的 feature_log_prob_

2023-12-08

这是我的代码:

# Load libraries
import numpy as np
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
# Create text
text_data = np.array(['Tim is smart!',
                      'Joy is the best',
                      'Lisa is dumb',
                      'Fred is lazy',
                      'Lisa is lazy'])
# Create target vector
y = np.array([1,1,0,0,0])
# Create bag of words
count = CountVectorizer()
bag_of_words = count.fit_transform(text_data)    # 

# Create feature matrix
X = bag_of_words.toarray()

mnb = MultinomialNB(alpha = 1, fit_prior = True, class_prior = None)
mnb.fit(X,y)

print(count.get_feature_names())
# output:['best', 'dumb', 'fred', 'is', 'joy', 'lazy', 'lisa', 'smart', 'the', 'tim']


print(mnb.feature_log_prob_) 
# output 
[[-2.94443898 -2.2512918  -2.2512918  -1.55814462 -2.94443898 -1.84582669
  -1.84582669 -2.94443898 -2.94443898 -2.94443898]
 [-2.14006616 -2.83321334 -2.83321334 -1.73460106 -2.14006616 -2.83321334
  -2.83321334 -2.14006616 -2.14006616 -2.14006616]]

我的问题是:
假设单词:“最佳”:的概率class 1 : -2.14006616.
得到这个分数的计算公式是什么。

我在用LOG (P(best|y=class=1)) -> Log(1/2)-> 无法获取-2.14006616


来自文档我们可以推断feature_log_prob_对应于给定类别的特征的经验对数概率。为了便于说明,让我们举一个“最佳”功能示例,log该特征对于类别的概率1 is -2.14006616(正如您所指出的),现在如果我们将其转换为实际的概率分数,它将是np.exp(1)**-2.14006616 = 0.11764。让我们再退一步看看班级“最佳”的概率如何以及为何1 is 0.11764。根据文档多项式朴素贝叶斯,我们看到这些概率是使用以下公式计算的:

enter image description here

其中,分子大致对应于特征“最佳”在类中出现的次数1(这是我们在这个例子中感兴趣的)在训练集中,分母对应于类的所有特征的总数1。另外,我们添加一个小的平滑值,alpha防止概率为零n对应于特征总数,即词汇量的大小。计算我们的示例中的这些数字,

N_yi = 1  # "best" appears only once in class `1`
N_y = 7   # There are total 7 features (count of all words) in class `1`
alpha = 1 # default value as per sklearn
n = 10    # size of vocabulary

Required_probability = (1+1)/(7+1*10) = 0.11764

您可以以类似的方式对任何给定的功能和类进行数学计算。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算 naive_bayes MultinomialNB 中的 feature_log_prob_ 的相关文章

随机推荐

  • 如何在流式查询中执行动态SQL?

    我正在使用 Spark 结构化流 并处理来自 Kafka 的消息 在某一时刻 我的结果表如下所示 其中数据集中的每一行都有一个 Spark SQL 查询 code triggerSql US SELECT FROM def UK SELEC
  • 如何/声明 google-play-services-component 时出错

    我正在使用 eclipse Java ADT 包 我正在尝试让 google 地图 api 正常工作 文档中引用的启动和运行 google 地图的方法是 设置 Google Play SDK gt 引用 eclipse 的库项目 http
  • 失败:元数据错误:java.lang.RuntimeException:无法实例化 org.apache.hadoop.hive.metastore.HiveMetaStoreClient

    当 HDFS 和 hive 实例运行时 我关闭了 HDFS 客户端 现在 当我重新登录 Hive 时 我无法执行任何 DDL 任务 例如 显示表 或 描述表名 等 它给了我如下错误 ERROR exec Task SessionState
  • 如何查询嵌套对象?

    我在使用嵌套对象表示法查询 mongoDB 时遇到问题 db messages find headers From email protected count 0 db messages find headers From email pr
  • 如何在 XMPP iOS 中获取消息已发送、已看到、失败和未读消息计数? (斯威夫特3.0)

    我正在开发聊天应用程序 因为我陷入了两种情况 1 如何获取消息状态 如已发送 已查看等 我做了以下事情 self xmppMessageDeliveryRecipts XMPPMessageDeliveryReceipts dispatch
  • 为什么这里会发生CMS(并发模式失败)?

    Operation System Red Hat Linux 4 8 CPU Info Intel R Xeon R CPU 5160 3 00GHz X 16 JDK version 1 5 0 16 JVM Parameter serv
  • Jquery 日期选择器 Chrome

    在使用 jQuery UI Datepicker 时 我们在 Google Chrome 中使用时遇到一个问题 当我们输入大于 12 的日期时 它不接受它作为有效日期 这是因为 chrome 认为日期格式是 mm dd yyyy 我们尝试通
  • 指针 - 减少内存消耗

    我一直在为 OpenGL 练习编写 Minecraft 复制品 我猜有很多 但是在编写了基本渲染 API 后 我注意到真正的 Minecraft 使用了lot或内存 大约 800MB 我完全理解为什么它必须记住所有块以及小怪以及生成器的地形
  • AS3 中的安全沙箱

    什么是安全沙箱违规 如何覆盖它 我正在 FlashDevelop 中制作一个项目 今天 它不会加载外部文件 即使以前加载过 它给出以下输出 安全沙箱违规 连接到 文件 C Documents 20and 20Settings Kevin P
  • 从浏览器控制台删除错误消息 (Angular HttpClient)

    HttpClient 有没有办法从浏览器控制台中删除错误消息 我当前的代码如下所示 getStuff stuffId string Observable
  • 如何从 UIPickerview 中删除选择行

    嗨我正在使用picker view 默认情况下选择第一行 我不想要这个选项 例如 我有 否 和 是 选项 如果我在pickerview中给出此选项 否 将在pickerview中被选择 附上屏幕截图 我不需要这个 我需要第一行为空 一旦用户
  • 如何从 Postman Rest 客户端发送 spring csrf 令牌?

    I have CSRF保护在Spring框架中 因此 在每个请求中 我从 ajax 调用的标头中发送 csrf 令牌 这是完美的工作 var token meta name csrf attr content var header meta
  • Android初学者padding和margin的区别[重复]

    这个问题在这里已经有答案了 我已经提出了有关SO的问题 还检查了一个答案 填充是边框内部 边框与实际视图内容之间的空间 请注意 填充完全围绕内容 顶部 底部 右侧和左侧都有填充 可以是独立的 边距是边框外部 边框与该视图旁边的其他元素之间的
  • Xcode 中的 Target 到底是什么?

    我一直想知道这些目标是怎么回事 这是什么一回事呢 那有什么意义呢 我从来不需要摆弄它们 但显然我可以 我为什么要这样 我能用它们做什么 他们的目的是什么 每个项目都可以构建多个可执行文件或库 或者调用 makefile 或 shell 脚本
  • C++11 中的逗号运算符(排序)

    标准中提到f a t 3 t 2 c 根据我的理解 这将是一个赋值表达式 后跟第二个运算符的表达式 但语法将其并列列出 表达 赋值表达式 表达式 赋值表达式 工作草案 编程标准 C语言 修订版 N4140 2014 年 11 月 有人好心向
  • 了解异步和等待

    我正在尝试学习 MVC5 的细节 但遇到了一些让我困惑的事情 在默认情况下带有个人身份验证的 MVC5 项目的 accountController 中 异步登录和注册方法中有这行代码 var result await UserManager
  • `git` 显示克隆后更改的文件,无需任何其他操作

    git clone email protected erocarrera pydot 35a8d858b 在 Debian 中git config core autocrlf input shows modified test graphs
  • 检查是否是用户首次访问

    不知道如何做到这一点 但我想做的是运行一个简单的 jquery 动画 例如 intro eq 0 delay 800 animate opacity 0 1000 function this remove 但仅当用户第一次访问该网站时 因此
  • Jekyll 博客显示类别下的帖子

    我想显示来自某个类别的帖子 例如 转到 urlhttp example com posts programming将列出所有类别为 编程 的帖子 我的一般博客索引如下所示 for post in site posts div class p
  • 如何计算 naive_bayes MultinomialNB 中的 feature_log_prob_

    这是我的代码 Load libraries import numpy as np from sklearn naive bayes import MultinomialNB from sklearn feature extraction t