机器学习中的数据可视化:常用库、单变量图与多变量图绘制方法

news2024/11/22 13:32:02

《博主简介》

小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。
更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~
👍感谢小伙伴们点赞、关注!

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】48.【基于深度学习的车辆检测追踪与流量计数系统】
49.【基于深度学习的行人检测追踪与双向流量计数系统】50.【基于深度学习的反光衣检测与预警系统】
51.【基于深度学习的危险区域人员闯入检测与报警系统】52.【基于深度学习的高密度人脸智能检测与统计系统】
53.【基于深度学习的CT扫描图像肾结石智能检测系统】54.【基于深度学习的水果智能检测系统】
55.【基于深度学习的水果质量好坏智能检测系统】56.【基于深度学习的蔬菜目标检测与识别系统】
57.【基于深度学习的非机动车驾驶员头盔检测系统】58.【太基于深度学习的阳能电池板检测与分析系统】
59.【基于深度学习的工业螺栓螺母检测】60.【基于深度学习的金属焊缝缺陷检测系统】
61.【基于深度学习的链条缺陷检测与识别系统】62.【基于深度学习的交通信号灯检测识别】
63.【基于深度学习的草莓成熟度检测与识别系统】64.【基于深度学习的水下海生物检测识别系统】
65.【基于深度学习的道路交通事故检测识别系统】66.【基于深度学习的安检X光危险品检测与识别系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

    • 什么是数据可视化?
    • 数据可视化在机器学习中的重要性
    • 用于数据可视化的流行Python库
      • 1. Matplotlib
      • 2. Seaborn
      • 3. Plotly
      • 4. Bokeh
    • 数据可视化的类型
    • 单变量图:独立理解属性
      • 直方图
      • 密度图
      • 箱线图
    • 多变量图:多个变量之间的相互作用
      • 相关矩阵图
      • 散点矩阵图

数据可视化是机器学习(ML)的一个重要方面,因为它有助于分析和传达数据中的模式、趋势和见解。数据可视化涉及创建数据的图形表示,这有助于识别原始数据中可能不明显的模式和关系。

什么是数据可视化?

数据可视化是数据和信息的图形表示。借助数据可视化,我们可以看到数据的外观以及数据属性之间的相关性。这是查看特征是否与输出对应的最快方法。

数据可视化在机器学习中的重要性

数据可视化在机器学习中起着重要的作用。我们可以在机器学习中以多种方式使用它。以下是在机器学习中使用数据可视化的一些方法:

  • 数据可视化是探索和理解数据的重要工具。可视化可以帮助识别模式、相关性和离群值,还可以帮助检测数据质量问题,如缺失值和不一致性。
  • 特征选择-数据可视化可以帮助为ML模型选择相关特征。通过可视化数据及其与目标变量的关系,您可以识别与目标变量强相关的特征,并排除预测能力很小的不相关特征。
  • 模型评估-数据可视化可用于评估ML模型的性能。可视化技术,如ROC曲线、精确度-召回率曲线和混淆矩阵],可以帮助理解模型的准确度、精确度、召回率和F1得分。
  • 数据可视化是向可能没有技术背景的利益相关者传达见解和结果的有效方式。散点图、折线图和条形图等可视化工具有助于以易于理解的格式传达复杂的信息。

用于数据可视化的流行Python库

以下是机器学习中用于数据可视化的最流行的Python库。这些库提供了广泛的可视化技术和自定义选项,以满足不同的需求和偏好。

1. Matplotlib

Matplotlib是用于数据可视化的最流行的Python包之一。它是一个跨平台的库,用于从数组中的数据绘制2D图。它提供了一个面向对象的API,有助于使用PyQt、WxPython或Tkinter等Python GUI工具包在应用程序中嵌入绘图。它也可以用于Python和IPython shell,Xboxyter笔记本和Web应用程序服务器。

2. Seaborn

Seaborn是一个开源的,BSD许可的Python库,提供高级API,用于使用Python编程语言可视化数据。

3. Plotly

Plotly是一家位于蒙特利尔的技术计算公司,参与开发数据分析和可视化工具,如Dash和Chart Studio。它还为Python、R、MATLAB、JavaScript和其他计算机编程语言开发了开源图形应用程序编程接口(API)库。

4. Bokeh

Bokeh是Python的数据可视化库。与Matplotlib和Seaborn不同,它们也是用于数据可视化的Python包,Bokeh使用HTML和JavaScript渲染其图。因此,它被证明是非常有用的开发基于Web的仪表板。

数据可视化的类型

机器学习数据的数据可视化可以分为以下两个不同的类别-

  • 单变量图
  • 多变量图

Data Visualization Techniques

让我们详细了解上述两种类型的数据可视化图。

单变量图:独立理解属性

最简单的可视化类型是单变量或“单变量”可视化。借助单变量可视化,我们可以独立地理解数据集的每个属性。以下是Python中实现单变量可视化的一些技术:

  • 直方图
  • 密度图
  • 盒须图

我们将在各自的章节中详细学习上述技术。让我们简单地看看这些技术。

直方图

直方图将数据分组在bin中,是了解数据集中每个属性分布的最快方法。以下是直方图的一些特征:

  • 它为我们提供了为可视化而创建的每个bin中的观测数量的计数。
  • 从箱子的形状,我们可以很容易地观察到分布,即,无论它是高斯的、偏斜的还是指数的。
  • 直方图还可以帮助我们看到可能的异常值。

例如

下面的代码是一个创建直方图的Python脚本示例。在这里,我们将在NumPy Array上使用hist()函数来生成直方图,并使用matplotlib来绘制它们。

import matplotlib.pyplot as plt
import numpy as np
# Generate some random data
data = np.random.randn(1000)
# Create the histogram
plt.hist(data, bins=30, color='skyblue', edgecolor='black')
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.title('Histogram Example')
plt.show()

输出

ML Histograms Plot

由于随机数生成,您可能会注意到在执行上述程序时输出之间的细微差异。

密度图

密度图是另一种快速简单的技术,用于获得每个属性分布。它也像直方图,但有一个平滑的曲线绘制通过每个箱的顶部。我们可以称之为抽象直方图。

例如

在下面的示例中,Python脚本将为虹膜数据集的属性分布生成密度图。

import seaborn as sns
import matplotlib.pyplot as plt
# Load a sample dataset
df = sns.load_dataset("iris")
# Create the density plot
sns.kdeplot(data=df, x="sepal_length", fill=True)
# Add labels and title
plt.xlabel("Sepal Length")
plt.ylabel("Density")
plt.title("Density Plot of Sepal Length")
# Show the plot
plt.show()

输出

Density Plot

从上面的输出中,可以很容易地理解密度图和直方图之间的差异。

箱线图

箱线图(Box and Whisker Plots),简称箱线图(boxplots),是查看每个属性分布的另一种有用技术。以下是这项技术的特点:

  • 它本质上是单变量的,并总结了每个属性的分布。
  • 它为中间值绘制了一条线,即中位数。
  • 它在25%和75%周围画了一个方框。
  • 它还绘制了胡须,这将使我们对数据的传播有一个概念。
  • 须线外的点表示离群值。离群值将是中间数据的散布大小的1.5倍。

例如

在下面的示例中,Python脚本将为Iris数据集的属性分布生成一个箱线图。

import matplotlib.pyplot as plt
# Sample data
data = [10, 15, 18, 20, 22, 25, 28, 30, 32, 35]
# Create a figure and axes
fig, ax = plt.subplots()
# Create the boxplot
ax.boxplot(data)
# Set the title
ax.set_title('Box and Whisker Plot')
# Show the plot
plt.show()

输出

Box Plot

多变量图:多个变量之间的相互作用

另一种类型的可视化是多变量或“多元”可视化。借助多变量可视化,我们可以理解数据集的多个属性之间的相互作用。以下是Python中实现多变量可视化的一些技术:

  • 相关矩阵图
  • 散点矩阵图

相关矩阵图

相关性是两个变量之间变化的指标。我们可以绘制[相关矩阵图],以显示哪个变量与另一个变量具有高或低的相关性。

例如

在下面的示例中,Python脚本将生成一个相关矩阵图。它可以在Pandas DataFrame上的corr()函数的帮助下生成,并在Matplotlib pyplot的帮助下绘制。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Sample data
data = {'A': [1, 2, 3, 4, 5],
        'B': [5, 4, 3, 2, 1],
        'C': [2, 3, 1, 4, 5]}
df = pd.DataFrame(data)
# Calculate the correlation matrix
c_matrix = df.corr()
# Create a heatmap
sns.heatmap(c_matrix, annot=True, cmap='coolwarm')
plt.title("Correlation Matrix")
plt.show()

输出

Correlation Matrix Plot

从上面的相关矩阵输出中,我们可以看到它是对称的,即左下角与右上角相同。

散点矩阵图

散点矩阵图显示了一个变量受另一个变量影响的程度或它们之间的关系,并在二维空间中以点的形式显示。散点图在概念上非常类似于线图,它们使用水平轴和垂直轴来绘制数据点。

例如

在下面的示例中,Python脚本将生成并绘制Iris数据集的散点矩阵。它可以在Pandas DataFrame上的scatter_matrix()函数的帮助下生成,并在pyplot的帮助下绘制。

import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
# Load the iris dataset
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
# Create the scatter matrix plot
pd.plotting.scatter_matrix(df, diagonal='hist', figsize=(8, 7))
plt.show()

输出

Scatter Matrix Plot


在这里插入图片描述

在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2231272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SELS-SSL/TLS

一、了解公钥加密(非对称加密) 非对称加密中,用于加密数据的密钥与用于解密数据的密钥不同。私钥仅所有者知晓,而公钥则可自由分发。发送方使用接收方的公钥对数据进行加密,数据仅能使用相应的私钥进行解密。 你可以将…

Kubernetes中的secrets存储

华子目录 2.secrets2.1secrets功能介绍2.2secrets的创建2.2.1从文件创建2.2.2编写yaml文件 2.3secret的使用案例2.3.1将secret挂载到volume中2.3.2设置子目录映射secret密钥2.3.3将secret设置为环境变量2.3.4存储docker register的认证信息spec.imagePullSecrets[] 2.secrets …

软件设计师笔记-数据结构

数据结构 数据元素的集合及元素间的相互关系和构造方法。 线性表的存储结构 顺序存储链式存储 单链表节点 typedef struct node { int data; struct node *link; }NODE, *LinkList; 双向链表 每个节点有两个指针,分别指出直接前驱和直接后继。 循环链表 尾…

「Mac畅玩鸿蒙与硬件22」鸿蒙UI组件篇12 - Canvas 组件的动态进阶应用

在鸿蒙应用中,Canvas 组件可以实现丰富的动态效果,适合用于动画和实时更新的场景。本篇将介绍如何在 Canvas 中实现动画循环、动态进度条、旋转和缩放动画,以及性能优化策略。 关键词 Canvas 组件动态绘制动画效果动态进度条旋转和缩放性能优化一、使用定时器实现动画循环 …

通俗易懂的理解递归 回溯 DFS

文章目录 递归概念递归例子1:递归打印链表递归例子2:求n数之和 回溯概念回溯例子1:组合问题 DFS概念DFS例子1:不同路径DFS例子2:岛屿数量总结 递归 概念 “方法自己调用自己,每一次调用都会更加接近递归的…

【AD】1-7 AD24软件扩展插件的设置与安装

1.如图所示打开扩展 2.点击齿轮后,确保离线安装位置关联了软件安装包的路径位置后,进行勾选选择后,点击应用即可安装。 注意:如果位置关联错误,则显示如图

Window on ARM解锁所有的TTS语音包供python调用

Window on ARM解锁所有的TTS语音包供python调用 可用的语音包查看查看TTS可用的语音包解锁语音包设置升级系统打开注册表导出注册表修改注册表导入新的注册表可用的语音包查看 微软的Windows 10操作系统为设备上安装的每种语言提供了一套语音。但只有部分已安装的语音能在整个…

pandas数据处理高级系列003---什么是交叉表(Cross Tabulation)以及pandas如何生成

做ab测试的时候遇到了一个新的知识点,交叉表以及如何用pandas生成交叉表 交叉表(Cross Tabulation),也称为列联表(Contingency Table),是一种用于统计分析的表格,用于显示两个或多个…

MySQL数据库之存储过程的创建与应用

存储过程 procedure 一.存储过程 作用:将经常使用的功能写成存储过程,方便后续重复使用。 二.创建存储过程 三.调用存储过程 call在计算机中是调用的意思 案例1:查看MySQL用户数 如上图所示,这是查看MySQL数据库中的user个数…

手搓简易shell

1.打印命令行 &#xff0c;接受命令行输入 命令行就是&#xff0c;“[用户名主机名 当前目录]$"获取这些信息都存储在Linux内核中的环境变量中&#xff0c;用getenv()函数取出 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 #include…

多个JDK版本之间的切换

首先电脑上可以同时安装多个版本的 JDK&#xff08;Java Development Kit),因为不同的应用程序可能需要不同 Java 版本的支持,安装多个 JDK 版本并不会导致冲突&#xff0c;只要设置好即可,在不同的情况下切换不同的jdk版本保证程序正常工作 很多程序jdk8 已经不支持,所以下载…

鸿蒙生态下开发挑战-鸿蒙低代码开发工具展望及优势

鸿蒙生态下开发挑战 在鸿蒙生态下开发时&#xff0c;开发者可能会遇到多方面的挑战&#xff0c;这些挑战主要涉及开发工具、技术难度、生态竞争以及市场定位等方面。以下是对这些挑战的详细分析&#xff1a; 一、开发工具不完善 尽管鸿蒙系统的开发工具DevEco Studio在逐步完…

celery在django项目中实现并发任务和定时任务

创建一个django项目 django-admin startproject celeryDemo进入项目目录 cd celeryDemo在你的 Django 项目中&#xff0c;创建一个 celery_.py 文件&#xff0c;通常放在项目的根目录&#xff08;与 settings.py 同级&#xff09;&#xff1a; from __future__ import absol…

ST算法解RMQ问题

题目 代码 #include <bits/stdc.h> using namespace std; const int N 2e510, M 20; int st[N][M]; int n, m; int main() {ios::sync_with_stdio(0);cin.tie(0);cin >> n;for(int i 1; i < n; i)cin >> st[i][0];for(int i 1; (1 << i) < …

国内版Sketchfab平台 - CG美术之家(3D编辑发布篇)

CG美术之家为您提供了一个简便的模型上传流程&#xff0c;让发布您的3D模型变得轻而易举。只需准备好通用的3D模型格式&#xff0c;如OBJ、FBX或STL&#xff0c;您就可以轻松上传并分享您的创作。我们的平台支持在线3D渲染&#xff0c;您只需花费不到一分钟的时间&#xff0c;就…

Rocky Linux 9安装后无法远程ssh密码登录解决

在Rocky Linux 9版本中&#xff0c;为了增加安全性&#xff0c;默认情况下禁用SSH root密码登录。这是系统默认设定的规则&#xff0c;我们同样也可以更改它。   允许Rocky Linux 9 root用户通过ssh登录方法&#xff1a; 1.编辑SSH配置文件 2.找到以下内容 PermitRootLogin …

C语言教程——操作符详解(1)

目录 前言 1.操作符的分类&#xff1a; 2.算数操作符 2.1除法 2.2取模 3.移位操作符 3.1二进制相关知识 3.2左移操作符 3.2.1正数 3.2.2负数 3.2.3结论 3.3右移操作符 4.位操作符 4.1 按位与 4.2按位或 4.3按位异或 ​编辑 5.赋值操作符 6.复合赋值符 7.单目操…

mfc140u.dll丢失怎么办? mfc140u.dll文件缺失的修复技巧

mfc140u.dll 是 Microsoft Foundation Classes (MFC) 库的一部分&#xff0c;它是 Visual Studio 2015 的组件之一&#xff0c;主要服务于使用 C 编写的 Windows 应用程序。这个动态链接库文件包含了 MFC 14.0 Unicode 版本的实现代码&#xff0c;为应用程序提供运行时支持。当…

Golang | Leetcode Golang题解之第520题检测大写字母

题目&#xff1a; 题解&#xff1a; func detectCapitalUse(word string) bool {// 若第 1 个字母为小写&#xff0c;则需额外判断第 2 个字母是否为小写if len(word) > 2 && unicode.IsLower(rune(word[0])) && unicode.IsUpper(rune(word[1])) {return f…