如何使用判别函数绘制 3 个类别之间的决策边界

2024-07-01

我有 3 个判别函数,将 2D 空间划分为 3 个区域。我想绘制这些区域之间的决策边界。我不知道如何在 python 中使用 matplotlib meshgrid 来做到这一点。

对于2个判别函数,过程很简单。我计算值为 0 的函数和等高线图之间的差异。

lin_param = (-5, 5, 100)
xx = np.linspace(*lin_param)
yy = np.linspace(*lin_param)

x, y = np.meshgrid(xx, yy)

z = g1(x, y) - g2(x, y)
cp = plt.contour(x, y, z, levels=[0], colors="k")

plt.scatter(0, 0)
plt.scatter(2, 2)
plt.show()

其中 g1 和 g2 是均值为 (0, 0) 和 (2, 2) 的多元高斯分布。 (分布并不重要,我想将其应用于任何判别函数)

def pdf(x, y, mean, cov):
  var = multivariate_normal(mean=mean, cov=cov)
  pos = np.empty(x.shape + (2,))
  pos[:, :, 0] = x; pos[:, :, 1] = y
  return var.pdf(pos)

def g1(x, y):
  return pdf(x, y, mean=[0,0], cov=[[1,0],[0,1]])

def g2(x, y):
  return pdf(x, y, mean=[2,2], cov=[[1,0],[0,1]])

def g3(x, y):
  return pdf(x, y, mean=[-2,2], cov=[[1,0],[0,1]])

这里一侧是负极,另一侧是正极。沿决策边界的值全部为零。现在我要添加第三个函数 g3,其均值位于 (-2, 2)。绘制结果决策边界并不简单。我尝试取 3 个函数的最大 2 个值并将它们的差值指定为 z 值,但无法实现我想要的。

我希望看到类似于下图的内容:

是否可以使用类似的网格轮廓图方法来实现它?我不想明确地计算这条线。

Update

通过使用contourf方法,可以用不同的颜色填充区域。然而,划定边界线仍然是个问题。


我想我达到了预期的输出。

我没有将函数之间的差异分配给 z 数组,而是分配了具有最大值的函数的索引。然后我使用类标签(或函数索引)之间的数字作为级别参数。例如,为了绘制 0 类和 1 类之间的边界,我在levels参数中添加了0.5。

z = np.array((g1(x, y), g2(x, y), g3(x, y)))
z = np.argmax(z, axis=0)
cp = plt.contour(x, y, z, colors="k", levels=[0.5, 1.5, 2.5])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用判别函数绘制 3 个类别之间的决策边界 的相关文章

  • Python pandas - 根据集体 NaN 计数删除组

    我有一个基于不同气象站的多个变量 温度 压力等 的数据集 stationID Time Temperature Pressure 123 1 30 1010 5 123 2 31 1009 0 202 1 24 NaN 202 2 24 3
  • 在Python中使用argparse解析整个JSON

    我正在尝试使用 ARGPARSE 库在一个简单的参数中解析整个 Json 问题是当它遇到儿子内部的不同元素 例如 和 时 它会突然停止 这是测试代码 parse py import argparse parser argparse Argu
  • 从 pexpect 中提取 stderr

    我的问题很简单 我可以吗 expect 使用 pexpect 查看 stderr 上的某些输出 它似乎pexpect spawn 只能用于期望 stdout 上的输出 乌托邦的例子 import pexpect child pexpect
  • PyCharm 项目文件消失了

    我当时正在做一个 python 项目JetBrains PyCharm 2016 2 https www jetbrains com pycharm 在 Lubuntu 上 突然之间 我的所有项目文件都从 IDE 中消失了 我尝试了以下方法
  • 如何用不同颜色显示多级分析中的不同级别

    我是多级分析的初学者 并尝试了解如何使用绘图函数绘制图表base R 我理解的输出fit下面 但我在可视化方面遇到了困难 df只是一些简单的测试数据 t lt seq 0 10 1 df lt data frame t t y 1 5 0
  • TypedDict 中的 Python 任意键

    是否可以使用一组已知键创建 TypedDict 然后创建任意键的类型 例如 在 TypeScript 中 我可以这样做 interface Sample x boolean y number name string string Pytho
  • 从图像中读取文本

    关于将这些图像转换为文本有什么建议吗 我正在使用 pytesseract 除了这个之外 它在大多数情况下都工作得很好 理想情况下 我会准确地读取这些数字 最坏的情况我可以尝试使用 PIL 来确定 左边的数字是否为零 从左边开始 找到第一个白
  • numpy 不规则跨步数组

    引用文档 http docs scipy org doc numpy reference arrays ndarray html internal memory layout of an ndarray关于内存中的 numpy 数组结构 N
  • scikit learn中partial_fit遇到的错误

    在 scikit learn 中使用partial fit 函数进行训练时 即使训练后的模型行为正确并给出正确的输出 我也会在程序未终止的情况下收到以下错误 这怎么可能 以及这样做的后果是什么 这是值得担心的事情吗 usr lib pyth
  • 使用python docx合并word文档

    我有几个单词文件 每个文件都有特定的内容 我想要一个片段来展示或帮助我弄清楚如何在使用 Python 时将单词文件合并到一个文件中docx图书馆 例如 在 pywin32 库中我执行了以下操作 rng self doc Range 0 0
  • Python:控制超时长度

    我在脚本中运行了类似于以下的代码 try s ftplib FTP xxx xxx xxx xxx username password except print Could not contact FTP serer sys exit 如果
  • 如何在python中查找文件的mime类型?

    假设您想要将一堆文件保存在某个地方 例如保存在 BLOB 中 假设您想通过网页分发这些文件 并让客户端自动打开正确的应用程序 查看器 假设 浏览器通过 HTTP 响应中的 mime type 内容类型 标头确定要使用哪个应用程序 查看器 基
  • 模拟 default=timezone.now 进行单元测试

    我正在尝试为执行大量日期时间操作的 django 应用程序编写单元测试 我已经安装了mock http www voidspace org uk python mock 给 django 打猴子补丁timezone now为了我的测试 虽然
  • python中1+1可以等于3吗? [复制]

    这个问题在这里已经有答案了 在继续之前 我知道人们应该never做这个 这个问题纯粹是出于教育目的 我进行这个练习是为了更好地理解 python 的内部结构ctypes 以及它们如何工作 我知道在 python 中更改整数的值相对容易 其实
  • 与 Pandas DataFrame 列表列的比较

    我有一个像这样的数据框 df col1 col2 a 1 2 b 3 4 c 3 9 我想根据匹配的输入数组获取行 因此如果我有数组 1 2 我可以获得 col1 col2 a 1 2 当我尝试使用此公式执行此操作时 它不起作用 df lo
  • 任何方法来跟踪Python中的最后5个数据点

    所以我有一个包含多个数字的数组 随着我的脚本运行 越来越多的数字被附加到该数组中 但是 我对所有数字并不感兴趣 而只想跟踪最后 5 个数字 目前 我只是将所有数字存储在数组中 然而 这个数组变得非常大并且充满了不必要的信息 我考虑过创建一个
  • 一次将多个函数应用于 Pandas groupby 对象

    已经提出了这个问题的变体 参见这个问题 https stackoverflow com questions 40532024 pandas apply multiple functions of multiple columns to gr
  • 相当于 C++ 中用于缓冲读取的 python 生成器

    Guido Van Rossum 在此展示了 Python 的简单性article http neopythonic blogspot com 2008 10 sorting million 32 bit integers in 2mb h
  • Pandas:获取重复索引

    给定一个数据帧 我想获取重复的索引 这些索引在列中没有重复的值 并查看哪些值不同 具体来说 我有这个数据框 import pandas as pd wget https www dropbox com s vmimze2g4lt4ud3 a
  • OpenCV中如何在点之间画线?

    我有一个元组数组 a 375 193 364 113 277 20 271 16 52 106 133 266 289 296 372 282 OpenCV中如何在点之间画线 这是我的代码不起作用 for index item in enu

随机推荐

  • JavaScript 作为 HTML 属性是不好的做法吗?

    例子 https stackoverflow com a 372 89566 710887 https stackoverflow com a 37289566 710887 我看到这种情况越来越频繁地发生 我总是被教导要将 javascr
  • Apache2:如何记录拒绝的连接和客户端超时

    我正在对使用 Apache2 运行的服务进行一些负载测试 我的负载测试工具的默认超时为 30 秒 当我以每秒 1 个请求的负载运行该工具一分钟时 它报告 40 个请求成功 并有 200 个 OK 响应 并且有 20 个请求被取消 因为等待标
  • Jmeter json 路径提取器 - 如何从提取的值中删除 [ ]

    From json questions tagged json token id token id 82903430 f9b3 4f4b 9efa ee1b991cb735 我正在提取token id using json question
  • A* 搜索算法

    我想澄清以下 A 搜索示例的一些内容 用红色省略号突出显示的部分是我不理解的区域 看起来 S B f 2 6 8已被采取 移动 复制自Expand S 上 并用于Expand A 看来还 S A X f 1 4 5 10已被采取 移动 复制
  • Typescript 字符串文字联合类型

    我有一个类属性 其类型是多个字符串文字的联合 public reaction haha wow angry sad like 我想做的是将这些字符串定义在某种数组的其他位置 然后在属性定义中使用该数组 所以像这样 allowedString
  • 将组合框双向绑定到静态属性

    编辑 所以 我想我的代码是正确的 您所有答案中的代码片段也是正确的 感谢那 我的问题是我的开发机器运行 NET4 5 其行为不同 同样的程序 针对 NET4 0 编译 在 NET4 0 的机器上运行正确 但在 NET4 5 的机器上运行不正
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下
  • 使用 解释 gprof 输出

    我试图在我的程序中找到性能问题 从而通过分析来检测代码 gprof 创建一个如下所示的平面配置文件 Flat profile Each sample counts as 0 01 seconds cumulative self self t
  • 缺乏 CUDA 5 动态并行示例

    我一直在谷歌上搜索 只找到了一个简单的例子 http developer nvidia com sites default files akamai cuda files CUDADownloads TechBrief Dynamic Pa
  • Scrapy在使用crawlerprocess运行时抛出错误

    我用 python 编写了一个脚本 使用 scrapy 来收集网站上不同帖子的名称及其链接 当我从命令行执行脚本时 它可以完美地工作 现在 我的意图是使用运行脚本CrawlerProcess 我在不同的地方寻找类似的问题 但我找不到任何直接
  • 未调用下拉列表的自定义验证器(显然)

    为使用自动回发的下拉列表编写自定义验证器 似乎完全忽略了验证 为什么它被忽略并且有简单的修复方法吗 注意我没有使用 ControlToValidate asp net
  • 从 Iphone 本机客户端使用 Google App Engine 进行身份验证

    我想创建一个 Iphone 游戏 用户可以使用他们的 facebook 凭据登录并通过在 Google App Engine 上运行的我的服务器进行身份验证 我已经在 iPhone 和 Google App Engine 上使用了 Face
  • 如何使用 cmake 和 QRC 将 Qt4 qm 文件集成为二进制文件?

    我有一个 Qt4 CMake 项目 我想将 i18n 的 QM 文件集成到输出二进制文件中 这些是我迄今为止生成 TS 和 QM 文件的规则 set myapp TRANSLATIONS i18n myapp de ts set FILES
  • 同一项目的不同文件夹中的相同包名称

    我正在开发一个大项目 最终可能会包含数万行代码 对于当前的结构我喜欢这样 main go controllers NAME go models NAME go 问题是控制器和模型目录包含很多文件 全部使用package controller
  • 如何在javascript中获取表中复选框的值

    我需要获取表行中提供跨度的复选框的值 下面的代码是我的项目的一部分 HTML 代码用于动态我的表格 而 javascript 代码用于获取不适用于复选框的元素的值 它适用于其他输入元素 我的桌子 var html tr class rows
  • 在 Azure AD B2C 中,首次从社交登录登录时,如何将用户的社交帐户与现有本地帐户关联?

    据我从文档中了解到 Azure AD B2C 会在第一次登录时为来自 GMail Facebook 等社交登录的每个用户创建一个新的本地帐户 如果我错了 请纠正我 但是 我想拦截此行为并将用户链接到已经存在的 用户自己的 本地帐户 而不通过
  • ++ 已弃用,它将在 swift 3 中删除[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 将在 swift 3 中被弃用 变量 现在可以写成 variable 1 我怎样才能重写 variable 请回忆一下之间的区别 varia
  • PHP Serialize() ― 规范 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在寻找有关 PHP serial
  • 使用 terraform 初始化 terraform 后端

    我刚刚开始使用 terraform 我希望能够使用 AWS S3 作为后端来存储项目的状态 terraform backend s3 bucket tfstate key app state region us east 1 我觉得使用 t
  • 如何使用判别函数绘制 3 个类别之间的决策边界

    我有 3 个判别函数 将 2D 空间划分为 3 个区域 我想绘制这些区域之间的决策边界 我不知道如何在 python 中使用 matplotlib meshgrid 来做到这一点 对于2个判别函数 过程很简单 我计算值为 0 的函数和等高线