贝叶斯网络——实践

贝叶斯网络小结 贝叶斯网络简介 阅读详情

Iris_GaussianNB:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn.preprocessing import StandardScaler, MinMaxScaler, PolynomialFeatures
from sklearn.naive_bayes import GaussianNB, MultinomialNB
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier


def iris_type(s):
    it = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
    return it[s]


if __name__ == "__main__":
    data = pd.read_csv('..\\8.Regression\\iris.data', header=None)
    x, y = data[np.arange(4)], data[4]
    y = pd.Categorical(values=y).codes
    feature_names = u'花萼长度', u'花萼宽度', u'花瓣长度', u'花瓣宽度'
    features = [0,1]
    x = x[features]
    x, x_test, y, y_test = train_test_split(x, y, train_size=0.7, random_state=0)

    priors = np.array((1,2,4), dtype=float)
    priors /= priors.sum()
    gnb = Pipeline([
        ('sc', StandardScaler()),
        ('poly', PolynomialFeatures(degree=1)),
        ('clf', GaussianNB(priors=priors))])    # 由于鸢尾花数据是样本均衡的,其实不需要设置先验值
    # gnb = KNeighborsClassifier(n_neighbors=3).fit(x, y.ravel())
    gnb.fit(x, y.ravel())
    y_hat = gnb.predict(x)
    print '训练集准确度: %.2f%%' % (100 * accuracy_score(y, y_hat))
    y_test_hat = gnb.predict(x_test)
    print '测试集准确度:%.2f%%' % (100 * accuracy_score(y_test, y_test_hat))  # 画图

    N, M = 500, 500     # 横纵各采样多少个值
    x1_min, x2_min = x.min()
    x1_max, x2_max = x.max()
    t1 = np.linspace(x1_min, x1_max, N)
    t2 = np.linspace(x2_min, x2_max, M)
    x1, x2 = np.meshgrid(t1, t2)                    # 生成网格采样点
    x_grid = np.stack((x1.flat, x2.flat), axis=1)   # 测试点

    mpl.rcParams['font.sans-serif'] = [u'simHei']
    mpl.rcParams['axes.unicode_minus'] = False
    cm_light = mpl.colors.ListedColormap(['#77E0A0', '#FF8080', '#A0A0FF'])
    cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
    y_grid_hat = gnb.predict(x_grid)                  # 预测值
    y_grid_hat = y_grid_hat.reshape(x1.shape)
    plt.figure(facecolor='w')
    plt.pcolormesh(x1, x2, y_grid_hat, cmap=cm_light)     # 预测值的显示
    plt.scatter(x[features[0]], x[features[1]], c=y, edgecolors='k', s=50, cmap=cm_dark)
    plt.scatter(x_test[features[0]], x_test[features[1]], c=y_test, marker='^', edgecolors='k', s=120, cmap=cm_dark)

    plt.xlabel(feature_names[features[0]], fontsize=13)
    plt.ylabel(feature_names[features[1]], fontsize=13)
    plt.xlim(x1_min, x1_max)
    plt.ylim(x2_min, x2_max)
    plt.title(u'GaussianNB对鸢尾花数据的分类结果', fontsize=18)
    plt.grid(True)
    plt.show()

MarkovModel:

import numpy as np
import matplotlib.pyplot as plt
import os
from matplotlib import animation
from PIL import Image


def update(f):
    global loc
    if f == 0:
        loc = loc_prime
    next_loc = np.zeros((m, n), dtype=np.float)
    for i in np.arange(m):
        for j in np.arange(n):
            next_loc[i, j] = calc_next_loc(np.array([i, j]), loc, directions)
    loc = next_loc / np.max(next_loc)
    im.set_array(loc)

    # Save
    if save_image:
        if f % 3 == 0:
            image_data = plt.cm.coolwarm(loc) * 255
            image_data, _ = np.split(image_data, (-1, ), axis=2)
            image_data = image_data.astype(np.uint8).clip(0, 255)
            output = '.\\Pic2\\'
            if not os.path.exists(output):
                os.mkdir(output)
            a = Image.fromarray(image_data, mode='RGB')
            a.save('%s%d.png' % (output, f))
    return [im]


def calc_next_loc(now, loc, directions):
    near_index = np.array([(-1, -1), (-1, 0), (-1, 1),
                  (0, -1), (0, 1),
                  (1, -1), (1, 0), (1, 1)])
    directions_index = np.array([7, 6, 5, 0, 4, 1, 2, 3])
    nn = now + near_index
    ii, jj = nn[:, 0], nn[:, 1]
    ii[ii >= m] = 0
    jj[jj >= n] = 0
    return np.dot(loc[ii, jj], directions[ii, jj, directions_index])


if __name__ == '__main__':
    np.set_printoptions(suppress=True, linewidth=300, edgeitems=8)
    np.random.seed(0)

    save_image = False
    style = 'Sin'   # Sin/Direct/Random
    m, n = 50, 100
    directions = np.random.rand(m, n, 8)

    if style == 'Direct':
        directions[:,:,1] = 10
    elif style == 'Sin':
        x = np.arange(n)
        y_d = np.cos(6*np.pi*x/n)
        theta = np.empty_like(x, dtype=np.int)
        theta[y_d > 0.5] = 1
        theta[~(y_d > 0.5) & (y_d > -0.5)] = 0
        theta[~(y_d > -0.5)] = 7
        directions[:, x.astype(np.int), theta] = 10
    directions[:, :] /= np.sum(directions[:, :])
    print directions

    loc = np.zeros((m, n), dtype=np.float)
    loc[m/2, n/2] = 1
    loc_prime = np.empty_like(loc)
    loc_prime = loc
    fig = plt.figure(figsize=(8, 6), facecolor='w')
    im = plt.imshow(loc/np.max(loc), cmap='coolwarm')
    anim = animation.FuncAnimation(fig, update, frames=300, interval=50, blit=True)
    plt.tight_layout(1.5)
    plt.show()
贝叶斯网络:从理论到实践的全面解析 本文全面解析了贝叶斯网络的核心理论与应用实践。文章阐述了其作为处理不确定性问题的概率图模型,通过节点、有向边和条件概率表构建因果关系网络。详细介绍了条件独立性、结构学习、参数学习及概率推理等核心概念,并提供了使用Python库pgmpy构建学生成绩预测模型的实战示例。最后,探讨了其在医疗诊断、工业故障排查及金融风控等领域的实际应用与最佳实践。 阅读详情

相关推荐

机器学习之贝叶斯网络实践(举例)

一、贝叶斯算法推导相关 朴素贝叶斯的假设: 一个特征出现的概率,与其他特征(条件)独立(特征独立性),即对于给定分类的条件下,特征独立; 每个特征同等重要(特征均衡性) 朴素贝叶斯的推导: 朴素贝叶斯(Naive Bayes,NB)是基于“特征之间是独立的”这一朴素假设,应用贝叶斯 定理的监督学习算法; 对于给定的特征向量: 类别y的概率可以根据贝叶斯公式得到: 使用朴素的独立性假设: 高斯朴素贝叶斯: 多项分布朴素贝叶斯 Multinomial Naive Bayes 拉普拉斯平滑: 二、代

qq_30011515的博客 1950

机器学习实验报告——Bayes算法

朴素贝叶斯是一种有监督学习算法,这种算法基于贝叶斯的一个朴素的假设——每对特征和样本数据都是独立同分布的。最终可以推出朴素贝叶斯分类器的判定准则:贝叶斯的主要思路就是数数,统计每个条件组合下各种结果的概率,并根据这个概率做出分类。但是,单纯的贝叶斯在计算机计算的时候会出现计算规模过大的情况,这里就需要 引入朴素条件,化简式子。最终结果就是在计算时我们只需要统计单个条件下的结果,并据此计算得结果就好了,区别于先自由组合条件在统计结果。

m0_64198455的博客 2402

【案例教程】基于R语言的贝叶斯网络模型的实践技术应用

本次以开源的R语言为平台,通过理论和实践相结合的方法,系统介绍了贝叶斯网络结构学习,参数学习以及因果推断等全过程,对贝叶斯网络有较全面的了解,并能够用于科研和工作实践中。在现代的生态、环境以及地学研究中,变量和变量间的因果关系推断占据了非常重要的地位。在实践中,变量间的因果关系研究往往求助于昂贵的实验,但所得结果又经常与天然环境中的实际因果联系相差甚远。统计学方法是研究天然环境中变量间关系的好方法,但常见的统计学方法往往回答的是变量间的相关关系。相关关系是通往因果关系的第一步,但决不是其最终的目的。

2303_79243743的博客 433

【超详细】深入解析贝叶斯网络:概念、应用与实践

本文将对贝叶斯网络进行解析

2401_83912923的博客 4329

贝叶斯网络参数学习的理论与实践

本文深入探讨了贝叶斯网络参数学习的相关理论,包括如何通过构造等效样本大小来构建多项式增强贝叶斯网络,以及如何使用先验等价样本大小表达先验中立性。同时,文章详细解释了正态分布变量在贝叶斯网络中参数学习的实例,以及连续变量的学习方法,包括正态分布变量和具有多变量正态分布的变量的参数学习。

weixin_35829279的博客 365

贝叶斯网络总结

贝叶斯网络总结介绍什么是贝叶斯网络总结,工程上怎么应用贝叶斯网络

贝叶斯实验报告(三)

一、实验目的 学会使用pymc3构建模型,解决短信数据推断行为以及A-B测试问题。 二、实验内容及步骤(包括问题,代码,结果和结论) 2.1 短信数据推断行为 题目: 代码: 数据读入和展示: import pymc3 as pm import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(12.5, 3.5)) count_data = np.loadtxt("./txtdata.csv") n_count_data =

qq_53166867的博客 2930

贝叶斯网络的学习与应用实验报告

贝叶斯网络的学习与应用实验报告,人工智能,数据集是IRIS,使用软件是weka。

贝叶斯网络学习总结与实践

通过本次学习和实践,我深入理解了贝叶斯网络的基本概念和原理,掌握了朴素贝叶斯分类模型的实现方法,并成功完成了课堂作业。实验结果表明,朴素贝叶斯分类模型在处理简单分类问题时具有较高的准确性和效率。贝叶斯网络作为一种强大的概率图模型,在处理不确定性问题方面具有独特的优势。它不仅可以用于分类问题,还可以用于推理、预测和决策支持等多个领域。在未来的学习和工作中,我将继续深入研究贝叶斯网络的理论和应用,探索其在更复杂问题中的潜力。通过本次实践,我也深刻体会到了理论与实践相结合的重要性。

m0_54846764的博客 468

手把手教你用Simulink搭建DSOGI-PLL模型(附完整代码下载)

本文详细介绍了在Simulink中搭建高鲁棒性DSOGI-PLL模型的完整工程实践指南。针对传统锁相环在非理想电网下的不足,文章深入剖析了双二阶广义积分器锁相环(DSOGI-PLL)的核心原理与优势,并提供了从模块构建、系统组装到参数整定与测试验证的全流程手把手教程,附有完整代码下载,助力工程师应对谐波、电压跌落等复杂电网工况。

weixin_29223603的博客 389

从零开始:如何用Python建立你的第一个人工智能模型

在这篇文章中,我们将介绍如何从零开始使用Python建立你的第一个人工智能模型。无论你是刚接触编程的新手,还是有经验的开发者想进一步探索人工智能领域,这篇文章都将为你提供清晰、详细的指南。我们将一步步探索数据预处理、模型建立、训练和测试的过程,以及如何解读模型的结果。

Allen1862105的博客 4万+

贝叶斯网络实践

主要内容: 朴素贝叶斯的推导和应用 使用马尔可夫模型计算临近点概率 文本数据的处理流程 使用TF-IDF得到文本特征 Word2vec的使用 朴素贝叶斯进行鸢尾花分类 #!/usr/bin/python # -*- coding:utf-8 -*- import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib as mpl from sklearn.preprocessing import

weixin_45540546的博客 444

避坑指南:QCustomPlot鼠标事件冲突解决方案(左键拖动vs右键框选)

本文深入解析QCustomPlot在QT框架下的高级交互实现,重点解决左键拖动与右键框选的冲突问题。通过自定义事件处理和QRubberBand技术,提供了一套完整的无冲突交互方案,帮助开发者优化数据可视化应用的用户体验。

moss5的博客 661

基于R语言的贝叶斯网络模型的实践技术

贝叶斯网络是一种结合图论与统计学理论提出的新型模型。贝叶斯网络不但能够统合已有的各种统计学方法,如混合回归模型,LASSO,自回归模型,隐马模型等等;而且在很大程度上能够弥补统计学模型不能够进行因果推断的缺憾。...

weixin_48230888的博客 1150

别再问“这游戏啥引擎做的”了,手把手教你用SteamDB一键查询(附实战案例)

本文详细介绍了如何使用SteamDB一键查询游戏引擎信息,包括Unity 3D、Unreal Engine等热门引擎的识别方法。通过实战案例和高级查询技巧,帮助玩家快速获取游戏技术底细,优化游戏体验和兼容性分析。

weixin_31412781的博客 827

使用 git一个仓库管理多个项目

我们需要在 git 里面创建一个空分支,该分支不继承任何提交,没有父节点,完全是一个干净的分支,这时候就需要使用 orphan。该命令会创建一个新的分支,并且该分支有前一个分支下的所有文件,我们不想提交任何内容,所以我们需要把当前内容全部删除。此时 master 分支已经有一个项目了,下面我们创建新的分支管理另一个项目。此时可以在该分支目录上初始化你的项目,在执行 git 命令提交代码。此时我们就完成了在同一个仓库管理不同项目的需求了。下载仓库到本地之后,进入项目目录,查看分支信息。

xrs151的博客 2028

Chapter 13 贝叶斯网络实践

贝叶斯网络实践

qwertyuiop0208的博客 595

逆向分析踩坑记:当Frida在x86模拟器上‘看不见’ARM的so文件时,我们该如何手动定位与验证?

本文探讨了在x86模拟器上使用Frida进行逆向分析时,无法检测到ARM架构so文件的解决方案。通过分析内存映射、Frida的视觉盲区及手动定位技术,提供了兼容层、混合调试和原生ARM环境三种实用方案,帮助逆向工程师突破工具限制,实现精准定位与验证。

weixin_27697385的博客 223

【深度解析】基于R语言的贝叶斯网络模型的实践技术应用

现代的生态、环境以及地学研究中,变量和变量间的因果关系推断占据了非常重要的地位。在实践中,变量间的因果关系研究往往求助于昂贵的实验,但所得结果又经常与天然环境中的实际因果联系相差甚远。统计学方法是研究天然环境中变量间关系的好方法,但常见的统计学方法往往回答的是变量间的相关关系。

AAIshangyanxiu的博客 422

告别环境配置噩梦:VSCode + MinGW 下 OpenGL (glad/glm/glfw) 一站式配置指南(含常见错误排查)

本文提供了一份详细的VSCode与MinGW下OpenGL开发环境配置指南,涵盖glad、glm和glfw三大核心库的安装与调试。通过逐步指导解决常见错误,帮助开发者快速搭建高效的OpenGL开发环境,特别适合初学者避免环境配置中的常见陷阱。

weixin_42557803的博客 490

STM32G474串口调试避坑指南:从CubeMX配置到中断收发,手把手教你搞定USART1

本文详细解析了STM32G474串口调试中的常见问题,从CubeMX配置到中断收发,提供USART1的避坑指南。涵盖时钟树同步、GPIO模式选择、中断接收逻辑、波特率偏差修正等关键点,帮助开发者高效解决串口通讯难题,提升嵌入式开发效率。

weixin_29191081的博客 210

贝叶斯网络原理及Python实践

贝叶斯网络(Bayesian Network),又称信度网络(Belief Network)或是有向无环图模型(Directed Acyclic Graphical Model),是一种概率图模型,用于表示变量间依赖关系的图形模型。

u013571432的博客 1598

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

贝叶斯网络在图像处理中的实践与应用

1.背景介绍 贝叶斯网络(Bayesian Network),也被称为贝叶斯网或依赖网,是一种概率图模型,用于表示和推理随机变量之间的条件依赖关系。它们的名字来源于贝叶斯定理,该定理是概率论和统计学中的一个基本原则,用于更新已有的概率估计以考虑新的信息。贝叶斯网络在许多领域得到了广泛应用,包括图像处理、计算机视觉、医学诊断、金融风险评估等。 在图像处理领域,贝叶斯网络主要用于图像分类、目标检测...

AI天才研究院 1912

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

贝叶斯网络基础:从概念到实践

1.背景介绍 贝叶斯网络(Bayesian Network),也被称为贝叶斯网或依赖网,是一种表示有限随机变量关系的图形模型。它是基于贝叶斯定理的一种概率模型,可以用来描述、分析和预测实际世界中复杂的随机现象。贝叶斯网络在人工智能、机器学习、数据挖掘等领域具有广泛的应用。 贝叶斯网络的核心思想是将一个高维随机变量空间中的关系建模为一个有向无环图(DAG),其节点表示随机变量,边表示变量之间的条...

AI天才研究院 1178

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 机器学习——贝叶斯网络
下一篇: 【数据结构】单链表定义及基本操作
CoderMateng
博客等级 码龄7年 8粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值