我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

python画图中有一种边界图,或者称为等高线图/等温线图/等压线图。在人工智能里面,称之为决策边界图。其实,背后的原理都是一样的,都是来自于matplotlib.pyplotcontourf()函数。它可以根据输入的数据绘制出二维数据集的边界线图像。在本文中,苏南大叔将对其做个简单的探索。

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - plot画边界线
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验总结。本文测试环境:win10python@3.11.0numpy@1.24.2matplotlib@3.7.1

数据准备

数据准备的话,还是基于下面文章的数据范例。参考文章:

import numpy as np
x = np.arange(0, 12, 3)
y = np.linspace(0, 12, 3)
xx, yy = np.meshgrid(x, y)

总之,这里拿到了待处理的原始网格点信息。

准备决策数据

然后需要的数据是等高线数据,这个是重点哦。整个边界图的样子(漂亮程度、线条走向)的主要依据来源,就是下面这个数据了。数据很重要,但是数据的来源逻辑,可就是根据大家的实际情况来编写的了,每个人的写法都不一样。

# 写你自己的逻辑,获得一系列点的数值集合
zz = np.square(xx) - yy
# zz = np.square(xx) - yy > 0
# zz = np.sin(xx) + np.cos(yy)

它的数据就是等高线的“高”,等温线的“温”,等压线的“压”。总之,这里得到的是一系列的数据,contourf()会对这里的数据进行分组,然后合并成色块进行展示。并且,可能是一些互不相等的数字,也可能只是两种情况的truefalse

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - 决策依据数据
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-2)

画等高线【本文主体】

import matplotlib.pyplot as plt
plt.contourf(xx, yy, zz)
# ...
plt.show()

想象成一个三维立体空间坐标系就比较好理解了,x,y是二维坐标,z坐标用于在竖直方向上画边界线。

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - 边界图一
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-3)

分支一,调整等高线的层次(线条数)

下面代码里面的数字2就是线条数,这里解释为线条数略有些牵强,待后续补充。

plt.contourf(xx, yy, zz, 2)

这里的线条数设置3,显示处理的分界线就是4。设置5,就显示出来6条分界线。(如果能分开这么多的话)

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - 边界图二
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-4)

分支二,设置等高线颜色及colorbar

plt.contourf(xx, yy, zz, cmap="cool")
plt.colorbar()

cmap参数和color参数冲突,只能设置一个,推荐设置cmap

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - 边界图三
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-5)

.colorbar()就是对于边界线的决策依据做个简单的图例说明。这个暂作伏笔,以后在展开叙述。

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - 边界图四
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-6)

图像增益【便于理解】

这部分准备先画个散点图,然后给每个点上加个文字,便于查看理解最终的决策图的决策依据。仅仅是个增益的选项,实际的决策图,没有这些散点,边界图依然是可以画出来的。

plt.scatter(xx, yy)
for xyz in zip(xx.ravel(), yy.ravel(), zz.ravel()):
    plt.text(xyz[0], xyz[1], "(%s,%.f => %s)" % xyz)

苏南大叔:基于python,plot如何画等高线/等温线/等压线/决策边界图? - 边界图五
基于python,plot如何画等高线/等温线/等压线/决策边界图?(图7-7)

这部分代码,涉及的参考文章比较多:

结束语

plot画图,在大数据的数据展示层面,是非常重要的。更多python相关文章,请参考苏南大叔的文章链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python