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

目录

一、实验目的... 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.mfbz.cn/a/766064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis---保证主从节点一致性问题 +与数据库数据保持一致性问题

保证主从节点一致性问题 Redis的同步方式默认是异步的,这种异步的同步方式导致了主从之间的数据存在一定的延迟,因此Redis默认是弱一致性的。 解决: 1.使用Redisson这样的工具,它提供了分布式锁的实现,确保在分布式环…

搭贝这个低代码开发平台靠谱吗?

在应用开发领域,低代码开发平台因其拖拽式的操作给用户带来了极大的便利和灵活性。根据相关调查数据,2022年国内低代码开发平台已超过100家。搭贝在众多低代码平台中也享有一定的知名度。那么,搭贝究竟怎么样,是否值得信赖&#x…

Dify入门指南

一.Dify介绍 生成式 AI 应用创新引擎,开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用,比 LangChain 更易用。一个平台,接入全球大型语言模型。不同…

IDEA Debug 断点

今天在工作发现有些新入职的小伙伴们,在调试程序时不是很会正确使用IDEA所提供Breakpoints(断点),这里就简单的介绍下比较常用的功能。 快捷键: 切换行断点:Ctrl F8 编辑断点属性:Ctrl Shift F8 断点的类型 行断点&am…

Google地图获取位置的前端代码与测试

test.html <script src"http://maps.google.com/maps/api/js?sensorfalse"></script> <script > if (navigator.geolocation) {  console.log(Geolocation is supported!);// var startPos;var geoSuccess function(position) {startPos p…

Codeforces Round 954 (Div. 3)(A~E)

目录 A. X Axis B. Matrix Stabilization C. Update Queries D. Mathematical Problem A. X Axis Problem - A - Codeforces 直接找到第二大的数&#xff0c;答案就是这个数与其他两个数的差值的和。 void solve() {vector<ll>a;for (int i 1; i < 3; i){int x;…

【C++知识点总结全系列 (02)】:C++中的语句、运算符和表达式详细总结

文章目录 1、语句(1)简单语句A.空语句B.复合语句 (2)条件语句(3)迭代语句A.常规for循环B.范围for循环C.while和do...while (4)跳转语句A.break语句B.continue语句C.goto语句 (5)异常处理语句A.标准异常B.throw抛出异常 (6)try语句 2、运算符(1)算术运算符(2)关系运算符(3)逻辑运…

Java Character类

Character是char的包装类 转义序列 Character类的方法

SpringSecurity中文文档(Servlet Persisting Authentication)

Persisting Authentication 用户第一次请求受保护的资源时&#xff0c;系统会提示他们输入凭据。提示凭据的最常见方法之一是将用户重定向到登录页。对于请求受保护资源的未经身份验证的用户&#xff0c;总结的 HTTP 交换可能如下所示: Example 1. Unauthenticated User Requ…

机器人控制系列教程之Simulink中模型搭建(1)

机器人模型获取 接上期&#xff1a;机器人控制系列教程之控制理论概述&#xff0c;文中详细讲解了如何通过Solidworks软件导出URDF格式的文件。文末提到了若需要将其导入到Simulink中可在命令行中输入smimport(urdf/S_Robot_urdf.urdf)&#xff0c;MATLAB将自动打开Simulink以…

【揭秘】国内十大顶尖AI大模型,引领智能科技新纪元

大模型大模型通常指的是参数量非常大、数据量也非常大的深度学习模型。这些模型由数百万到数十亿甚至更多的参数组成&#xff0c;需要海量的数据和强大的计算资源进行训练和推理学习的模型。大模型设计的目的在于提高模型的表示能力和性能、应对复杂数据集和任务、提升泛化能力…

65.WEB渗透测试-信息收集- WAF、框架组件识别(5)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;64.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;4&#xff09;-CSDN博客 waf绕…

c语言的烫烫烫烫烫??

当初学习C语言时&#xff0c;对于一些特殊的打印输出可能会感到困惑&#xff0c;比如会出现一堆乱码烫烫烫的情况。其实这是因为在C语言中&#xff0c;对于字符类型和数字类型之间的隐式转换可能会导致打印输出的结果不符合预期。这并不意味着程序员"烫"&#xff0c;…

详解归一化、标准化、正则化以及batch normalization

文章目录 what(是什么)where&#xff08;用在哪&#xff09;How&#xff08;如何用&&原理&#xff09;归一化实现方式原理示例说明 标准化实现方式原理示例说明 正则化实现方式原理作用 Batch Normalizationpytorch中的batch normalization原理BN的作用 归一化、标准化…

EXCEL怎么一模一样复制粘贴?

第一步 鼠标选中复制子表 右击建立副本 第二步 建立好副本表格 第三步 将选定工作表移动至新表格 第四步 成功完成移动

社区的用户分层运营如何做?

在社区运营中用户分层尤为关键&#xff0c;20%的高粘性用户带动80%的普通用户。我们主要围绕的是这20%的粘性用户&#xff0c;因为他们才是决定我们未来能不能最好做大最重要的人 分层运营策略 1️⃣对普通用户&#xff1a; &#x1f4da;满意&#xff1a;搜索是内容多而全&…

数据结构 -AVL树

文章目录 AVL树左旋和右旋插入的四种情况&#xff08;一&#xff09;新数字插到了左子树&#xff0c;导致左子树比右子树高2&#xff1b;左孩子的左子树比其右子树高1&#xff08;二&#xff09;新数字插到了左子树&#xff0c;导致左子树比右子树高2&#xff1b;左孩子的右子树…

linux的Top学习

学习文档 https://www.cnblogs.com/liulianzhen99/articles/17638178.html TOP 问题 1&#xff1a;top 输出的利用率信息是如何计算出来的&#xff0c;它精确吗&#xff1f; top 命令访问 /proc/stat 获取各项 cpu 利用率使用值内核调用 stat_open 函数来处理对 /proc/sta…

蓝桥杯算法双周赛

四、赛后真题解析 比赛赛后将提供免费直播讲解&#xff0c;主讲人&#xff1a;待定。时间&#xff1a;07 月 13 日&#xff08;比赛当日&#xff09;晚 21 时。观看直播地址&#xff1a;第3场蓝桥算法季度赛赛后题解直播 - 蓝桥云课 - 哔哩哔哩直播&#xff0c;二次元弹幕直播…

ShareSDK HarmonyOS NEXT集成指南

集成前准备 注册账号 使用MobSDK之前&#xff0c;需要先在MobTech官网注册开发者账号&#xff0c;并获取MobTech提供的AppKey和AppSecret&#xff0c;详情可以点击查看注册流程 ShareSDK流程图 集成配置 添加依赖 在Terminal窗口中&#xff0c;执行如下命令进行安装 ohpm …