大数据可视化实验(八):大数据可视化综合实训

news2024/7/7 17:35:04

目录

一、实验目的... 1

二、实验环境... 1

三、实验内容... 1

1)Python纵向柱状图实训... 1

2)Python水平柱状图实训... 3

3)Python多数据并列柱状图实训.. 3

4)Python折线图实训... 4

5)Python直方图实训... 5

6)机器学习中的可视化应用... 6

四、思考问题... 8

五、总结与心得体会... 8

一、实验目的

掌握python工具,能够进行数据可视化;

掌握商业案例中的数据分析与数据可视化

二、实验环境

硬件:微型图像处理系统,

包括:主机, PC机;

操作系统:Windows 11        

应用软件:Jupyter Notebook, pycharm

数字图像处理软件:Excel/Python

三、实验内容

1)Python纵向柱状图实训

为了显示男女爱好的人数分布,本实验使用Python绘制纵向柱状图实现数据可视化。编写以下代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
plt.title("男女爱好人数分布图"); #图标题
num = np.array([14325, 9403, 13227, 18651])
ratio = np.array([0.75, 0.6, 0.22, 0.1])
men = num * ratio
women = num * (1-ratio)
x = ['足球','游泳','看剧','逛街']
width = 0.5
idx = np.arange(len(x))
plt.bar(idx, men, width, color='red', label='男性用户')
plt.bar(idx, women, width, bottom=men, color='gray', label='女性用户'#这一块可设置bottom,top,如果是水平放置的,可以设置right或者left
plt.xlabel('应用类别')
plt.ylabel('男女分布')
plt.xticks(idx+width/2, x, rotation=40)
#bar图上显示数字
for a,b in zip(idx,men):
    plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
for a,b,c in zip(idx,women,men):
    plt.text(a, b+c+0.5, '%.0f' % b, ha='center', va= 'bottom',fontsize=12)
plt.legend()
plt.show()

运行结果如下,可以看出男性的爱好多数为足球和游泳,女生的爱好多数为看剧和逛街:

2)Python水平柱状图实训

为了绘制水平柱状图,编写以下代码:

import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
# 假设我们有一组数据,表示不同的类别的值
categories = ['类别 A', '类别 B', '类别 C', '类别 D', '类别 E']
values = [20, 35, 30, 10, 25]

# 创建水平柱状图
plt.barh(categories, values, color='skyblue')

# 添加标签和标题
plt.xlabel('')
plt.ylabel('类别')
plt.title('水平柱状图实训')

# 可选:显示每个条形上方的值
for index, value in enumerate(values):
    plt.text(value, index, str(value))

# 显示图形
plt.show()

运行结果如下:

3)Python多数据并列柱状图实训

本实验展示了不同的专业在不同学校的招收人数分布图情况。编写以下代码:

import matplotlib.pyplot as plt
import numpy as np
plt.rcParams[ 'font.sans-serif'] =[ 'Microsoft YaHei'] #设置字体
plt.title("不同学校专业招生人数分布图"); #图标题
x=np.arange(5)
y=[400,170,160,90,50]
y1=[300,180,150,70,90]
bar_width=0.5
tick_label=["计算机","机械","电子","管理","物理"]
plt.bar(x,y,bar_width,color="r",align="center",label="学校A")
plt.bar(x+bar_width,y1,bar_width,color="y",align="center",label="学校B")
plt.xlabel("专业")
plt.ylabel("招生人数")
plt.xticks(x+bar_width/2,tick_label)
plt.legend()
plt.show()

根据结果显示,学校a和学校b均在计算机专业招收人数最多,具体的情况如下图:

4)Python折线图实训

本实验绘制2019年1月~2019年12月的房价变化折线图,编写以下代码:

import matplotlib.pyplot as plt
plt.rcParams[
'font.sans-serif'] =[ 'Microsoft YaHei'] #设置字体
x1 = ['2019-01', '2019-02', '2019-03', '2019-04', '2019-05', '2019-06', '2019-07', '2019-08',
     
'2019-09', '2019-10', '2019-11', '2019-12']
y1 = [
9700, 9800, 9900, 12000, 11000, 12400, 13000, 13400, 14000, 14100, 13900, 13700]
plt.figure(
figsize=(10, 8))
# 标题
plt.title("房价变化")
plt.plot(x1, y1,
label='房价变化', linewidth=2, color='r', marker='o',
        
markerfacecolor='blue', markersize=10)
# 横坐标描述
plt.xlabel('月份')
# 纵坐标描述
plt.ylabel('房价')
for a, b in zip(x1, y1):
    plt.text(a, b, b,
ha='center', va='bottom', fontsize=10)
plt.legend()
plt.show()

从结果可以看出,在2019年1月的时候房价最低,在2019年12月的时候,房价最高整体呈上升趋势,其中在2019年5月的时候下降。运行结果如下:

5)Python直方图实训

本实验绘制正态分布直方图,图的值表示当前值的概率密度,为了方便信息展示只展示-4到4的概率密度,编写以下代码:

import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=15)
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
#
生成一个随机样本数据集
#
假设我们有一个正态分布的随机样本
data = np.random.normal(loc=0, scale=1, size=1000)

# 创建直方图
# bins
参数定义了直方图的箱数
# density
参数设置为 True,可以展示概率密度而不是频率
plt.hist(data, bins=30, density=True, alpha=0.7, color='blue', edgecolor='black')

# 设置直方图的标题和坐标轴标签
plt.title('正态分布直方图')
plt.xlabel('')
plt.ylabel('概率密度')

# 可选:显示直方图的均值和标准差
mean = np.mean(data)
std_dev = np.std(data)
plt.text(60, 0.0075, f'Mean: {mean:.2f}')
plt.text(60, 0.005, f'Std Dev: {std_dev:.2f}')

# 显示图形
plt.show()

运行结果如下:

6)机器学习中的可视化应用

在机器学习中,可视化是一个重要的工具,它可以帮助我们理解数据的特征、模型的性能以及数据点之间的关系。以下是一个简单的Python代码示例,展示了如何在机器学习中应用可视化。编写以下代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
import seaborn as sns

# 创建一个简单的二分类数据集
X, y = make_classification(n_samples=100, n_features=2, n_redundant=0, n_informative=2,
                           random_state=1, n_clusters_per_class=1)

# 使用逻辑回归模型
model = LogisticRegression()
model.fit(X, y)

# 绘制决策边界
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, 0.01),
                     np.arange(y_min, y_max, 0.01))

Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.figure(figsize=(10, 6))
plt.contourf(xx, yy, Z, alpha=0.4)
plt.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Decision Boundary using Logistic Regression')
plt.show()

这段代码首先导入了所需的库,然后创建了一个简单的二分类数据集。接着,使用LogisticRegression模型进行拟合。

在绘制决策边界的部分,我们首先定义了x和y的最小值和最大值,然后创建了一个网格来覆盖整个数据点的范围。使用模型在这些网格点上的预测结果来填充这个区域,从而绘制出决策边界。

最后,使用plt.scatter绘制了原始数据点,并用不同的颜色表示不同的类别。plt.contourf用于绘制决策边界的填充图。运行结果如下:

四、思考问题

Python软件功能强大,除了上述要实现的功能,大家可以自己进行扩展。

五、总结与心得体会

在完成上述的可视化制作实验后,我有以下几点心得体会:

  1. 理解数据分布:通过制作直方图和折线图,我更好地理解了数据的分布情况和随时间的变化趋势。直方图特别适合展示连续数据的分布,而折线图则能够清晰地展示数据随时间的变化。
  2. 比较不同类别:纵向柱状图和水平柱状图都是比较不同类别之间数值大小的有效工具。我学会了如何根据需要选择使用纵向或水平柱状图,这取决于我希望强调的信息和图表的布局。
  3. 并列柱状图的挑战:在制作多数据并列柱状图时,我意识到需要仔细选择颜色和标签,以确保每个数据集都能被清晰地区分和理解。
  4. 技术实现:通过这些实验,我加深了对matplotlib和seaborn库的了解,学会了如何使用这些工具来创建各种图表。我也认识到了代码的可读性和模块化设计的重要性,这使得代码更易于维护和更新。
  5. 数据可视化的重要性:我了解到,良好的数据可视化可以帮助观众快速抓住数据的关键信息。图表的清晰度和准确性对于有效传达分析结果至关重要。
  6. 机器学习可视化的洞察:在机器学习项目中,可视化不仅用于展示数据,还可以用于展示模型的决策过程,如决策边界。这有助于理解模型是如何工作的,以及它在特定情况下可能的优缺点。
  7. 迭代与改进:在实验过程中,我学会了如何根据反馈不断迭代和改进我的图表。一个好的图表往往需要多次修改,包括调整颜色、字体大小、标签和布局。
  8. 工具的局限性:我也意识到了可视化工具的局限性。例如,某些类型的数据或分布可能不适合用柱状图或直方图来展示。因此,选择最合适的图表类型来传达特定的信息是一项重要的技能。
  9. 注释和解释:我学会了在图表中添加适当的注释和解释,这对于使图表自解释非常重要。这包括轴标签、图例、标题和任何必要的文本说明。
  10. 未来方向:最后,我意识到数据可视化是一个不断发展的领域,总有新的技术和方法出现。我计划继续学习,以便能够利用最新的工具和技术来提高我的可视化技能。
  11. 通过这些实验,我不仅提升了我的技术技能,而且对如何有效地传达数据信息有了更深刻的理解。这些经验对我的数据科学职业生涯将是宝贵的资产。

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

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

相关文章

vscode jupyter选择Python环境时找不到我安装的Python

在一些情况下,我们需要自己安装一个Python,在选择内核是可能找不到指定的Python版本, 再次打开内核选择页面就能看到Python环境了 注意先到指定环境下安装依赖包: ./python3 pip install ipykernel notebook jupyter

高考失利咨询复读,银河补习班客服开挂回复

补习班的客服在高考成绩出来后,需要用专业的知识和足够的耐心来回复各种咨询,聊天宝快捷回复软件,帮助客服开挂回复。 ​ 前言 高考成绩出来,几家欢喜几家愁,对于高考失利的学生和家长,找一个靠谱的复读补…

爬虫笔记18——selenium自动加载并存储vip(唯品会)网页数据

爬取唯品会的商品数据信息 整体的流程就是在唯品会首页搜索栏搜索对应的商品,然后跳转到对应商品页面进行数据的爬取、筛选和存储。 其实也有另外一个爬取方案,不用selenium也是可以爬取到相应的数据,通过分析,搜索结果的页面是…

【机器学习】语音转文字 - FunASR 的应用与实践(speech to text)

本文将介绍 FunASR,一个多功能语音识别模型,包括其特点、使用方法以及在实际应用中的表现。我们将通过一个简单的示例来展示如何使用 FunASR 将语音转换为文字,并探讨其在语音识别领域的应用前景。 一、引言 随着人工智能技术的不断发展&am…

如何理解MySql的MVCC机制

MVCC是什么 MySQL的MVCC机制,全称为多版本并发控制(Multi-VersionConcurrency Control),是一种提高数据库并发性能的技术。MVCC的主要目的是在保证数据一致性的同时,提高数据库的并发性能。 它通过为每个读操作创建数…

基于若依(ruoyi-vue)的周报管理系统

喂wangyinlon 填报人页面 审批人 审批不通过,填报人需要重新填写.

【漏洞复现】D-Link NAS 未授权RCE漏洞(CVE-2024-3273)

0x01 产品简介 D-Link 网络存储 (NAS)是中国友讯(D-link)公司的一款统一服务路由器。 0x02 漏洞概述 D-Link NAS nas_sharing.cgi接口存在命令执行漏洞,该漏洞存在于“/cgi-bin/nas_sharing.cgi”脚本中,影响其 HTTP GET 请求处…

Flink实现准确和高效流处理的关键问题

时间相关: Watermark 水位线 水位线是插入到数据流中的一个标记,可以认为是一个特殊的数据。水位线主要的内容是一个时间戳,用来表示当前事件时间的进展。水位线是基于数据的时间戳生成的。水位线的时间戳必须单调递增,以确保任务的事件时间时钟一直向前推进,进展。水位线…

使用Arduino和超声波传感器测量声速

使用Arduino和超声波传感器测量声速 Step 1: 硬件 Arduino Uno单片机超声波传感器(HC-SR04)标尺跳线(母/公)计算器 Step 2: Arduino Uno 微控制器 The Arduino Uno is a credit card size microcontroller board. Arduino Uno是…

信息学奥赛初赛天天练-42-CSP-J2020基础题-变量地址、编译器、逻辑运算、逻辑与运算、逻辑或运算、冒泡排序、递归应用

PDF文档公众号回复关键字:20240702 2020 CSP-J 选择题 单项选择题(共15题,每题2分,共计30分:每题有且仅有一个正确选项) 1.在内存储器中每个存储单元都被赋予一个唯一的序号,称为( &#xff0…

JavaScript中的Array(数组)对象

目录 一、Array数组对象 1、介绍 2、创建数组对象并赋值 3、访问数组元素 二、Array对象属性 1、constructor属性 2、length属性 3、prototype属性 三、Array对象的常用方法 1、isArray() 2、concat() 3、pop() 4、shift() 5、push() 6、unshift() 7、reverse(…

VQA视觉问答系统

这是一个典型的多模态问题,融合了CV与NLP的技术,计算机需要同时学会理解图像和文字。 Joint embedding 首先,图像和问题分别由CNN和RNN进行第一次编码得到各自的特征,随后共同输入到另一个编码器中得到joint embedding,最后通过解码器输出答案。 值得注意的是,有的工作…

我与C++的爱恋:list的使用

​ ​ 🔥个人主页:guoguoqiang. 🔥专栏:我与C的爱恋 一、list介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代 2.list的底层是双向链表结构,双向链表中…

python: create Envircomnet in Visual Studio Code 创建虚拟机

先配置python开发环境 1.在搜索栏输入“>" 或是用快捷组合键ctrlshiftP键 就会显示”>",再输入"python:" 选择已经安装好的python的版本,选定至当前项目中,都是按回车 就可以看到创建了一个虚拟机的默认的文件夹名".venv" 2 te…

KUKA仿真教学8:设备保养屏蔽

目录 一、屏蔽步骤 一、屏蔽步骤

ghost恢复?电脑文件恢复如何操作?电脑数据恢复工具!5款!

在数字化时代,电脑数据的价值日益凸显。然而,数据丢失、误删、系统崩溃等问题时有发生,给个人和企业带来巨大损失。本文将为您详细介绍Ghost恢复方法,同时推荐五款高效的电脑数据恢复工具,助您轻松应对数据丢失的困扰。…

Node.js学习(一)

Node.js安装与入门案例: 需求:点击按钮,请求本地目录指定文件的内容,并显示在页面上 刚入门肯定想着直接写相对路径请求指定路径数据就行了,可是会发现不行。 网页运行在浏览器端,通常后续要发布&#xf…

全面了解机器学习

目录 一、基本认识 1. 介绍 2. 机器学习位置 二、机器学习的类型 1. 监督学习 2. 无监督学习 3. 强化学习 三、机器学习术语 1. 训练样本 2. 训练 3. 特征 4. 目标 5. 损失函数 四、机器学习流程 五、机器学习算法 1. 分类算法 2. 聚类算法 3. 关联分析 4. …

高通骁龙(Qualcomm Snapdragon)CDSP HVX HTP 芯片简介与开发入门

1. Hexagon DSP/HVX/HTP 硬件演进 说到高通骁龙芯片大家应该不会陌生,其作为最为广泛的移动处理器之一,几乎每一个品牌的智能手机都会使用高通骁龙的处理器。 高通提供了一系列骁龙芯片解决方案。根据性能强弱分为了5个产品系列:从最高端的…

verilog实现PID控制

1 原理讲解 距离上一次说PID算法的事情过去蛮久了,今天又重新看了看PID的代码,其实还是存在一些不合理的地方。 整理归纳了一下原理,位置式和增量式的变化。 2 工程实现 timescale 1ns / 1psmodule pid_controller(input clk,input r…