在 Python 中绘制 3D 边界决策

2024-01-28

我正在尝试绘制 3D 决策边界,但它似乎并不像看起来那样工作,看看它是怎样的:

我希望它像本例中那样显示:

我不知道如何解释,但在上面的例子中,它实际上看起来像一堵“墙”。这就是我想在我的代码中做的事情。

然后按照我的代码:

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_title('Hello World')
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_zlim(-1, 1)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

w = [3,2,1]

x = 1
y = 1
z = 1

x_plan = (- w[1] * y - w[2] * z) / w[0]
y_plan = (- w[0] * x - w[2] * z) / w[1]
z_plan = (- w[0] * x - w[1] * y) / w[2]

ax.plot3D([x_plan, 1, 1], [1, y_plan, 1], [1, 1, z_plan], "lightblue")

plt.show()

PS:我正在使用:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

我认为问题应该出在计算上,否则就出在:

ax.plot3D([x_plan, 1, 1], [1, y_plan, 1], [1, 1, z_plan], "lightblue")

P.S.2:我知道我的边界决策没有正确分离数据,但目前这对我来说是一个细节,稍后我会修复它。


要绘制 3D 曲面,您实际上需要使用plt3d.plot_surface, 参见参考资料 https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html?highlight=plot_surface#mpl_toolkits.mplot3d.Axes3D.plot_surface.

例如,这段代码将生成以下图像(请注意注释plt3d.plot_surface line):

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

def randrange(n, vmin, vmax):
    '''
    Helper function to make an array of random numbers having shape (n, )
    with each number distributed Uniform(vmin, vmax).
    '''
    return (vmax - vmin)*np.random.rand(n) + vmin

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

n = 10

for c, m, zlow, zhigh in [('r', 'o', 0, 100)]:
    xs = randrange(n, 0, 50)
    ys = randrange(n, 0, 50)
    zs = randrange(n, zlow, zhigh)
    ax.scatter(xs, ys, zs, c=c, marker=m)

for c, m, zlow, zhigh in [('b', '^', 0, 100)]:
    xs = randrange(n, 60, 100)
    ys = randrange(n, 60, 100)
    zs = randrange(n, zlow, zhigh)
    ax.scatter(xs, ys, zs, c=c, marker=m)


ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

xm,ym = np.meshgrid(xs, ys)

ax.plot_surface(xm, ym, xm, color='green', alpha=0.5) # Data values as 2D arrays as stated in reference - The first 3 arguments is what you need to change in order to turn your plane into a boundary decision plane.  

plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中绘制 3D 边界决策 的相关文章

随机推荐

  • ol/ul 应该在

    内部还是外部?

    这两者之间哪个符合标准 p Text text text p ol li First element li ol p Other text text p OR p Text text text p ol li First element l
  • 在 MySQL 插入语句中使用 Python 变量

    我已经尝试了一段时间了 在网上查了一下 但无法弄清楚 变量是numbers and animals sql INSERT INTO favourite number info VALUES numbers animals cursor ex
  • 在 MVC Core 应用程序中使用 AddAzureADB2C 时向 ClaimsPrincipal 添加自定义声明

    使用 azure AzureADB2C 进行身份验证时 我想将在门户中管理的自定义声明添加到声明原则 current code in start up services AddAuthentication AzureADB2CDefault
  • 一次读取时按长度对文件中的所有单词进行排序。 (爪哇)

    我的数据结构课的作业是找到从一个单词到另一个单词的最短路径 即开始 流血 gt 混合 gt 金发 gt 结束 血液 成本为 3 我得到了一个单词列表 我必须使用地图对其进行分组 在哪里 键 单词的长度 值 具有该长度的所有单词的集合 我已经
  • “双重”分配——应该避免吗?

    考虑一下你有一些像这样的表达 i j 0 假设这是在您选择的语言中明确定义的 通常将其分成两个表达式会更好吗 i 0 j 0 我有时会在库代码中看到这一点 就简洁性而言 它似乎并没有给您带来太多好处 并且不应该比这两个语句执行得更好 尽管这
  • Hazelcast 中基于时间的驱逐

    我正在满足一个要求 即我有 N 个 hazelcast 实例在集群中运行 并且 kafka 消费者在所有实例上运行 现在的问题是 kafka 上传入的每条消息都应添加到分布式映射中 并且必须每 20 秒驱逐该条目 这是我通过在映射中结合使用
  • Lint-staged 找不到与 glob 匹配的暂存文件

    我正在使用 NodeJS Typescript 我想设置lint staged在提交之前验证我的文件 但它不起作用 我从指南中添加如下 husky hooks pre commit lint staged lint staged js js
  • 如何将数组中的值复制到新数组中?

    我已经断断续续地尝试解决这个问题一个星期了 但我不断遇到问题 我的目标 编写一个为整数数组分配内存的函数 该函数将整数指针 数组大小和要分配的 newSize 作为参数 该函数返回一个指向分配的缓冲区的指针 第一次调用该函数时 大小将为零并
  • 获取与 XEP-0313 每次对话的最后一条消息?

    我正在使用一个 XMPP 服务器来实现XEP 0313 http xmpp org extensions xep 0313 html用于检索对话历史记录 我只想获取每个对话的最后一条消息 以便我可以构建您最近的对话列表 预览最后一条消息 我
  • CALL 命令与带 /WAIT 选项的 START 命令

    带有 WAIT 选项的 START 命令如何 START wait notepad exe START wait notepad exe 与使用 CALL 命令有什么不同吗 CALL notepad exe CALL notepad exe
  • 在 32 位 .NET 进程中分配超过 1,000 MB 的内存

    我想知道为什么我无法在 32 位 NET 进程中分配超过 1 000 MB 的内存 以下迷你应用程序在分配 1 000 MB 后抛出 OutOfMemoryException 为什么是 1 000 MB 而不是 1 8 GB 是否有我可以更
  • Java 中 JTable 的 JDBC TableModel?

    我想将数据库表显示为 JTable 我以前从未使用过 JTable 所以我用 google 搜索了 JTable 和 TableModel 通过谷歌搜索 我可以编写自己的自定义 TableModel 它显示存储在中的数据 Object da
  • 如何在 android 中使用 java 8 库?

    我正在尝试在我的 android 项目中使用一个使用 java 8 的库 我无法找到一种方法来完成这项工作 我尝试过使用复古 lambda 但没有帮助 我不断收到错误 com android dx cf iface ParseExcepti
  • acosf() 返回 NaN

    我有一个用 Objective C 编写的 iPhone 应用程序 我在其中收集用户在屏幕上绘制的触摸点以创建路径 我希望能够精简这些数据 我的目标之一是检查点的角度是否超过某个阈值 例如 如果我在名为 a b c 的线上取任意三个相邻点
  • AngularJS 路由参数可以包含任意字符

    我是 AngularJS 的新手 所以如果这是显而易见的 请原谅我 但我正在寻找可以回答这个棘手问题的人 我正在实现一个应用程序 需要将一些参数传递到特定视图以显示有关书籍的详细信息 基本上我希望能够使用以下路由表达式 bookApp co
  • 我想知道缩放和轨道运行出了什么问题

    我希望能够平移 缩放和绕立方体旋转 我想知道为什么立方体在屏幕上显示为完全缩放 以至于我必须向后移动才能查看整个立方体 我还想将缩放控件更改为 Alt 和鼠标右键以进行缩放和轨道旋转 但我无法让它工作 任何援助将不胜感激 header in
  • 无法将数据类型 nvarchar 转换为 float 时出错

    我搜索了这个很棒的论坛并用谷歌搜索 但无法解决这个问题 我们有两张桌子 相信我 我与这些桌子无关 两个表都有一个名为eventId 然而 在一张表中 数据类型为eventId is float在另一个表中 它是nvarchar 我们正在选择
  • VBA 尝试和捕获 (MS Outlook)

    我使用以下函数来监视公共 Outlook 文件夹是否有新电子邮件到达 Public Sub Application Startup Set NewMail Application GetNamespace MAPI Folders 3 Fo
  • 为什么 SVG 滚动性能比 PNG 差这么多?

    我正在开发的一个网站在滚动对话框窗口中显示大量 gt 50 复杂的 SVG 图像 在 Chrome 中查看网站时 对话框窗口的滚动性能非常差 明显滞后且缓慢 但是 如果我用 PNG 图像替换 SVG 图像 滚动将非常平滑且响应灵敏 这是差异
  • 在 Python 中绘制 3D 边界决策

    我正在尝试绘制 3D 决策边界 但它似乎并不像看起来那样工作 看看它是怎样的 我希望它像本例中那样显示 我不知道如何解释 但在上面的例子中 它实际上看起来像一堵 墙 这就是我想在我的代码中做的事情 然后按照我的代码 fig plt figu