当前位置: 首页 > news >正文

【深度学习 | 数据可视化】 视觉展示分类边界: Perceptron模型可视化iris数据集的决策边界

在这里插入图片描述

🤵‍♂️ 个人主页: @AI_magician
📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。
👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍
🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能&硬件(虽然硬件还没开始玩,但一直很感兴趣!希望大佬带带)

在这里插入图片描述

该文章收录专栏
[✨— 《深入解析机器学习:从原理到应用的全面指南》 —✨]

决策边界可视化

Perceptron

在训练好高精度的模型,我们可以通过有效的可视化直观看到分类效果,相比于混淆矩阵等分类指标更加直观。如下示例就可以看出iris数据集的Sepal (花萼)相比 Petal (花瓣)更难分类

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Perceptron
# 加载鸢尾花数据集 
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data[:,2:], data.target, test_size=0.2)# 创建并训练感知器模型
perceptron = Perceptron()
perceptron.fit(X_train, y_train)# 绘制散点图(每个类别用不同颜色表示)
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train) # just draw the length and width of sepal ,
# and the c paremeter get the array will draw different  color in different digital
plt.xlabel('Petal Length')
plt.ylabel('Petal Width')# 添加决策边界到图中
x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1xx, yy = np.meshgrid(np.arange(x_min, x_max), np.arange(y_min,y_max)) # depend on the two x and y lenth decide the array shape return the x and y axis np-array with interval 1 
# both have the same shape
# print(np.arange(x_min, x_max))
# print(np.arange(y_min,y_max))
# print(xx)
# print(xx.ravel())
# print(yy)
# print(yy.ravel())
Z = perceptron.predict(np.c_[xx.ravel(), yy.ravel()]) # draw the decision boundary (predict the per coordinate pair )
# print(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape) # replace to the every grid
print(Z)
plt.contourf(xx ,yy ,Z,alpha=0.3)
plt.show()
accuary = sum(perceptron.predict(X_test) == y_test)/len(y_test) 
print(accuary)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vtt9903J-1692410092565)(data visualization.assets/image-20230819093519419.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NP4qVAMU-1692410092566)(data visualization.assets/image-20230819093953006.png)]

对应的Prediction grid (可以看到反过来就是绘制等高线对应的图片):

[[0 1 1 1 1 1 1 1][0 0 1 1 1 1 1 1][0 0 0 1 1 1 1 1][2 2 2 2 2 2 2 1][2 2 2 2 2 2 2 2]]

详解使用函数:

np.meshgrid()

np.meshgrid()函数用于生成一个二维网格,它以两个一维数组作为参数,分别表示 x 轴和 y 轴上的坐标点。该函数返回两个二维数组,这些数组中的每个元素都代表了在坐标平面上某一点的 x 和 y 坐标。

让我们来详细解释一下np.meshgrid()函数的具体用法:

xx, yy = np.meshgrid(np.arange(x_min, x_max), np.arange(y_min,y_max))
  • np.arange(x_min, x_max):这是一个 NumPy 函数,用于创建一个从 x_minx_max - 1 的连续整数序列。它将作为参数传递给 np.meshgrid() 函数,并指定了在 x 轴方向上生成网格点所需的范围。

  • np.arange(y_min,y_max):类似地同上

  • xx, yy = np.meshgrid(...):通过调用np.meshgrid(np.arange(x_min, x_max), np.arange(y_min,y_max))可以得到 xx 和 yy 这两个变量。其中 xx 是一个与 y 方向长度相同、横轴值变化而纵轴不变(即 y 方向不变)的二维数组;yy 是一个与 x 方向长度相同、纵轴值变化而横轴不变(即 x 方向不变)的二维数组。

这个函数对于在整个坐标空间上进行预测和可视化非常有用,因为它生成了一个包含所有可能组合的坐标点网格。

np.ravel() & np.c_

np.ravel()函数用于将多维数组展平为一维数组。它会按照 C 风格(行优先)的顺序来展开数组。

np.c_()用于按列连接两个或多个数组。它可以将一维数组沿着列方向进行拼接生成一个新的二维数组

plt.contourf()

plt.contourf()用于绘制等高线填充图。它可以根据数据的值来为不同区域着色,并在图表上显示出这些颜色区域之间的边界。

让我们详细解释一下plt.contourf()函数的具体用法:

plt.contourf(X, Y, Z)
  • X:表示 x 坐标点的二维数组或网格矩阵。

  • Y:表示 y 坐标点的二维数组或网格矩阵。

  • Z:表示对应于 (X, Y) 网格点位置处某种属性(例如,高度、温度等)的数值。

通过传递以上参数给plt.contourf()函数,我们可以生成一个由等高线填充区域组成的图表。其中每个填充区域都代表了相应坐标点处属性数值所在范围内部分。

此外,您还可以使用其他参数来自定义等高线填充图:

  • levels: 通过设置 levels 参数来指定要显示哪些特定数值范围内部分,默认情况下会自动选择合适数量和范围。

  • colors: 可以使用 colors 参数来指定所使用颜色映射(colormap),也可以直接传递一个颜色列表作为参数进行手动设置。

通过使用plt.contourf()函数,您可以以视觉方式展示二维数据的分布情况,并更好地理解和呈现数据。

总结

总体而言,整个可视化原理也比较清晰明了。大概流程如下:

  1. 根据对应的数据数组特征的Min和Max确定对应的数据范围(Arrange)
  2. 根据数据范围通过meshgrip生成对应表格二维数组(返回每一个点的x和y的值(shape (len(x),len(y))
  3. 对数据进行铺平操作(np.ravel())和拼接成数组(np.c_)对作为特征数据进行预测网格的每一个点。
  4. 通过plt.contourf对网格点的每一个预测结果作为其属性画不同颜色等高线实现决策边界的绘制。🎉

在这里插入图片描述

						  🤞到这里,如果还有什么疑问🤞🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳

相关文章:

【深度学习 | 数据可视化】 视觉展示分类边界: Perceptron模型可视化iris数据集的决策边界

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...

【计算机视觉】相机基本知识(还在更新)

1.面阵工业相机与线阵工业相机 1.1 基本概念区别 面阵相机则主要采用的连续的、面状扫描光线来实现产品的检测; 线阵相机即利用单束扫描光来进行物体扫描的工作的。 1.2 优缺点 (1)面阵CCD工业相机: 优点:应用面…...

C++ (友元)(类嵌套时,成员函数以及类声明定义的顺序)小demo

#include<iostream> using namespace std; class Building; //1.因为Goodgay类需要声明Building类变量&#xff0c; //所以Building类必须Goodgay类之前声明&#xff08;前向声明&#xff09;&#xff1b; class GoodGay { public:GoodGay();void visit(); private:Build…...

前端实习第五周周记

前言 每一天做了什么还是要记录一下&#xff0c;不然过两天后就会发现&#xff0c;慢慢遗忘自己的收获与做过的东西。 这周做的是医学检验系统的样本库部分。由于是公司的代码所以不能交代具体&#xff0c;那么久聊一下每天具体做了些什么以及我的一些收获。 周一 周一上午…...

【图论】Floyd算法

一.简介 Floyd算法&#xff0c;也称为Floyd-Warshall算法&#xff0c;是一种用于解决所有节点对最短路径问题的动态规划算法。它可以在有向图或带权图中找到任意两个节点之间的最短路径。 Floyd算法的基本思想是通过中间节点逐步优化路径长度。它使用一个二维数组来存储任意两…...

ceph数据分布

ceph的存储是无主结构&#xff0c;数据分布依赖client来计算&#xff0c;有两个条主要路径。 1、数据到PG 2、PG 到OSD 有两个假设&#xff1a; 第一&#xff0c;pg的数量稳定&#xff0c;可以认为保持不变&#xff1b; 第二&#xff0c; OSD的数量可以增减&#xff0c;OSD的…...

mysql的两张表left join 进行关联后,索引进行优化案例

一 mysql的案例 1.1 不加索引情况 1.表1没加索引 2.表2没加索引 3.查看索引 1.2 添加索引 1.表1添加索引 2.表2添加索引 3.查看...

2018年3月全国计算机等级考试真题(语言二级C)

2018年3月全国计算机等级考试真题&#xff08;语言二级C&#xff09; 第1题 设有定义&#xff1a;char s[81]&#xff1b;int i0&#xff1b;以下不能将一行带有空格的字符串正确读入的语句或语句组是 A. while((s[i]getchar())!\n);s[i]\0; B. scanf("%s",s); C.…...

java.util.Timer简介以及简单使用示例

一、简介 定时器&#xff08;Timer&#xff09;是一个工具类&#xff0c;用于安排任务&#xff08;java.util.TimerTask&#xff09;在指定时间后执行或以指定的时间间隔重复执行。它可以用于执行定时任务、定时调度和时间延迟等操作。 定时器&#xff08;Timer&#xff09;可以…...

C语言笔试训练【第12天】

文章目录 1、请阅读以下程序&#xff0c;其运行结果是&#xff08; &#xff09;2、假设编译器规定 int 和 short 类型长度分别为32位和16位&#xff0c;若有下列C语言语句&#xff0c;则 y 的机器数为&#xff08; &#xff09;3、下列程序的输出结果是什么&#xff08; &…...

外网连接局域网的几种方式?快解析内网穿透安全便利吗?

外网连接局域网是一项网络连接中的关键技术&#xff0c;它能够让远程用户通过互联网访问内部局域网中的资源和服务。外网连接局域网为企业提供了更大的灵活性和便捷性&#xff0c;但也需要严格的安全措施来防止未经授权的访问。 外网连接局域网的几种方式 在将外网连接到局域…...

基于互斥锁的生产者消费者模型

文章目录 生产者消费者 定义代码实现 / 思路完整代码执行逻辑 / 思路 局部具体分析model.ccfunc&#xff08;消费者线程&#xff09; 执行结果 生产者消费者 定义 生产者消费者模型 是一种常用的 并发编程模型 &#xff0c;用于解决多线程或多进程环境下的协作问题。该模型包含…...

USB隔离器电路分析,SA8338矽塔sytatek电机驱动,源特科技VPS8701,开关电源,电源 大师

一、 USB隔离器电路分析 进行usb隔离可以使用USB隔离模块 ADUM3160 ADUM4160 注意&#xff1a;B0505S 最大带载0.16A&#xff0c;副边需要带载能力需要改变方案 比如移动硬盘至少需要0.5A 用充电宝、18650、设计5V1A输出电源 二、 1A隔离电压方案...

TPC-DS 测试是否支持 Glue Data Catalog?

在上一篇文章《在Hive/Spark上执行TPC-DS基准测试 (PARQUET格式)》中,我们详细介绍了具体的操作方法,当时的集群使用的是Hive Metastore,所有操作均可成功执行。当集群启用 Glue Data Catalog 时,在执行add_constraints.sql时会报错: Optimizing table date_dim (1/24).…...

网络编程(8.14)TCP并发服务器模型

作业&#xff1a; 1. 多线程中的newfd&#xff0c;能否修改成全局&#xff0c;不行&#xff0c;为什么&#xff1f; 2. 多线程中分支线程的newfd能否不另存&#xff0c;直接用指针间接访问主线程中的newfd,不行&#xff0c;为什么&#xff1f; 多线程并发服务器模型原代码&…...

认识负载均衡||WEBSHELL

目录 一、负载均衡 1.nginx负载均衡算法 2.nginx反向代理-负载均衡 二、webshell 1.构造不含数字和字母的webshell 2.如何绕过 一、负载均衡 1.nginx负载均衡算法 &#xff08;1&#xff09;轮询&#xff08;默认&#xff09;每个请求按时间顺序逐一分配到不同的后端服务&…...

Chapter 15: Object-Oriented Programming | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Object-oriented programmingManaging larger programsGetting startedUsing objectsStarting with programsSubdividing a problemOur first Python objectClasses as typesObject lifecycleMultiple instancesInheritanceSummaryGlossa…...

模板编程-成员特化

成员特化:类模板特化除了可以对整个类进行特化外,可以只针对某部分成员函数进行特化 全类特化和成员特化都属于全局特化 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <cstring>template<typename T> class CMath { public:CMath(const…...

信安通用基础知识

文章目录 密码学经典误区PGP优良保密协议信安经典其它安全手段XSS与CSRF cross site request forgeryCSRF的利用逻辑CSRF示例CSRF防范检查Referer字段添加校验token XSS cross site scripting common weakness enumeration常见密码api误用&#xff08;摘自毕设参考文献&#xf…...

网上购物系统的设计与实现/在线商城/基于spring boot的电商平台/基于Java的商品销售系统

摘 要 本毕业设计的内容是设计并且实现一个基于Springboot的网上购物系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;Tomcat网络信息服务作为应用服务器。网上购物系统的功能已基本实现&#xff0c;主要包括用户管理、数码分类管理、数码产品管理、服…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...