latex 算法_GitHub项目awesome-latex-drawing新增内容(四):绘制贝叶斯网络

393ee631c749a84cec9518f43b5c1edd.png
近期,我们整理和开源了一个基于LaTeX的科技绘图项目,并将其取名为awesome-latex-drawing(GitHub网址为:https://github.com/xinychen/awesome-latex-drawing),案例包括贝叶斯网络、图模型、矩阵/张量示意图以及技术框架,所有案例均取自于我们近期的研究工作。截至目前,awesome-latex-drawing项目已在GitHub社区获得超过500次标星 (star)。

需要说明的是,本文转载自awesome-latex-drawing项目,如需阅读本文代码以及相关的说明文档,欢迎访问tutorial/Bayesian_nets.md。

一、基本介绍

贝叶斯网络是一种应用极为广泛的概率图模型,由节点和有向边构成,能够通过有向边来描述变量之间的条件依赖关系。给定一个已经构造好的贝叶斯网络,通常可以采用一些贝叶斯推断算法对其中的变量进行推断或者学习,这些贝叶斯推断算法中既包括最为人所熟知的马尔可夫链蒙特卡洛算法,也包括形式上略显抽象的变分推断算法。

直观清晰的贝叶斯网络结构图可以帮助读者和研究者更好地理解贝叶斯网络,而LaTeX在绘制贝叶斯网络结构方面具有天然的优势,一是由于我们在使用LaTeX绘图的过程中,LaTeX能够最大程度上支持复杂的公式符号;二则得益于LaTeX的一系列兼容性极好的图模型绘制包,其中,最具代表性且使用最为广泛的工具库(对应于LaTeX则称为library)莫过于bayesnet。结合LaTeX中的绘图工具包tikz,我们可以使用LaTeX画出近乎完美的贝叶斯网络。

bayesnet库是基于LaTeX绘图工具包tikz构建起来的贝叶斯网络绘图工具库,主要用于绘制贝叶斯网络、图模型以及有向图结构,其GitHub开发主页为https://github.com/jluttine/tikz-bayesnet。

本文将对几个具有代表性的贝叶斯网络案例进行拆分讲解,通过介绍各行代码及其所对应的绘图图形,逐步讲解如何用LaTeX绘制出复杂的贝叶斯网络,在开始绘图之前,我们不妨回顾一下贝叶斯网络所遵循的几项绘图原则:

  • 观测变量或者观测值要使用灰色节点表示;
  • 底层超参数无需用节点表示;
  • 除观测变量和底层超参数外的其他变量要使用白色节点表示;
  • 有向边箭头的指向表示贝叶斯角度的概率依赖关系。

为了方便广大读者体验LaTeX绘图,我们在在线LaTeX编辑系统overleaf.com中创建名称为latex-drawing-tutorial的项目,接下来就在项目中开启贝叶斯网络的LaTeX绘图之旅。

二、绘制贝叶斯网络的基本语句

使用LaTeX绘制贝叶斯网络时,我们需要用到一些最为基本的LaTeX命令:

documentclass[tikz, border = 0.1cm]{standalone}
usepackage{tikz}
usetikzlibrary{bayesnet}
usepackage{amsmath, amsthm, amssymb, amsfonts}
tikzset{>=latex}begin{document}
begin{tikzpicture}end{tikzpicture}
end{document}

在这几行基本命令中,它们各自都发挥着一定的作用,我们不妨来逐行看一下这些命令的“功效”:

  • 准备阶段:
    • documentclass[tikz, border = 0.1cm]{standalone}的作用在于指定所创建文件的类型,确定tikz绘图风格的同时可设置绘图边框的页边距,这里选取的页边距是0.1厘米。当然,这里的页边距是可以根据我们自身的审美标准进行设置的。
    • usepackage{tikz}的作用在于启用LaTeX中的绘图工具包tikz
    • usetikzlibrary{bayesnet}的作用在于调用绘制贝叶斯网络所需的bayesnet库。
    • usepackage{amsmath, amsthm, amssymb, amsfonts}的作用在于启用LaTeX中支持公式编译的工具包。
  • 绘图阶段:
    • begin{document} end{document}是LaTeX编辑各类文档时首先要申明的语句,在beginend之间写语句才能有效地映射到所创建的文档中。
    • begin{tikzpicture} end{tikzpicture}是用于生成tikz绘图的基本语句,在tikzpicture中,我们可以通过指定各个节点(node)的横纵坐标来进行绘图。

三、绘制贝叶斯增强张量分解的贝叶斯网络

绘图任务:如何使用LaTeX绘制出如下贝叶斯增强张量分解的贝叶斯网络?

d4ead86969a59e3e77f2af84809dc4a4.png
图: 贝叶斯增强张量分解的贝叶斯模型示意图

1) 绘制观测变量节点

以上述的几行LaTeX绘图的基本命令为基础,我们不妨在begin{tikzpicture} end{tikzpicture}之间编写关于绘制观测变量节点的代码:首先,我们将观测变量节点命名为obs,在node命令中,指定该节点的位置为坐标原点(0,0),指定节点类型为circle,另外令节点边框为黑色(即draw = black)、节点大小为0.65厘米(即minimum size = 0.65cm)。

documentclass[tikz, border = 0.1cm]{standalone}
usepackage{tikz}
usetikzlibrary{bayesnet}
usepackage{amsmath, amsthm, amssymb, amsfonts}
tikzset{>=latex}begin{document}
begin{tikzpicture}node[circle, draw = black, fill = gray!20, inner sep = 0pt, minimum size = 0.65cm] (obs) at (0, 0) {{$y_{ijt}$}};end{tikzpicture}
end{document}

将这几行简单的代码复制粘贴到所创建的overleaf项目中,即可得到的观测变量节点示意图。另外,从下图可以看出,左侧为代码区域,右侧为画图文档区域。

de1fd6c8c800def851af5449adbc07b2.png
图: 绘制贝叶斯模型的观测变量节点

2) 绘制模型参数节点

与绘制观测变量节点类似,我们可以通过node设计模型参数节点。

documentclass[tikz, border = 0.1cm]{standalone}
usepackage{tikz}
usetikzlibrary{bayesnet}
usepackage{amsmath, amsthm, amssymb, amsfonts}
tikzset{>=latex}begin{document}
begin{tikzpicture}node[circle, draw = black, fill = gray!20, inner sep = 0pt, minimum size = 0.65cm] (obs) at (0, 0) {{$y_{ijt}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (ui) at (-0.9, 0.9) {{$boldsymbol{u}_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (vj) at (0, 1.8) {{$boldsymbol{v}_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (xt) at (0.9, 0.95) {{$boldsymbol{x}_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (phi) at (-0.9, -0.7) {{$phi_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (theta) at (0, -2) {{$theta_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (eta) at (0.9, -0.75) {{$eta_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (tau) at (2, 0) {{$tau$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (mu) at (-2, 0) {{$mu$}};end{tikzpicture}
end{document}

同样,将这里的代码复制并粘贴到所创建的overleaf项目中,即可得到观测变量节点和模型参数节点示意图。

0927a9e6c8a7f70fa88f8bfd2f68dbb7.png
图: 新增贝叶斯模型的模型参数节点

3) 绘制模型参数节点和观测变量节点之间的有向边

紧接着上面绘制观测变量节点和模型参数节点的代码,根据已经定义好的节点,可以使用path来构造有向边,其中模型参数节点和观测变量节点之间要用edge关联,箭头方向为->

documentclass[tikz, border = 0.1cm]{standalone}
usepackage{tikz}
usetikzlibrary{bayesnet}
usepackage{amsmath, amsthm, amssymb, amsfonts}
tikzset{>=latex}begin{document}
begin{tikzpicture}node[circle, draw = black, fill = gray!20, inner sep = 0pt, minimum size = 0.65cm] (obs) at (0, 0) {{$y_{ijt}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (ui) at (-0.9, 0.9) {{$boldsymbol{u}_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (vj) at (0, 1.8) {{$boldsymbol{v}_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (xt) at (0.9, 0.95) {{$boldsymbol{x}_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (phi) at (-0.9, -0.7) {{$phi_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (theta) at (0, -2) {{$theta_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (eta) at (0.9, -0.75) {{$eta_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (tau) at (2, 0) {{$tau$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (mu) at (-2, 0) {{$mu$}};path [draw, ->] (ui) edge (obs);
path [draw, ->] (vj) edge (obs);
path [draw, ->] (xt) edge (obs);
path [draw, ->] (tau) edge (obs);
path [draw, ->] (mu) edge (obs);
path [draw, ->] (phi) edge (obs);
path [draw, ->] (theta) edge (obs);
path [draw, ->] (eta) edge (obs);end{tikzpicture}
end{document}

将这里的代码复制并粘贴到所创建的overleaf项目中,即可得到观测变量节点、模型参数节点以及有向边示意图。

237300ccf3b375e80e21a8e012d2028c.png
图: 新增贝叶斯模型观测变量节点和模型参数节点之间的有向边

4) 绘制部分观测变量的元素集合

对于部分观测变量,它可能只包括矩阵或张量元素的部分索引,因此需要指定出来。一般而言,我们可以用plate在贝叶斯网络中进行标注,标注的方法是在plate命令中罗列需要覆盖的变量。以第一个plate为例,我们可以将{(obs) (ui) (m) (phi)}作为所需要覆盖的集合。

documentclass[tikz, border = 0.1cm]{standalone}
usepackage{tikz}
usetikzlibrary{bayesnet}
usepackage{amsmath, amsthm, amssymb, amsfonts}
tikzset{>=latex}begin{document}
begin{tikzpicture}node[circle, draw = black, fill = gray!20, inner sep = 0pt, minimum size = 0.65cm] (obs) at (0, 0) {{$y_{ijt}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (ui) at (-0.9, 0.9) {{$boldsymbol{u}_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (vj) at (0, 1.8) {{$boldsymbol{v}_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (xt) at (0.9, 0.95) {{$boldsymbol{x}_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (phi) at (-0.9, -0.7) {{$phi_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (theta) at (0, -2) {{$theta_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (eta) at (0.9, -0.75) {{$eta_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (tau) at (2, 0) {{$tau$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (mu) at (-2, 0) {{$mu$}};path [draw, ->] (ui) edge (obs);
path [draw, ->] (vj) edge (obs);
path [draw, ->] (xt) edge (obs);
path [draw, ->] (tau) edge (obs);
path [draw, ->] (mu) edge (obs);
path [draw, ->] (phi) edge (obs);
path [draw, ->] (theta) edge (obs);
path [draw, ->] (eta) edge (obs);node [text width = 0.2cm] (m) at (-1.1, 0.3) {small{$m$}};
plate[] {plate1} {(obs) (ui) (m) (phi)} { };
node [text width = 0.6cm] (n) at (0, -1.55) {small{$n$}};
plate[] {plate2} {(obs) (vj) (n) (theta)} { };
node [text width = 0.2cm] (f) at (1.1, 0.3) {small{$f$}};
plate[] {plate3} {(obs) (xt) (f) (eta)} { };end{tikzpicture}
end{document}

将这里的代码复制并粘贴到所创建的overleaf项目中,即可得到部分观测变量的元素集合示意图。

1d74afd2e797be094670a71ed8c4189f.png
图: 新增贝叶斯模型部分观测变量的元素集合

5) 绘制超参数节点及其有向边

在这里,超参数分为待估计超参数和底层超参数,待估计超参数顾名思义是一个变量,而底层超参数则是常量。对于待估计超参数,我们仍要像绘制模型参数一样绘制它,而底层超参数则不需要带有“圆圈”,不过需要注意的是,两者都可以用node命令进行绘制。

documentclass[tikz, border = 0.1cm]{standalone}
usepackage{tikz}
usetikzlibrary{bayesnet}
usepackage{amsmath, amsthm, amssymb, amsfonts}
tikzset{>=latex}begin{document}
begin{tikzpicture}node[circle, draw = black, fill = gray!20, inner sep = 0pt, minimum size = 0.65cm] (obs) at (0, 0) {{$y_{ijt}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (ui) at (-0.9, 0.9) {{$boldsymbol{u}_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (vj) at (0, 1.8) {{$boldsymbol{v}_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (xt) at (0.9, 0.95) {{$boldsymbol{x}_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (phi) at (-0.9, -0.7) {{$phi_{i}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (theta) at (0, -2) {{$theta_{j}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (eta) at (0.9, -0.75) {{$eta_{t}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (tau) at (2, 0) {{$tau$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.55cm] (mu) at (-2, 0) {{$mu$}};path [draw, ->] (ui) edge (obs);
path [draw, ->] (vj) edge (obs);
path [draw, ->] (xt) edge (obs);
path [draw, ->] (tau) edge (obs);
path [draw, ->] (mu) edge (obs);
path [draw, ->] (phi) edge (obs);
path [draw, ->] (theta) edge (obs);
path [draw, ->] (eta) edge (obs);node [text width = 0.2cm] (m) at (-1.1, 0.3) {small{$m$}};
plate[] {plate1} {(obs) (ui) (m) (phi)} { };
node [text width = 0.6cm] (n) at (0, -1.55) {small{$n$}};
plate[] {plate2} {(obs) (vj) (n) (theta)} { };
node [text width = 0.2cm] (f) at (1.1, 0.3) {small{$f$}};
plate[] {plate3} {(obs) (xt) (f) (eta)} { };node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (muv) at (-0.6, 2.8) {small{$boldsymbol{mu}_{v}$}};
node[circle, draw = black, inner sep = 0pt, minimum size = 0.6cm] (lambdav) at (0.6, 2.8) {small{$Lambda_{v}$}};
node[text width = 0.8cm] (gamma) at (2, 0.8) {small{$a_0,b_0$}};
node[text width = 0.8cm] (hyper1) at (-2, 0.8) {small{$mu_{0},tau_{0}$}};
node[text width = 0.8cm] (hyper2) at (1.2, -2) {small{$mu_{0},tau_{0}$}};
node[text width = 0.8cm] (hyper3) at (2.1, -0.75) {small{$mu_{0},tau_{0}$}};
node[text width = 0.8cm] (hyper4) at (-2.1, -0.7) {small{$mu_{0},tau_{0}$}};
node[text width = 0.4cm] (mu0) at (-0.6, 3.6) {small{$boldsymbol{mu}_{0}$}};
node[text width = 0.9cm] (wnu0) at (0.6, 3.6) {small{$W_{0},nu_{0}$}};
node[text width = 0.6cm] (cdots1) at (-1, 1.6) {Largecolor{gray}{$cdots$}};
node[text width = 0.6cm] (cdots2) at (1, 1.6) {Largecolor{gray}{$cdots$}};path [draw, ->] (muv) edge (vj);
path [draw, ->] (lambdav) edge (vj);
path [draw, ->] (lambdav) edge (muv);
path [draw, ->] (mu0) edge (muv);
path [draw, ->] (wnu0) edge (lambdav);
path [draw, ->] (gamma) edge (tau);
path [draw, ->] (hyper1) edge (mu);
path [draw, ->] (hyper2) edge (theta);
path [draw, ->] (hyper3) edge (eta);
path [draw, ->] (hyper4) edge (phi);end{tikzpicture}
end{document}

将这里的代码复制并粘贴到所创建的overleaf项目中,即可得到我们希望得到的包含了超参数节点及其有向边的贝叶斯网络结构图。

bf77bbd2b1513797de5acc8c6dbe992f.png
图: 新增贝叶斯模型的超参数及其有向边

到这里,我们便完成了完整的贝叶斯网络绘制。

LaTeX相关入门学习材料:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python123动物重量排序_python进阶

面向对象oopclass Student(object):def __init__(self,name,score)self.name nameself.score scoredef print_score(self)print(%s: %s % (self.name,self.score))给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。面向对象的程序写出…

mysql中的生日应该是什么类型_MySQL中的定点数类型

上一篇文章我们唠叨了浮点数,知道了浮点数存储小数是不精确的。本篇继续唠叨一下MySQL中的另一种存储小数的方式 —— 定点数。浮点数文章闪现:什么, 0.3 - 0.2 ≠ 0.1 ? 什么鬼定点数类型正因为用浮点数表示小数可能会有不精确的情况,在一些…

python怎么制作图像_python数字图像处理(5):图像的绘制

实际上前面我们就已经用到了图像的绘制,如:io.imshow(img)这一行代码的实质是利用matplotlib包对图片进行绘制,绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写:importmatplotlib.pyplot …

axios代理跨域 cli4_vuecli 3.0之跨域请求代理配置及axios路径配置 莫小龙

vue-cli 3.0之跨域请求代理配置及axios路径配置问题:在前后端分离的跨域请求中,报跨域问题配置:vue.config.js:module.exports {runtimeCompiler: true,publicPath: /, // 设置打包文件相对路径devServer: {// open: process.pla…

string转为char数组_StringBuilder的区别是什么?String是不可变?一点课堂(多岸学院)...

String和StringBuffer、StringBuilder的区别可变性简单的来说:String 类中使用 final 关键字字符数组保存字符串,private final char value[],所以 String 对象是不可变的。而StringBuilder 与 StringBuffer 都继承自 AbstractStringBuild…

python去年软件排行_2017年编程语言排行榜,Python位居榜首(C语言需求最大)

最近IEEE Spectrum 发布了编程语言交互式排行榜,为很多学习代码的朋友们详解各类代码语言的需求和占有率。为学习代码的朋友们能更加重视哪一种编程语言而有一个明确的方向。下面排行榜123网为你公布2017年编程语言排行榜,Python位居榜首(C语言需求最大)。2017年编程…

mysql test数据库_mysql数据库test

Re介绍一下CentOS下MySQL数据库的安装与配置方法MySQL数据库配置的具体步骤:1、编辑MySQL的配置文件,使用vi /etc/my.cnf[rootsample ~]# vi /etc/my.cnf  ← 编辑MySQL的配置文件[mysqld]datadir/var/lib/mysqlsocket/var/lib/mysql/mysql.sock# Defau…

mysql 升级 openssl_【1分钟教程】LNMP架构应用实战 Openssl升级操作

由于实际生产环境需求,需要将LNMP环境中的openssl版本升级至目前最新版本openssl-1.1.0c,这玩意升级还真的不是一般的麻烦,由于它与系统各种服务都有相关的联系,比如ssh服务等,因此,升级非常的繁琐,所以今天…

miui秒解bl锁_MIUI12解锁bl篇(原谅我的过失,接上篇文章)

求原谅真心求原谅由于我的疏忽,上期教程不完整,对大家造成不便在这里给大家真诚道歉!对不起!请收下我的膝盖!!!我的上个教程小米手机MIUI系统降级任意版本通用教程,MIUI12→MIUI9因为…

腐蚀rust服务器命令_【使用 Rust 写 Parser】2. 解析Redis协议

系列所有文章https://zhuanlan.zhihu.com/p/115017849​zhuanlan.zhihu.comhttps://zhuanlan.zhihu.com/p/139387293​zhuanlan.zhihu.comhttps://zhuanlan.zhihu.com/p/146455601​zhuanlan.zhihu.comhttps://zhuanlan.zhihu.com/p/186217695​zhuanlan.zhihu.com在基本熟悉 n…

python中dic_python之dic {字典}(重要指数*****)

1. 什么是字典{name: 汪峰, age: 18} 键:值 别的语言键值对数据键: 必须是可哈希(不可变的数据类型),并且是唯一的值: 任意可以保存任意类型的数据字典是无序的python3.6版本以上,默认定义了顺序,python3.5以下是随机显示不能进⾏切片⼯作. 它只能通过key来获取dict中的数据字典…

python装饰器带参数函数二阶导数公式_一文搞定Python装饰器,看完面试不再慌

本文始发于个人公众号:TechFlow,原创不易,求个关注今天是Python专题的第12篇文章,我们来看看Python装饰器。一段囧事差不多五年前面试的时候,我就领教过它的重要性。那时候我Python刚刚初学乍练,看完了廖雪…

centos7源码安装mysql报错_CentOS7 下源码安装MySQL数据库 8.0.11

本文主要向大家介绍了CentOS7 下源码安装MySQL数据库 8.0.11,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。CentOS7 下源码安装MySQL 8.0.11系统环境:CentOS7, 内核:Linux 3.10.0-862.el7.x86_64如果…

python全排列问题_Python基于回溯法子集树模板解决全排列问题示例

本文实例讲述了Python基于回溯法子集树模板解决全排列问题。分享给大家供大家参考,具体如下:问题实现 a, b, c, d 四个元素的全排列。分析这个问题可以直接套用排列树模板。不过本文使用子集树模板。分析如下:一个解x就是n个元素的一种排列&a…

file js new 传到后台_js 图片上传传给后台的3种格式

$("#imgfile").change(function () {var formData new FormData();$.each($(#imgfile)[0].files, function (i, file) {formData.set(idcard, file); //idcard 字段 根据自己后端接口定});//processData: false, contentType: false,多用来处理异步上传二进制文件。…

usbserialcontroller驱动安装不了_win10-有NVIDIA独显提示未安装控制面板的离线安装方式...

最近越来越多的用户反映NVIDIA显卡驱动设置不了啦,找不到NVIDIA显卡的控制面板。 也不知道NVIDIA在什么版本开始驱动安装包就不自带NVIDIA显卡控制面板了。 全新安装的显卡驱动就没有控制面板;或者Windows 10自带更新了显卡新版驱动后导致没有。 每次带N…

mysql 多实例 独立配置文件_三、安装配置多实例MYSQL5.6-多独立配置文件方法

三、安装配置多实例MYSQL5.6-多独立配置文件方法1、准备工作检查操作系统版本、内核版本、selinux是否关闭、防火墙策略、IP地址、主机名配置、host表配置、yum配置上传cmake、mysql5.6软件包具体步骤参考源码安装mysql-单实例配置文档2、安装cmake软件2.1 安装编译软件环境[[e…

python做什么模型_主题模型初学者指南[Python]

引言近年来涌现出越来越多的非结构化数据,我们很难直接利用传统的分析方法从这些数据中获得信息。但是新技术的出现使得我们可以从这些轻易地解析非结构化数据,并提取出重要信息。主题模型是处理非结构化数据的一种常用方法,从名字中就可以看…

python实现队列_Python学习教程:用队列实现栈

接着上一期跟大家说的用栈实现队列,这期的Python学习教程跟大家讲用队列实现栈题目:使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空Implement the following operati…

vue 点击li 中的img 怎么不冒泡_Vue全解

一.Vue实例内存图:1.把Vue的实例命名为vm,vm对象封装了对视图的所有操作包括数据读写、事件绑定、DOM更新2.vm的构造函数是Vue,按照ES6的说法vm所属的类是Vue3.options是new Vue的参数一般称为选项或构造选项1.options里面有什么英文文档搜op…