Mininet应用实践

article/2025/9/19 22:37:45

安装:

          参考  : https://www.cnblogs.com/cotyb/p/5042072.html

                        https://blog.csdn.net/Mr_Wanderer/article/details/107028267

                        https://blog.csdn.net/qq_19696893/article/details/123747960

                        

  1. 开启ovsdb-server配置数据库:有两种方式,如果要使用ssl连接,务必在编译前安装好libssl-dev以及openssl。之后可以在/usr/local/var/log/openvswitch中查看日志ovsdb-server.log
    1. no ssl
      ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
      --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
      --pidfile --detach --log-file
    2. ssl1
      ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
      --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
      --private-key=db:Open_vSwitch,SSL,private_key \
      --certificate=db:Open_vSwitch,SSL,certificate \
      --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
      --pidfile --detach --log-file
  2. 开启ovs-vsctl
    ovs-vsctl --no-wait init
  3. 开启ovs-switchd功能,即主进程
    ovs-vswitchd --pidfile --detach
    service openvswitch-switch start
    

命令: 

1.1 mininet命令(mininet CLI环境)

在终端输入sudo mn,打开mininet进入CLI交互窗口。

  • 基本命令:

在CLI环境下输入help便可以获取可执行命令的信息,在2.3版本中有以下28个命令:

 输入:help command便可以获取该命令的详细帮助信息。下面介绍几组常用命令:

mininet>nodes                查看全部节点信息
mininet>net                  查看链路信息
mininet>dump                 查看各节点详细信息
mininet>pingall              测试所有结点是否连通
mininet>pingpair	         两个主机将互 pingmininet>link s1 h2 up/down   启用/禁用s1跟h2之间的链路
mininet>links                报告所有链路状态
mininet>iperf h1 h2	         两个节点之间用指定简单的 TCP 测试
mininet>iperfudp 10M h1 h2   两个节点之间用指定简单 udp 进行测试,10M指自己设置的带宽
mininet>time [command]	     测量命令所执行的时间mininet>xterm/gterm s1       打开某结点控制终端
mininet>sh [cmd args]        运行外部 shell 命令
mininet>px/py	             执行 python 语句
mininet>source <file>        从输入文件读入命令mininet>exit/quit/EOF	     退出 mininet 命令行

 在节点执行系统命令:
前面提到mininet采用轻量级的虚拟化技术,使得其模拟的每台主机和交换机都是独立的,所以可以像在真实主机的终端中执行命令一样,在模拟的主机或交换机上执行任何系统命令。在CLI环境中执行的格式为:node command,command 格式和用法同Linux主机,如:

mininet>h1 ifconfig                                             查看h1节点网络信息
mininet>h1 ping -c 4 h2                                         实现两主机互连测试
mininet>h1 ifconfig h1-eth0 10.108.126.3 netmask 255.255.255.0  修改虚拟的主机的ip以及mask地址

1.2 mininet可视化界面

2.2.0以后版本的mininet支持可视化,在/home/mininet/mininet/examples目录下提供miniedit.py脚本,切换到相应目录下,在终端中执行:

sudo ./miniedit.py

1.3 mn启动参数,格式mn [options]

创建拓扑
(创建完一种类型后可exit退出,然后再尝试创建不同类型)**创建single拓扑:(单一(Single)**拓扑指整个网络拓扑中交换机有且只有一个,交换机可以下挂一个或多个主机)sudo mn --topo=single,3 :本例创建了一个交换机、3个主机,3个主机都下挂在一个交换机下**创建 linear(线性)拓扑:(线性(linear)**拓扑指交换机连接呈线形排列,且每个交换机所连接主机数目只有一个)sudo mn --topo=linear,3 :本例创建了3个交换机、3个主机,3个主机分别下挂在一个交换机下**创建树形(tree)拓扑:(树形(tree)**拓扑指交换机连接成树形排列,且每个交换机所连接主机一般有多个关联使用参数depth及fanout)sudo mn --topo=tree,depth=2,fanout=2 :本例创建了depth为2,fanout为2的拓扑,表示交换机深度即层数为2,每个交换机下挂2个设备创建自定义拓扑:(自定义(custom)拓扑指python编写文件file.py,执行此脚本即可创建定义的拓扑,—custom与—topo联用)# cd /home/openlab/openlab/mininet/custom# sudo mn --custom topo-2sw-2host.py --topo mytopo : 本例在custom目录下存在topo-2sw-2host.py文件,调用此文件构建拓扑
  • 自动设置MAC地址和ARP条目
--mac       自动设置MAC地址,MAC地址与IP地址的最后一个字节相同
--arp       为每个主机设置静态ARP表,存储同一网段的主机的mac和IP
  • 设置交换机
--switch default|ivs|lxbr|ovs|ovsbr|ovsk|user[,param=value...]   其中,ovs,defaul,ovsk都为OVS(openvswitch)交换机,lxbr=LinuxBridge user=UserSwitch ivs=IVSSwitch ovsbr=OVSBridge
  • 设置控制器
--controller=default|none|nox|ovsc|ref|remote|ryu[,param=value...]其中, ovsc=OVSController none=NullControllerremote=RemoteController default=DefaultControllernox=NOX ryu=Ryu ref=Controller
--controller=remote,ip=[controller IP] ,port=[controller listening port]    设置远程控制器

比如:设定启动支持openflow1.3的交换机和IP为10.108.125.9的远程交换机:

sudo mn --controller=remote,ip=10.108.125.9,port=6653 --switch ovsk,protocols=OpenFlow13
  • 定义网络拓扑
--topo single,n                 单交换机,星型拓扑, n表示主机数--topo linear,n                 线性拓仆,n表示n个交换机直线连接--topo tree,depth=a,fanout=b    树状拓仆,depth表示树深度,fanout表示每个结点有几个子结点。所有叶子结点都为主机,非叶子结点为交换机--topo minimal|reversed|torus[,param=value]       MinimalTopo,SingleSwitchReversedTopo,TorusTopo
--custom ~/mininet/custom/mytopo.py --topo=mytopo  用户自定义拓扑(mytopo.py是自己定义拓扑的python文件)

注: 一般在实际应用的时候,我们并不会通过上述两种方式创建网络拓扑,而是直接创建python脚本,在脚本中导入相关的模块,调用mininet的功能,python解释器直接执行。这样方便结合其他项目进行开发。具体可以参考mininet搭建自定义网络拓扑。 

  • 为所有主机,包括交换机和主机、控制器,在运行时打开各自的xterm
mn –x       //作用同在cli环境中运行xterm
  • 退出并且清理
sudo mn –c
  • 其他可用的mn命令
  --host=HOST           cfs|proc|rt[,param=value...]rt=CPULimitedHost{'sched': 'rt'} proc=Hostcfs=CPULimitedHost{'sched': 'cfs'}--link=LINK           default|ovs|tc|tcu[,param=value...] default=Link ovs=OVSLink tcu=TCULink tc=TCLink--custom=CUSTOM       read custom classes or params from .py file(s)--test=TEST           none|build|all|iperf|pingpair|iperfudp|pingall-i IPBASE, --ipbase=IPBASEbase IP address for hosts-v VERBOSITY, --verbosity=VERBOSITYinfo|warning|critical|error|debug|output--innamespace         sw and ctrl in namespace?--listenport=LISTENPORTbase port for passive switch listening--nolistenport        don't use passive listening port--pre=PRE             CLI script to run before tests--post=POST           CLI script to run after tests--pin                 pin hosts to CPU cores (requires --host cfs or --host rt)--nat                 [option=val...] adds a NAT to the topology that connects Mininet hosts to the physical network.Warning: This may route any traffic on the machine that uses Mininet's IP subnet into the Mininet network. If you need to change Mininet's IP subnet, see the --ipbase option.--version             prints the version and exits--cluster=server1,server2...run on multiple servers (experimental!)--placement=block|randomnode placement for --cluster (experimental!)

3. 流表操作

2.1 使用命令查看交换机中的流表

  • 查看流表项:
mininet>dpctl dump-flows

 在一个depth=2,fanout=2的树形拓扑中,执行h1 ping -c1 h2,得到流表项如下:

mn --topo tree,depth=2,fanout=2 mininet> dpctl dump-flows
*** s1 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
*** s2 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=4.087s, table=0, n_packets=1, n_bytes=42, idle_timeout=60, idle_age=4, priority=65535,arp,in_port=2,vlan_tci=0x0000,dl_src=06:7d:8b:e3:9f:b5,dl_dst=22:7e:4a:a6:25:c7,arp_spa=10.0.0.2,arp_tpa=10.0.0.1,arp_op=2 actions=output:1cookie=0x0, duration=4.086s, table=0, n_packets=1, n_bytes=98, idle_timeout=60, idle_age=4, priority=65535,icmp,in_port=1,vlan_tci=0x0000,dl_src=22:7e:4a:a6:25:c7,dl_dst=06:7d:8b:e3:9f:b5,nw_src=10.0.0.1,nw_dst=10.0.0.2,nw_tos=0,icmp_type=8,icmp_code=0 actions=output:2cookie=0x0, duration=4.085s, table=0, n_packets=1, n_bytes=98, idle_timeout=60, idle_age=4, priority=65535,icmp,in_port=2,vlan_tci=0x0000,dl_src=06:7d:8b:e3:9f:b5,dl_dst=22:7e:4a:a6:25:c7,nw_src=10.0.0.2,nw_dst=10.0.0.1,nw_tos=0,icmp_type=0,icmp_code=0 actions=output:1
*** s3 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
mininet> 
  • 添加流表项:
mininet>dpctl add-flow in_port=2,actions=output:1  
mininet>dpctl add-flow in_port=1,actions=output:2

在所有的交换机中添加流表,让从1号端口进入的报文都从2号端口转发,添加后流表项如下(在操作之前先清空交换机中的流表):

mininet> dpctl add-flow in_port=1,actions=output:2
*** s1 ------------------------------------------------------------------------
*** s2 ------------------------------------------------------------------------
*** s3 ------------------------------------------------------------------------
mininet> dpctl dump-flows
*** s1 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=3.454s, table=0, n_packets=0, n_bytes=0, idle_age=3, in_port=1 actions=output:2
*** s2 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=3.454s, table=0, n_packets=0, n_bytes=0, idle_age=3, in_port=1 actions=output:2
*** s3 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=3.455s, table=0, n_packets=0, n_bytes=0, idle_age=3, in_port=1 actions=output:2

流表匹配的报文数n_packets都为0,这时候通过h1 ping h2,再查看流表项:

mininet> h1 ping -c1 h2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=1.79 ms--- 10.0.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.793/1.793/1.793/0.000 ms
mininet> dpctl dump-flows
*** s1 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=35.967s, table=0, n_packets=2, n_bytes=140, idle_age=0, in_port=1 actions=output:2
*** s2 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=35.967s, table=0, n_packets=2, n_bytes=140, idle_age=0, in_port=1 actions=output:2
*** s3 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):cookie=0x0, duration=35.968s, table=0, n_packets=0, n_bytes=0, idle_age=35, in_port=1 actions=output:2

这时候直接可以ping通,发现s2中的流表匹配到两个报文(一个arp请求,一个icmp请求),但通过h1 ping h3,却发现不通,因为从1端口的报文都会无条件匹配到2号端口:

mininet> h1 ping -c1 h3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable--- 10.0.0.3 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
  • 删除表项:
mininet>dpctl del-flows
  • 删除后再查看,流表为空:
mininet> dpctl del-flows
*** s1 ------------------------------------------------------------------------
*** s2 ------------------------------------------------------------------------
*** s3 ------------------------------------------------------------------------
mininet> dpctl dump-flows
*** s1 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
*** s2 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
*** s3 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):

这种流表的操作方式十分不方便,也很少有人这样使用。一般操作流表都使用ovs-ofctl,ofctl等工具在终端中操作或通过控制器环境操作。具体见下一节。

2.2 使用命令查看交换机中的流表

ovs-ofctl是命令行下的交换机管理工具,也可以在终端中用来管理openflow 流表。

查看交换机中的流表项:

sudo ovs-ofctl dump-flows -O openflow13 s1   # -O参数后面跟协议,s1表示交换机的id。
ovs-ofctl dump-flows br-sw

当然,也可在mininet的命令行窗口使用sh命令来直接调用上述指令:

mininet> sh ovs-ofctl dump-flows -O openflow13 s1   # 效果同在终端中执行

执行如下命令,增加一条流表项,将主机1发给主机2的数据包丢弃:

ovs-ofctl add-flow br-sw ‘dl_type=0x0800,nw_src=10.0.0.7,nw_dst=10.0.0.11, priority=27,table=0,actions=drop’

该流表项的匹配字段包括:dl_type=0x0800(MAC帧上一层为IP协议)、nw_src=10.0.0.7(源IP地址为10.0.0.7)、nw_dst=10.0.0.11(目的IP地址为10.0.0.11);优先级priority设为27,高于其他流表,故优先执行;table id为0,即将该流表项下发到table 0中。该流表项表示:从主机10.0.0.7发往主机10.0.0.11的IP包将被抛弃。

其他流表操作

附常用OVS操作
1.添加网桥:ovs-vsctl add-br 交换机名
2.删除网桥:ovs-vsctl del-br 交换机名
3.添加端口:ovs-vsctl add-port 交换机名 端口名(网卡名)
4.删除端口:ovs-vsctl del-port 交换机名 端口名(网卡名)
5.连接控制器:ovs-vsctl set-controller 交换机名 tcp:IP地址:端口号
6.断开控制器:ovs-vsctl del-controller 交换机名
7.列出所有网桥:ovs-vsctl list-br
8.列出网桥中的所有端口:ovs-vsctl list-ports 交换机名
9.列出所有挂接到网卡的网桥:ovs-vsctl port-to-br 端口名(网卡名)
10.查看open vswitch的网络状态:ovs-vsctl show
11.查看 Open vSwitch 中的端口信息(交换机对应的 dpid,以及每个端口的 OpenFlow 端口编号,端口名称,当前状态等等):ovs-ofctl show 交换机名
12.修改dpid:ovs-vsctl set bridge 交换机名 other_config:datapath-id=新DPID
13.修改端口号:ovs-vsctl set Interface 端口名 ofport_request=新端口号
14.查看交换机中的所有 Table:ovs-ofctl dump-tables ovs-switch
15.查看交换机中的所有流表项:ovs−ofctl dump−flows ovs-switch
16.删除编号为 100 的端口上的所有流表项:ovs-ofctl del-flows ovs-switch “in_port=100”
17.添加流表项(以“添加新的 OpenFlow 条目,修改从端口 p0 收到的数据包的源地址为 9.181.137.1”为例):
ovs-ofctl add-flow ovs-switch “priority=1 idle_timeout=0,in_port=100,actions=mod_nw_src:9.181.137.1,normal”
(更多说明请查阅:《基于 Open vSwitch 的 OpenFlow 实践》)
18.查看 OVS 的版本信息:ovs-appctl –version
19.查看 OVS 支持的 OpenFlow 协议的版本:ovs-ofctl –version
1.列出br-int网桥的接口
ovs-ofctl -O OpenFlow13 show br-int2.列出br-int网桥的接口
ovs-ofctl dump-ports -O OpenFlow13 br-int3.列出br-int网桥的某个接口的详细信息
ovs-ofctl dump-ports -O OpenFlow13 br-int 14.查看 Open vSwitch 中的端口信息
ovs-ofctl show -O OpenFlow13 br-int5.获得网络接口的 OpenFlow 编号
ovs-vsctl get Interface tap8f178fef-10 ofport6.查看网桥下的流表
ovs-ofctl dump-flows -O OpenFlow13 br-int7.查看ovs下的 datapath 的信息
ovs-dpctl show8.根据流量显示在流表中的走向
ovs-appctl ofproto/trace br-int in_port=2 | grep “Rule|action”9.ovs设置控制器
ovs-vsctl set-controller br0 tcp:1.2.3.4:66310.ovs添加流表
ovs-ofctl add-flow br0 in_port=1,actions=output:211.删除网桥中所有的流表
ovs-ofctl del-flows br012.删除根据匹配项删除网桥中的流表
ovs-ofctl del-flows br0 “in_port=1”

---------------------------------------------------------------------------------------------------------------------------------

什么是mininet

        Mininet是一个进程虚拟化网络仿真器 可以创建由一些虚拟的主机、交换机、控制器和链路的虚拟网络,其交换机支持OpenFlow协议 它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。

mininet功能

        Mininet可以很方便地创建一个支持SDN的网络: host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。 有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中(可移植到真实环境)

为OpenFlow应用程序提供一个简单、便宜的网络测试平台启用复杂的拓扑测试,无需连接物理网络具有拓扑感知和OpenFlow感知的CLI,用于调试或运行网络范围的测试支持任意自定义拓扑,主机数可达4096,并包括一组基本的参数化拓扑提供用于网络创建和实验的可扩展Python API

Mininet优点 

-------------------------------------------------------------------------------------------------------------------------------- 


http://chatgpt.dhexx.cn/article/k6sMLJ8O.shtml

相关文章

【学习笔记】Mininet 入门

【学习笔记】Mininet入门实战 课程介绍 Mininet是由一些虚拟的终端节点、交换机、路由器连接而成的一个网络仿真器&#xff0c;它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。 Mininet可以很方便地创建一个支持SDN的网络&#xff1a;host就像真实的电脑一样工作&…

【Mininet】基础篇:Mininet创建简单网络拓扑及简单网络拓扑脚本编写

大家好&#xff0c;我是文思月&#xff01; 每文一言&#xff1a;不要假装努力&#xff0c;结果不会陪你演戏&#xff01; 本篇文章&#xff1a; 使用Mininet创建简单的网络拓扑&#xff0c;并创建网络拓扑脚本。 正文如下&#xff1a; 1. 最小网络拓朴 创建最小的网络拓扑…

【Mininet】安装篇:安装Mininet

大家好&#xff0c;我是皮皮猫吖&#xff01; 每文一言&#xff1a;改变你的生活&#xff0c;现在或者从不 本篇文章&#xff1a; 本文是安装 mininet 的简单过程。 正文如下&#xff1a; 一、Mininet的安装 第一步&#xff1a;安装git apt install git 第二步&#xff…

mininet基础

mininet介绍 一、Mininet是什么 Mininet是由斯坦福大学基于Linux Container架构开发的一个进程虚拟化网络仿真工具&#xff0c;可以创建一个包含主机&#xff0c;交换机&#xff0c;控制器和链路的虚拟网络&#xff0c;其交换机支持OpenFlow&#xff0c;具备高度灵活的自定义…

第一讲——mininet的安装和使用

第一讲——mininet的安装和使用 1.调出字符界面。 2.进入root。 3.直接安装git&#xff0c;发现无法安装&#xff0c;原因是没有安装源。 4.更新安装源。 5.再次安装git&#xff0c;发现可以安装。 6.下载mininet。 7.安装mininet。 8.查看mininet安装情况和创建线性网络拓扑。…

距离(distance)算法小结

18种和“距离(distance)”、“相似度(similarity)”相关的量的小结 在计算机人工智能领域&#xff0c;距离(distance)、相似度(similarity)是经常出现的基本概念&#xff0c;它们在自然语言处理、计算机视觉等子领域有重要的应用&#xff0c;而这些概念又大多源于数学领域的度…

概率论 联合分布

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 我之前一直专注于单一的随机变量及其概率分布。我们自然的会想将以前的结论推广到多个随机变量。联合分布(joint distribution)描述了多个随机变…

推荐 :联合概率和条件概率的区别和联系

联合概率P(A∩B) 两个事件一起&#xff08;或依次&#xff09;发生的概率。 例如&#xff1a;掷硬币的概率是 ⁄₂ 50%&#xff0c;翻转 2 个公平硬币的概率是 ⁄₂ ⁄₂ ⁄₄ 25%&#xff08;这也可以理解为 50% 的 50%&#xff09; P(A ∩ B) P(A) ⋅ P(B) 对于 2 个硬币…

【概率论】五分钟搞懂概率论联合密度函数与概率之间的计算

【例题】 设X和Y的联合密度函数为&#xff1a; f ( x , y ) { 2 0 < x < ∞ , 0 < y < ∞ 0 其 他 区 域 f(x,y)\left\{ \begin{array}{rcl} 2 && {0<x<\infty,0<y<\infty}\\ 0 && 其他区域 \end{array} \right. f(x,y){20​​0<…

python3 联合概率,边缘概率,贝叶斯定理(含详细推导)

1、贝叶斯原理 假设有两个随机变量X&#xff1b;Y&#xff08;下方左图&#xff09;&#xff1b; X的取值为 {}&#xff0c;其中 i1,...,M(M个特征&#xff09;&#xff1b; Y的取值为 {}&#xff0c;&#xff0c;其中 j1,...,L&#xff08;L个类&#xff09;&#xff0c;如…

条件概率、联合概率

条件概率的条件已经发生了&#xff0c;而联合概率的两个事件不一定发生。 图中可以看出 等式左边是联合概率&#xff0c;联合概率是指两个事件同时发生的概率&#xff0c;与条件概率不是一回事&#xff0c;条件概率的条件已经发生。 万普尼克理论&#xff1a;

贝叶斯网络的联合概率到底有什么用:贝叶斯理论(4)

上篇博客我们描述了如何计算贝叶斯网络联合概率的方法。这里再举一个例子&#xff1a; 上图这个例子中&#xff0c;事件a导致了b和c的发生。假设a有、、三种状态&#xff0c;b有、两种状态&#xff0c;c有、&#xff0c;a的每个状态的先验概率是&#xff1a; 0.30.50.2 b对a的…

机器学习之条件概率,联合概率,贝叶斯定理详解

文章目录 前言边缘概率联合概率定义分析 条件概率定义问条件概率能举个例子吗问条件概率在图中表示的是哪一块呢&#xff1f;条件概率习题&#xff1a; 全概率定义推导全概率习题 贝叶斯公式定义推导贝叶斯定理习题 结束语 前言 条件概率&#xff0c;边缘概率&#xff0c;联合…

概率论中的联合概率理解

最近在看信息论中的概念&#xff0c;对于联合熵的概念比较混乱&#xff0c;从而引发出对联合概率的思考&#xff0c; 当提到联合概率的时候大家都会看到这么一个图&#xff1a; 学习概率论是这样理解还可以&#xff0c;还能解释条件概率&#xff0c;总体挺好的&#xff1b; 但…

5分钟理解边缘概率,联合概率,条件概率,随机事件独立,随机事件依赖

在隐马尔可夫&#xff08;HMM&#xff09;和条件随机场&#xff08;CRF&#xff09;中有很多概率计算问题&#xff0c;要想理解他们&#xff0c;必须先把概率的一些概念及计算公式搞清楚。本文旨在用形象的图形和具体事例来讲解这些概念和公式&#xff0c;以帮助理解。这里讲的…

联合概率和条件概率的区别和联系

联合概率P(A∩B) 两个事件一起&#xff08;或依次&#xff09;发生的概率。 例如&#xff1a;掷硬币的概率是 ⁄₂ 50%&#xff0c;翻转 2 个公平硬币的概率是 ⁄₂ ⁄₂ ⁄₄ 25%&#xff08;这也可以理解为 50% 的 50%&#xff09; P(A ∩ B) P(A) ⋅ P(B) 对于 2 个硬…

联合概率和条件概率区别

为什么从定义上看&#xff0c;觉得联合概率和条件概率是一个意思&#xff1f; P(A|B) 和 P(AB) 这俩真的不是一个东西吗&#xff1f;&#xff1f; 碎碎念开始&#xff0c;正文请跳往第2分割线 虽然我产生了这种疑问&#xff0c;但我的直觉告诉我&#xff1a;大概是个傻逼。于…

联合概率(joint probability)、分布函数(distribution function)

0. PMF 与 PDF 的记号 PMF&#xff1a; PX(x) PDF&#xff1a; fX(x) 1. 联合概率 联合概率&#xff1a;是指两个事件同时发生的概率。 P(A,B)P(B|A)⋅P(A)⇒P(B|A)P(A,B)P(A) P(A,B)=P(B|A)\cdot P(A) ⇒ P(B|A)=\frac{P(A,B)}{P(A)}因此当两事件独立时&#xff0c; P(A,B)P…

条件概率和联合概率

表示两个事件共同发生百的概率。 A与B的联合概率表示为 P(AB) 或者P(A,B)&#xff0c;或者P(A∩B)。 在概率论中&#xff0c;联合概率是指在多元的概率分布中多个随机变量分别满足各自条件的概率。 举例说明&#xff1a;假设X和Y都服从正态分布&#xff0c;那么P{X<4,Y&l…

联合概率

在机器学习经常出现联合概率&#xff0c;总是困扰者我。因此记录一下 联合概率分布简称联合分布&#xff0c;是两个及以上随机变量组成的随机向量的概率分布。根据随机变量的不同&#xff0c;联合概率分布的表示形式也不同。 对于离散型随机变量&#xff0c;联合概率分布可以以…