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

【机器学习算法】——数据可视化

1. 饼图:显示基本比例关系

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False# ——————————————————————————————————————————————————————————
#1.饼图:显示基本比例关系# 定义饼图的标签,对应不同的用户兴趣类别
labels = '财经15%', '社会30%', '体育15%', '科技10%', '其它30%'# 定义饼图的大小,对应每个类别的用户兴趣比例
datas = [15, 30, 15, 10, 30]# 创建一个figure对象和axes对象,用于绘制饼图
fig1, ax1 = plt.subplots()
pie = ax1.pie(datas, labels=labels, autopct='%1.1f%%')# 设置整个图表的标题
plt.title('新闻网站用户兴趣分析')# 显示图表
plt.show()

在这里插入图片描述

2. 堆叠柱形图

它将两个或多个变量的值在同一个轴上以堆叠的形式展示出来,使得观察者可以清晰地看到每个变量的总和以及它们各自的部分。

#练习2:某城市一周内每日天气状况
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 一周内每天的日期
days = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']# 一周内每天的最高气温、最低气温和降雨量
high_temps = [28, 30, 32, 31, 29, 27, 33]
low_temps = [18, 20, 22, 19, 17, 16, 21]
rainfall = [2, 0, 5, 3, 0, 0, 7]# 使用arange函数生成一个数组,表示条形图的x坐标位置
x = np.arange(7)
# 设置柱状图的宽度
bar_width = 0.25# 误差条
high= (2, 3, 4, 1, 2,3,2)
low = (3, 5, 2, 3, 3,1,2)
rain= (0.3, 0.5, 2, 1, 3,1,0.2)
# 绘制柱状图
plt.bar(x, high_temps,color='red', width=bar_width,yerr=high, label='High Temp')
plt.bar(x, low_temps, bottom=high_temps,color='blue', width=bar_width, yerr=low, label='Low Temp')
plt.bar(x, rainfall, bottom=(np.array(low_temps)+np.array(high_temps)),color='green', width=bar_width, yerr=rain, label='Rainfall')# 添加图例
plt.legend()# 添加标题和标签
plt.xlabel('星期')
plt.ylabel('气温 (℃) / 降雨量 (mm)')
plt.title('一周天气变化')# 设置x轴的刻度标签
plt.xticks(x,('周一', '周二', '周三', '周四', '周五', '周六', '周日'))
# # 添加图例
# plt.legend((p1[0], p2[0], p3[0]), ('最高温度', '最低温度', '降雨量'))# 显示图形
plt.show()

在这里插入图片描述

3. 板块层级图

  • 通常是一种用于展示不同板块之间层级关系或分类的图表,可以是组织结构图、分类图或其他类型的层级表示方法。
  • 安装squarify:pip install squarify
# 练习3:公司部门年度收入分布
import matplotlib.pyplot as plt
import squarify
# 定义部门和对应的收入
departments = ['技术部', '市场部', '人力资源部', '财务部']
revenues = [10, 15, 50, 30]  # 转换为相同的数量级以方便计算
# 定义每个部门的颜色
colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
# 绘制板块层级图
squarify.plot(sizes=revenues, label=departments, color=colors, alpha=0.7)
plt.axis('off')
plt.title('公司部门年度收入分布')
plt.show()

在这里插入图片描述

4. 堆叠面积图

安装seaborn: pip install seaborn

  • 用于显示每个数值所占大小随时间或类别变化的趋势线,展示的是部分与整体的关系。
  • 堆叠面积图上的最大的面积代表了所有的数据量的总和,是一个整体。
  • 各个叠起来的面积表示各个数据量的大小,这些堆叠起来的面积图在表现大数据的总量分量的变化情况时格外有用,所以堆叠面积图不适用于表示带有负值的数据集。非常适用于对比多变量随时间变化的情况。
import numpy as np
# 导入seaborn库,用于高级的统计图表绘制
import seaborn as snsx = range(21, 26)# 定义x轴的数据,这里表示年龄范围
# 定义y轴的数据,这里是一个二维数组,表示不同组在不同年龄的分值
y = [[10, 4, 6, 5, 3],[12, 2, 7, 10, 1],[8, 18, 5, 7, 6],[1, 8, 3, 5, 9]]
labels = ['组A', '组B', '组C', '组D']# 定义每个组的标签
pal = sns.color_palette("Set1")# 使用seaborn的color_palette函数生成一组颜色
# 使用plt.stackplot函数绘制堆叠面积图
plt.stackplot(x, y, labels=labels, colors=pal, alpha=0.7)# alpha参数指定透明度,colors=pal, alpha=0.7:可选项
plt.ylabel('分值')
plt.xlabel('年龄')
plt.title('不同组用户区间分值比较')
plt.legend(loc='upper right')
plt.show()

在这里插入图片描述

5. 散点图和气泡图

散点图(Scatter Plot)是一种用于显示两个变量之间关系的图表,通过在坐标平面上描绘点来展示数据的分布和趋势。

import numpy as np
import matplotlib.pyplot as plt
import randomplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
# 设置随机种子,确保结果的可重现性
np.random.seed(42)# ------------------------------------------------------------------
#1.生成散点图
data = {'城市': ['A', 'B', 'C', 'D', 'E'],'温度': [22, 24, 26, 23, 25],'相对湿度': [60, 65, 70, 55, 68],}x = data['温度']
y = data['相对湿度']
print(x)
print(y)
# #气泡图需要修改颜色和大小
# #------------------------------
# color = np.random.rand(5)
color1 = ["red",'blue','yellow','black','green']
# size = np.random.rand(5)*1000#【0,1)-->[0,1000)
size1 = [100,20,30,600,400]
# #---------------------------------# 使用scatter函数绘制散点图,s=100表示点的大小,c='black'表示点的颜色为黑色,alpha=0.8表示点的透明度
# plt.scatter(x, y)
plt.scatter(x, y,s=size1,c=color1, alpha=0.6)plt.title("随机生成的数字散点")
plt.ylabel('Y坐标值')
plt.xlabel('X坐标值')
# 显示图表
plt.show()

散点图:
在这里插入图片描述
气泡图:就是改变散点图的大小和颜色(随机生成)
在这里插入图片描述

6.直方图

一种用于展示数据分布特征的统计图表,它通过将数据分组并计算每组中的频数或频率来表示数据的分布情况。

##3.直方图:
"""用于展示数据分布特征的统计图表,
它通过将数据分组并计算每组中的频数或频率来表示数据的分布情况。"""
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
np.random.seed(19680801)mu = 100  # 均值
sigma = 15  # 标准差
x = mu + sigma * np.random.randn(500)# 根据正态分布生成随机样本数据num_bins = 10# 设置直方图的箱数fig, ax = plt.subplots()# fig是整个图形的容器,ax是图形的轴
ax.hist(x, num_bins, density=True, alpha=0.6,edgecolor='black')#density=True表示y轴显示概率密度而非计数
ax.set_xlabel('智商IQ')
ax.set_ylabel('概率密度')
ax.set_title(r'智商分布情况直方图')# plt.hist(x,num_bins,density=False)
# plt.xlabel('学生人数')
# plt.ylabel('考试成绩')
# plt.title('学生考试成绩分布')plt.show()

7. 热力图(heatmap)

是一种数据可视化技术,它通过颜色的变化来展示数据矩阵中数值的大小。

##4.heatmap热力图:通过颜色的变化来展示数据矩阵中数值的大小。
import seaborn as sns
import pandas as pd
import numpy as np
import seaborn as sns
from matplotlib import pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=Falsestudents = ['A', 'B', 'C', 'D', 'E']
subjects = ['数学', '物理', '化学', '生物', '英语']# 生成随机成绩数据
#np.random.seed(0)  # 为了结果的可重复性
data = {   '数学': [85, 75, 95, 60, 80],'物理': [90, 80, 97, 65, 82],'化学': [92, 85, 90, 70, 88],'生物': [88, 70, 85, 80, 90],'英语': [78, 90, 80, 75, 85]}print(data)# 创建DataFrame
df = pd.DataFrame(data, index=students,columns=subjects)
print(df)# 使用Seaborn绘制热力图
plt.figure(figsize=(10, 8))
sns.heatmap(df, xticklabels=subjects, yticklabels=students)
# 设置图表标题
plt.title('各小组工作日表现比较热力图')
# 显示图表
plt.show()

在这里插入图片描述

8. 箱型图

是一种非常有用的数据可视化工具,它不仅可以展示数据的中位数、四分位数,还可以直观地表示异常值,帮助用户快速了解数据的集中趋势、分散程度和异常情况。

#5.box:小组成员的得分情况
"""箱型图:展示数据的中位数、四分位数,还可以直观地表示异常值,
帮助用户快速了解数据的集中趋势、分散程度和异常情况。
"""
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
import randomplt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号# 设置随机种子以确保结果的可重现性
np.random.seed(42)# 生成组号列表
day_list = ['组1', '组2', '组3', '组4', '组5', '组6', '组7']
day = [random.choice(day_list) for _ in range(1000)]#从day_list随机选取1000个数据存入day
print(day)
# 重新设置随机种子,生成数据(800个正常数据,200个离群数据)
np.random.seed(666)
spread = np.random.rand(800) * 100  # 生成800个0~100之间的随机数,np.random.rand(800) :800个[0,1)的数据
flier_high = np.random.rand(100) * 100 + 100  # 生成100个100~200之间的随机数
flier_low = np.random.rand(100) *100 -100  # 生成100个-100~0之间的随机数
# #
# # # 将数据合并为一个数组
data = np.concatenate((spread, flier_high, flier_low), 0)
# data1={'组号': day,
#        '得分': data}
# # # 创建DataFrame
# df = pd.DataFrame(data1)
df = pd.DataFrame({'组号': day,'得分': data})
print(df)
# # 使用Seaborn绘制箱型图
sns.boxplot(x='组号', y='得分', data=df)
#
# # 设置x轴的刻度标签
# plt.xticks(range(len(day_list)), day_list)
plt.xticks(range(7), day_list)
#
# # 显示图表
plt.show()

在这里插入图片描述

相关文章:

【机器学习算法】——数据可视化

1. 饼图:显示基本比例关系 import matplotlib.pyplot as pltplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False# ——————————————————————————————————————————————————————…...

如何在 Android 项目中实现跨库传值

背景介绍 在一个复杂的 Android 项目中,我们通常会有多个库(lib),而主应用程序(app)依赖所有这些库。目前遇到的问题是,在这些库中,libAd 需要获取 libVip 的 VIP 等级状态&#xf…...

JavaCV之FFmpegFrameFilter视频转灰度

1、代码 package com.example.demo.ffpemg;import lombok.SneakyThrows; import org.bytedeco.javacv.*;public class FFmpegFrameFilterVideoExample {SneakyThrowspublic static void main(String[] args) {// 输入视频文件路径String inputVideoPath "f:/2222.mp4&qu…...

Redis:基于PubSub(发布/订阅)、Stream流实现消息队列

Redis - PubSub、Stream流 文章目录 Redis - PubSub、Stream流1.基于List的消息队列2.基于PubSub的消息队列3.基于Stream的消息队列1.Redis Streams简介2.Redis Streams基本命令1.XADD 添加消息到末尾2.XLEN 获取消息长度3.XREAD 读取消息 (单消费模式)4…...

C#飞行棋(新手简洁版)

我们要在主函数的顶部写一些全局静态字段 确保能在后续的静态方法中能够获取到这些值和修改 static int[] Maps new int[100];static string[] PlayerName new string[2];static int[] PlayerScore new int[2];static bool[] Flags new bool[2] {true,true }; static int[]…...

【OpenCV】图像转换

理论 傅立叶变换用于分析各种滤波器的频率特性。对于图像,使用 2D离散傅里叶变换(DFT) 查找频域。快速算法称为 快速傅立叶变换(FFT) 用于计算DFT。 Numpy中的傅立叶变换 首先,我们将看到如何使用Numpy查…...

力扣 重排链表-143

重排链表-143 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), next(next)…...

【Kubernetes理论篇】容器集群管理系统Kubernetes(K8S)

Kubernetes集群部署基本管理实战 这么好的机会,还在等什么! 01、Kubernetes 概述 K8S是什么 K8S 的全称为 Kubernetes (K12345678S),PS:“嘛,写全称也太累了吧,写”。不如整个缩写 K8s 作为缩写的结果…...

Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令

Kubernetes(简称 K8s)作为一种开源的容器编排工具,已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中,熟悉常用操作对于高效地管理集群资源至关重要。本文将详…...

爬虫基础之Web网页基础

网页的组成 网页可以分为三大部分–HTML、CSS 和 JavaScript。如果把网页比作一个人,那么 HTML 相当于骨架、JavaScript 相当于肌肉、CSS 相当于皮肤,这三者结合起来才能形成一个完善的网页。下面我们分别介绍一下这三部分的功能。 HTML HTML(Hypertext…...

k8s, deployment

控制循环(control loop) for {实际状态 : 获取集群中对象X的实际状态(Actual State)期望状态 : 获取集群中对象X的期望状态(Desired State)if 实际状态 期望状态{什么都不做} else {执行编排动作&#xf…...

使用ensp搭建OSPF+BGP和静态路由,底层PC使用dhcp,实现PC互通

1.4种方式,实现PC2可以互通底层的所有设备 OSPF:OSPF是一种用于互联网协议网络的链路状态路由协议 BGP:是一种用于互联网上进行路由和可达性信息传递的外部网关协议(EGP) 静态路由: 静态路由是一种路由方…...

TÜLU 3: Pushing Frontiers in Open Language Model Post-Training

基本信息 📝 原文链接: https://arxiv.org/abs/2411.15124👥 作者: Nathan Lambert, Jacob Morrison, Valentina Pyatkin, Shengyi Huang, Hamish Ivison, Faeze Brahman, Lester James V. Miranda, Alisa Liu, Nouha Dziri, Shane Lyu, Yuling Gu, Sau…...

深入解读 MySQL EXPLAIN 与索引优化实践

MySQL 是当今最流行的关系型数据库之一,为了提升查询性能,合理使用 EXPLAIN 工具和优化索引显得尤为重要。本文将结合实际示例,探讨如何利用 EXPLAIN 分析查询执行计划,并分享索引优化的最佳实践。 一、EXPLAIN 工具简介 EXPLAIN …...

Flume——进阶(agent特性+三种结构:串联,多路复用,聚合)

目录 agent特性ChannelSelector描述: SinkProcessor描述: 串联架构结构图解定义与描述配置示例Flume1(监测端node1)Flume3(接收端node3)启动方式 复制和多路复用结构图解定义描述配置示例node1node2node3启…...

ragflow连ollama时出现的Bug

ragflow和ollama连接后,已经添加了两个模型但是ragflow仍然一直warn:Please add both embedding model and LLM in Settings > Model providers firstly.这里可能是我一开始拉取的镜像容器太小,容不下当前添加的模型,导…...

基于centos7.7编译Redis6.0

背景: OS:CentOs 7.7 Redis: 6.0.6 编译构建报错如下: In file included from server.c:30:0: server.h:1044:5: error: expected specifier-qualifier-list before ‘_Atomic’_Atomic unsigned int lruclock; /* Clock for LRU eviction …...

uni-app项目无法在Android Studio模拟器上运行

目录 1 问题描述2 尝试解决3 引发原因4 解决方法4.1 换用 MuMu 模拟器 5 结语 1 问题描述 在使用 uni-app 开发 Pad 端 App 时,初始化项目后打算先运行一下确保初始化正常。打开 Android Studio 模拟器后,然后在 HbuilderX 中选择使用 App 标准基座 运…...

第一部分:Linux系统(基础及命令)

Linux操作系统的实操性非常强,纯操作,不适用于日常的办公使用 1.初始Linux 1.1 操作系统概述 1.1.1 了解OS的作用 OS:是计算机软件的一种,主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬…...

No module named ‘_ssl‘ No module named ‘_ctypes‘

如果你使用的是基于 yum 的 Linux 发行版(例如 CentOS、RHEL、Fedora),安装 libc6-dev 的方式稍有不同。在这些系统中,通常对应的包是 glibc-devel。 No module named ‘_ctypes’ 使用 yum 安装 glibc-devel 更新系统的软件包列…...

侧信道安全(Side-Channel Security)

第一章 背景 1.1 什么是侧信道攻击? 核心定义:侧信道攻击(Side-Channel Attack, SCA)是一种不直接攻击密码算法的数学结构,而是通过观察系统在执行密码运算时泄露的物理信息(时间、功耗、电磁辐射、声音等…...

COMSOL中BIC多极解分(多极展开)复现:周期性结构通用解法探索

COMSOL中BIC的多极解分(多极展开)复现: 周期性结构通用,公式内嵌的comsol中,直接不需要matlab即可得到对应极子和三个方向的散射截面。 下图是以四聚体周期性结构为例,仿真复现结果和文献相吻合。 内含透射…...

光污染防御:用频闪灯破坏摄像头追踪

在数字安全日益严峻的今天,软件测试从业者作为质量保障的守门人,不仅需关注代码漏洞,还必须深入理解物理层面的安全威胁。摄像头追踪已成为隐私侵犯的高发领域,而光污染防御技术——尤其是利用频闪灯破坏摄像头成像——正从被动检…...

3步实现游戏ROM高效管理:RomM自托管解决方案完整指南

3步实现游戏ROM高效管理:RomM自托管解决方案完整指南 【免费下载链接】romm A beautiful, powerful, self-hosted rom manager 项目地址: https://gitcode.com/GitHub_Trending/rom/romm 游戏ROM管理是每位怀旧游戏爱好者的必修课,但面对成千上万…...

3个步骤让Sketch设计效率提升300%:Automate Sketch插件完全指南

3个步骤让Sketch设计效率提升300%:Automate Sketch插件完全指南 【免费下载链接】Automate-Sketch Make your workflow more efficient. 项目地址: https://gitcode.com/gh_mirrors/au/Automate-Sketch 在当今快节奏的设计工作中,效率就是竞争力。…...

滤波实战:从原理到代码的平滑之旅

1. 滤波技术的前世今生 第一次接触滤波概念是在研究生时期做无人机姿态解算项目时。当时从陀螺仪和加速度计采集的原始数据跳得跟心电图似的,导师只说了一句"加个滤波器",却让我在图书馆泡了整整两周。现在回想起来,滤波本质上就是…...

使用GitHub管理口罩检测开源项目

使用GitHub管理口罩检测开源项目 1. 引言 当你开始一个口罩检测开源项目时,如何高效地管理代码、协作开发和自动化流程就成了关键问题。GitHub作为全球最大的代码托管平台,提供了完整的工具链来支持开源项目的全生命周期管理。 我曾经参与过多个计算机…...

PDF补丁丁实战指南:从文档难题到高效解决方案的全流程掌握

PDF补丁丁实战指南:从文档难题到高效解决方案的全流程掌握 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项目地址: https:…...

别再混淆了!用Arduino实操演示ROM、RAM和FLASH的区别(附内存监控技巧)

别再混淆了!用Arduino实操演示ROM、RAM和FLASH的区别(附内存监控技巧) 在嵌入式开发领域,存储器类型的选择直接影响着程序性能和系统稳定性。许多初学者在面对ROM、RAM和FLASH时常常感到困惑——它们看起来都是"存储数据&quo…...

西门子io-link

IO-Link 概述 https://www.ad.siemens.com.cn/download/materialaggregation_1459.html#-1459 IO-Link 概述 定义: IO-Link 是一种创新型点到点通信接口,适用于符合 IEC 61131-9 标准的传感器/执行器应用领域。 IO-Link 包含以下系统组件&#xff1a…...