贝叶斯方法---分段线性插值函数画图

一、贝叶斯方法介绍

1.不确定表示

在主观贝叶斯方法中,知识是用产生式表示的,其形式为:

IF    E   THEN  (LS,LN)   H

其中(LS,LN)用来表示该知识的知识强度,LS(充分性度量)和LN(必要性度量)的表示形式分别为:

 

LS 和 LN 的性质:

(1)LS和LN的取值范围均为[0,+∞)。

(2) LS>1: 表明证据 E 是对 H 有利的证据。

 LN>1: 表明证据¬E 是对 H 有利的证据。

 所以:不能出现 LS>1 且 LN>1 的取值。

(3) LS<1: 表明证据 E 是对 H 不利的证据。

 LN<1:表明证据¬E 是对 H 不利的证据。

 所以:不能出现 LS<1 且 LN<1 的取值,一般情况下,取 LS>1, LN<1。

2.不确定性的传递算法

根据E的概率P(E)及LS和LN的值,把H的先验概率P(H)或先验几率O(H)更新为后验概率或后验几率。由于一条知识所对应的证据可能为真,也可能为假,还可能既非为真又非为假,因此,把H的先验概率或先验几率更新为后验概率或后验几率时,需要根据证据的不同情况去计算其后验概率或几率。

(1)证据肯定为真

当证据E肯定为真时,P(E)=P(E|S)=1。如果把H的先验概率P(H)更新为后验概率P(H|E),则可以得到概率和几率的对应关系:

 (2)证据肯定为假

当证据E肯定为假时,P(E)=P(E|S)=0,P(﹁E)=1。    把先验概率P(H)更新为后验概率P(H|﹁E),则可以得到概率和几率的对应关系:

 (3)证据既非为真又非为假

当证据既非真假时,需要使用杜达等人给出的公式:P(H|E)=P(H|E)×P(E|S)+P(H|﹁E)×P(﹁E|S)。   

下面分四种情况讨论:

 1). P(E|S)=1, 当P(E|S)=1时,P(﹁E|S)=0。由之前的关系式和全概率公式可得:

2). P(E|S)=0,当P(E|S)=0时,P(﹁E|S)=1。由全概率式可得:

3). P(E|S)=P(E),当P(E|S)=P(E)时,表示E与S无关。根据全概率公式可得:

 4).  P(E/S)为其它值,上面已经得到了P(E|S)的3个特殊值:0,P(E),1;它们分别对应的3个值为P(H|﹁E),P(H),P(H|E)。由此构造的分段线性插值函数为:

 二、分段线性插值函数绘制

1.代码

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
//graphics.h属于easyx外部库,在cmakelist导入即可
float ls,ln,ph,pe,phs,pes,phne,phe;
//ls表示充分性度量,ln必要性度量,取值0到无穷大
//ph表示h的先验概率P(H),pe表示概率P(E)
//phe 表示P(H|E),phs表示后验概率P(H|E)
//pes表示P(E|S)  ,phns表示P(H|-S)

int main()
{
    printf("please input the value:ls,ln,ph,pe:");
    scanf("%f/n",&ls);
    scanf("%f/n",&ln);
    scanf("%f/n",&ph);
    scanf("%f/n",&pe);

    initgraph(1000, 600);  //设定窗口

    setlinecolor(WHITE);         //设定线的颜色
    setlinestyle(PS_SOLID,3); //设定线的粗细
    line(800,500,100,500);   //绘画x轴,长度700
    line(100,500,100,100);   //绘画y轴,高度400

    //绘画(pes>=0)&&(pes<=pe)区间线段,根据特殊点(0,phne)和(pe,ph)画
    phs=phne=(ln*ph)/((ln-1)*ph+1);
    printf("phs=phne= %f",phs);
    setlinecolor(BLUE);         //设定线的颜色
    setlinestyle(PS_SOLID,2); //设定线的粗细
    //画线时记得将点转换到坐标系中
    line(0+100,(1-phne)*(500-100)+100,pe*(800-100)+100,(1-ph)*(500-100)+100);

    //绘画(pes>=pe)&&(pes<=1)区间线段,根据特殊点(pe,ph)和(1,phe)
    phs=phe=(ls*ph)/((ls-1)*ph+1);
    printf("phs=phe= %f",phs);
    setlinecolor(GREEN);         //设定线的颜色
    setlinestyle(PS_SOLID,2); //设定线的粗细
    //画线时记得将点转换到坐标系中
    line(pe*(800-100)+100,(1-ph)*(500-100)+100,1*(800-100)+100,(1-phe)*(500-100)+100);


    _getch();				// 按任意键继续
    closegraph();			// 关闭绘图窗口
    return 0;
}

2.运行结果

 参考文献

人工智能(尚文倩)清华大学出版社

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arrogant-cell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值