在 Matplotlib 中绘制 k-NN 决策边界图

2023-11-21

How do I color the decision boundaries for a k-Nearest Neighbor classifier as seen here: enter image description here I've got the data for the 3 classes successfully plotted out using scatter (left picture).

图片来源:http://cs231n.github.io/classification/


要绘制决策边界,您需要制作一个网格。您可以使用np.meshgrid去做这个。np.meshgrid需要 X 和 Y 的最小值和最大值以及网格步长大小参数。有时,谨慎的做法是使最小值略低于 x 和 y 的最小值,并使最大值略高。

 xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                     np.arange(y_min, y_max, h))

然后你像这样向分类器提供网格Z=clf.predict(np.c_[xx.ravel(), yy.ravel()])您需要将其输出重塑为与原始网格相同的格式Z = Z.reshape(xx.shape)。最后,当你制作你的情节时,你需要打电话plt.pcolormesh(xx, yy, Z, cmap=cmap_light)这将使决策边界在你的图中可见。

下面是实现此目的的完整示例,位于http://scikit-learn.org/stable/auto_examples/neighbors/plot_classification.html#sphx-glr-auto-examples-neighbors-plot-classification-py.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets

n_neighbors = 15

# import some data to play with
iris = datasets.load_iris()
X = iris.data[:, :2]  # we only take the first two features. We could
                      # avoid this ugly slicing by using a two-dim dataset
y = iris.target

h = .02  # step size in the mesh

# Create color maps
cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])

for weights in ['uniform', 'distance']:
    # we create an instance of Neighbours Classifier and fit the data.
    clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)
    clf.fit(X, y)

    # Plot the decision boundary. For that, we will assign a color to each
    # point in the mesh [x_min, x_max]x[y_min, y_max].
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                         np.arange(y_min, y_max, h))
    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

    # Put the result into a color plot
    Z = Z.reshape(xx.shape)
    plt.figure()
    plt.pcolormesh(xx, yy, Z, cmap=cmap_light)

    # Plot also the training points
    plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold)
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.title("3-Class classification (k = %i, weights = '%s')"
              % (n_neighbors, weights))

plt.show()

This results in the following two graphs to be outputted enter image description here

enter image description here

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

在 Matplotlib 中绘制 k-NN 决策边界图 的相关文章

随机推荐

  • Rails 从控制台调用控制器操作

    我有一个可以创建会话的控制器会话 我想从控制台调用它 例如controller create 这是动作 def create raise request env omniauth auth to yaml auth request env
  • 使用托管标识在 Azure 中对应用程序服务进行身份验证

    我在 Azure 中设置了两个应用程序服务 Parent 和 Child 都公开 API 端点 子级有端点 Get 父级具有端点 Get 和 GetChild 使用 HttpClient 在子级上调用 Get 我希望所有子端点都需要通过托管
  • 为 Tesseract OCR 创建训练图像

    我正在编写一个用于 Tesseract OCR 训练图像的生成器 为 Tesseract OCR 的新字体生成训练图像时 最佳值是 The DPI 字体大小 以磅为单位 字体是否应该抗锯齿 Should the bounding boxes
  • 包含 是否需要链接到 tbb?

    在我的 Ubuntu 20 平台 使用 g 9 3 0 上的项目中 我使用以下行 include
  • 如何在Linux shell脚本或python中找出上周六的日期?

    我有 python 脚本 我需要每天运行它来进行备份 现在我需要找到上周六的日期 因为我需要在脚本中使用它来获取上周六所做的备份 认为 星期六我制作了这个文件 weekly user1 Jul 13 2013 sql 我需要在每天运行的脚本
  • MaxDegreeOfParallelism = Environment.ProcessorCount 减慢了我的 CPU 上的执行时间

    我有以下程序 我从http blogs msdn com b csharpfaq archive 2010 06 01 parallel programming in net framework 4 getting started aspx
  • 可以使用 R 编写 Excel 公式或数据验证吗?

    我正在尝试将 R 数据框写入 Excel 并希望添加具有 Excel 公式和 或数据验证值的其他单元格 列 例如 使用 Excel 中的数据 验证菜单提供允许值的下拉列表 细胞 我查看了 R 软件包 xlsx XLConnect 和 ope
  • 蟒蛇 | tkinter:tkinter.END 是做什么的?

    通过书本学习python 一段代码中使用了tkinter END 没有解释 import tkinter def count text out data Update out data with the total number of As
  • 更改工具栏后退箭头颜色

    你好 在上图中 您可以看到一个后退箭头和一个 部分 标题 我使用附加的 xml 代码更改了标题颜色 但我也想将后退箭头设置为白色 我在互联网上读到了一些答案 但对于这样一个简单的问题来说 它们看起来太复杂了 为什么这样做很简单吗
  • 如何在 Go 构建过程中更改 ~/.cache 目录

    Go build 触及 cache 这是不可取的 如何更改该目录的位置 缓存默认为操作系统定义的用户缓存 目录 但可以通过设置 GOCACHE 来移动 Source 文章来自RSC
  • 使用 sf 将空间坐标集转换为 R 中的多边形

    我的列表中的每个元素都包含一组空间坐标 我想使用 sf 将其转换为多边形 每组坐标都按照我想要 连接点 的顺序排序 并且第一行和最后一行相同 以闭合多边形 每个列表元素都用唯一标识符命名 我希望将其保留为 sf 输出中的属性 我在这里改编了
  • boost::asio ssl 链接错误

    我使用的是 boost 版本 1 47 Visual Studio 2010 我下载了 Windows 的二进制文件并从我的项目首选项链接到 include 目录和 lib 目录 但我仍然无法使用 boost asio 的任何 ssl 功能
  • 在 python 中使用 .csv 按特定列数据排序

    我正在尝试订购一个包含 300 多个条目的 csv 文件 并将其全部输出 并按方言下的一个特定列中的数值排序 这是我到目前为止编写的代码 但它似乎只是在输入数据时输出数据 import csv import itertools from i
  • Flink 中的 java.lang.NoSuchMethodError

    我尝试使用以下方法读取文件 final ExecutionEnvironment env ExecutionEnvironment getExecutionEnvironment DataSet
  • WinForms 全局异常处理?

    我已经实现了具有 DLL 库的软件 其中包含一组类 其中包括我的软件的所有方法 现在我希望能够处理一些全局错误 例如错误 26 它是所有这些类上的非网络相关错误 而不是转到每个类并添加它 我该怎么做呢 If 26是一个例外 那么你可以使用A
  • 在Python中将int转换为二进制字符串

    如何在 Python 中将整数转换为二进制字符串 37 100101 Python 的字符串格式方法可以采用格式规范 gt gt gt 0 b format 37 100101 Python 2 的格式规范文档 Python 3 的格式规范
  • CPU 中的 LRU 缓存是如何实现的?

    我正在为面试做准备 想重温一下我对缓存的记忆 如果CPU有一个带有LRU替换策略的缓存 那么它在芯片上实际上是如何实现的呢 每个缓存行会存储一个时间戳记吗 另外 在双核系统中两个 CPU 同时写入同一个地址时会发生什么情况 对于只有两种路的
  • AngularJs:替换字符串的一部分

    AngularJs 有没有办法替换字符串 我正在尝试做类似的事情 string replace some thing Thanks 你的片段有效 demo http plnkr co edit yNuNeE5yO3rgKAYfGx48 p
  • 相当于 C# 中 VB 的格式

    等效代码是什么Format iCryptedByte 000 VB NET 在 C 中 String Format format iCryptedByte where format like 0 D2 参见MSDN1 2 3
  • 在 Matplotlib 中绘制 k-NN 决策边界图

    How do I color the decision boundaries for a k Nearest Neighbor classifier as seen here I ve got the data for the 3 clas