《贝叶斯思维:统计建模的Python学习法》一2.6 M&M豆问题

简介:

本节书摘来自异步社区《贝叶斯思维:统计建模的Python学习法》一书中的第2章,第2.6节,作者【美】Allen B. Downey,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.6 M&M豆问题

我们可以使用Suite框架来解决M&M豆的问题。除了编写Likelihood有点棘手,其他一切都很简单。

首先,需要对1995年之前和之后的颜色混合情况进行封装:

mix94=dict(brown= 30,
           yellow= 20,
           red= 20,
           green= 10,
           orange= 10,
           tan= 10) 

    mix96=dict(blue= 24,
               green= 20,
               orange= 16,
               yellow= 14,
               red= 13,
               brown= 13)

然后,封装假设:

    hypoA =dict(bag1 = mix94,bag2 = mix96) 
    hypoB =dict(bag1 = mix96,bag2 = mix94)

hypoA表示假设袋1是1994年,袋2是1996年。hypoB是相反的组合。

接下来,从假设的名称来映射其含义:

hypotheses=dict(A=hypoA,B=hypoB)

最后,开始编写Likelihood。在这种情况下,假设hypo是一个A或B的字符串,数据是一个指定了袋子年份和颜色的元组。

  def Likelihood(self, data, hypo):
      bag, color = data
      mix = self.hypotheses[hypo][bag]
      like = mix[color]
      return like

下面是创建该suite对象并进行更新的代码:

suite = M_and_M('AB')

suite.Update(('bag1', 'yellow'))
suite.Update(('bag2', 'green')) 

suite.Print()

结果如下:

A 0.740740740741 
B 0.259259259259

A的后验概率大约是20/27,正是我们之前得到的。

本节中的代码可以从http://thinkbayes.com/m_and_m.py获得。欲了解更多信息,请参见前言的“代码指南”。

相关文章
|
1月前
|
数据采集 自然语言处理 算法
如何使用Python的Gensim库进行自然语言处理和主题建模?
使用Gensim库进行自然语言处理和主题建模,首先通过`pip install gensim`安装库,然后导入`corpora`, `models`等模块。对数据进行预处理,包括分词和去除停用词。接着,创建字典和语料库,使用`Dictionary`和`doc2bow`。之后,应用LDA算法训练模型,设置主题数量并创建`LdaModel`。最后,打印每个主题的主要关键词。可以根据需求调整参数和选择不同算法。
26 0
|
2月前
|
XML 存储 数据处理
python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(附代码)
python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(附代码)
55 0
|
7天前
|
自然语言处理 数据可视化 Python
python主题建模可视化LDA和T-SNE交互式可视化
python主题建模可视化LDA和T-SNE交互式可视化
13 0
|
11天前
|
机器学习/深度学习 数据可视化 数据挖掘
用Python进行健康数据分析:挖掘医疗统计中的信息
【4月更文挑战第12天】Python在医疗健康数据分析中扮演重要角色,具备数据处理、机器学习、可视化及丰富生态的优势。基本流程包括数据获取、预处理、探索、模型选择与训练、评估优化及结果可视化。应用案例包括疾病预测、药物效果分析和医疗资源优化,例如使用RandomForestClassifier进行疾病预测,Logit模型分析药物效果,以及linprog优化医疗资源配置。
|
15天前
|
数据采集 存储 人工智能
【python】python汽车效能数据集—回归建模(源码+数据集)【独一无二】
【python】python汽车效能数据集—回归建模(源码+数据集)【独一无二】
|
16天前
|
测试技术 Python
288统计出现最多次的字母(PYTHON)
288统计出现最多次的字母(PYTHON)
|
1月前
|
存储 数据管理 Serverless
Python实现:教你轻松统计文件夹下文件个数
Python实现:教你轻松统计文件夹下文件个数
26 0
|
1月前
|
存储 数据采集 数据挖掘
python数据分析——数据分类汇总与统计
数据分类汇总与统计是指将大量的数据按照不同的分类方式进行整理和归纳,然后对这些数据进行统计分析,以便于更好地了解数据的特点和规律。
58 1
|
1月前
|
机器学习/深度学习 算法 数据挖掘
python数据分析——数据分析的统计推断
数据分析的统计推断是科学研究中的重要环节,它通过对样本数据的分析,对总体参数进行估计,并对假设进行检验。这一过程旨在从数据中提取有意义的信息,为决策提供科学依据。 在统计推断中,我们通常会遇到两类问题:参数估计和假设检验。参数估计是通过样本数据对总体参数进行点估计或区间估计。点估计是对总体参数的具体数值进行预测,而区间估计则是给出一个包含总体参数的置信区间。这两种估计方法都基于大数定律和中心极限定理,保证了估计的准确性和可靠性。
45 0