模式识别实验二

实验二

一 实验名称

贝叶斯估计

二 目的和意义

  1. 学习使用python进行贝叶斯估计的方法。
  2. 学会简单的贝叶斯学习方法进行机器学习。

三 操作步骤或算法结构

  1. 使用 Python 中 numpy 的库生成指定的(均值 3.6 3.6 3.6 ,标准差 1 1 1 )随机分布样本,作为研究样本,验证之后的方法是否能找到该样本正确的分布参数(numpy.random.normal

  2. 给定参数初始分布估计值(均值3.6,标准差0.4)的情况下,计算样本的均值的贝叶斯估计量(教材公式 3.51 3.51 3.51 )。

    • 公式 3.51 3.51 3.51
      ln ⁡ p ( θ ∣ X , y ) = − 1 2 ( θ − m 0 ) T S 0 − 1 ( θ − m 0 ) + ∑ i = 1 N [ y i ln ⁡ p ( y i ln ⁡ p ( y i = 1 ∣ x i , θ ) ) + ( 1 − y i ) ln ⁡ ( 1 − p ( y i = 1 ∣ x i , θ ) ) ] + const \ln p(\theta|X,\textbf y) = -\frac 12(\theta-m_0)^TS_0^{-1}(\theta-m_0) + \sum\limits^N_{i = 1}[y_i\ln p(y_i\ln p(y_i = 1|x_i,\theta))\\+(1-y_i)\ln(1-p(y_i =1|x_i,\theta))]+\textbf{const} lnp(θX,y)=21(θm0)TS01(θm0)+i=1N[yilnp(yilnp(yi=1∣xi,θ))+(1yi)ln(1p(yi=1∣xi,θ))]+const
  3. 使用贝叶斯学习的方法,通过多次迭代,估计并调整贝叶斯估计值——样本均值,并通过matplotlib 库绘制该估计值的演变过程。

  4. 调整上述步骤中指定的参数,重复实验,观察结果。

四 结构程序设计

编程实现

import matplotlib.pyplot as plt
import numpy as np


def cal(i):
    return 1000 * 1 * 1 / (1000 * 1 * 1 + np.var(example)) * avg(example) + np.var(example) / (
            1000 * 1 * 1 + np.var(example)) * i


def avg(i):
    return sum(i) / len(i)


example = np.random.normal(3.6, 1, 1000)

y = [3]

for i in range(0, 999):
    y.append(cal(y[i]))

绘图

x = range(0, 1000)
plt.plot(x, y)
plt.xlim(0, 4)
plt.show()

五 实验结果分析

得到如下结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据于开始段急速上升而后趋于稳定

调整参数后,实验效果的变化不明显,可能是没能充分掌握各函数的数学意义。对于多个参数的调参,全靠猜测和经验是行不通的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值