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

实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)

一、实验目的

 Python 数据可视化:

1、学习使用 jiebawordcloud 等类库生成词云图。

2、学习使用 Matplotlib 库进行数据可视化。

Python 聚类-K-means:

1、理解聚类非监督学习方法的基本原理。

2、掌握 Pythonnumpypandassklearn 实现聚类的方法。

二、实验原理

运用 Anaconda 搭建的 Spyder平台编写 Python 实例程序。

运用 Anaconda 搭建的 Spyder平台编写实例 Python K-means 聚类程序。

三、使用软件平台

1、Windows 11电脑一台。

2、Anaconda、Python、Spyder平台。

四、实验内容

实例1:简历信息词云图

结果:

代码: 

对了记得把老师的文件放在同一个文件夹下

import jieba
import imageio
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 读取个人信息文件
with open("per_info.txt", "r", encoding="utf-8") as f:word_content = f.read().replace("\n", "")# 读取背景图片
mask_img = imageio.imread("china.jpg")# 分词处理
word_cut = jieba.cut(word_content)
word_cut_join = " ".join(word_cut)# 创建词云对象
wc = WordCloud(font_path="STXINGKA.ttf",  # 选择支持中文的字体mask=mask_img,  # 背景图background_color="white",  # 背景颜色max_words=500,  # 最大显示词语数max_font_size=80  # 最大字体
)# 生成词云
wc.generate(word_cut_join)# 显示词云
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.show()# 保存词云到本地
wc.to_file("personal_wordcloud.jpg")

 实例2:疫情病例数发展趋势可视化

结果:

代码:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParams# 设置字体为 SimHei(黑体)
rcParams['font.sans-serif'] = ['SimHei']  # 解决中文乱码
rcParams['axes.unicode_minus'] = False  # 解决负号显示问题# 读取疫情数据
data_file = "cq_COVID-19.xlsx"  
data = pd.read_excel(data_file)# 提取日期和感染人数并保存到列表
dates = pd.to_datetime(data['日期']).tolist()  # 转换为 Python 列表
cases = data['感染人数'].tolist()  # 转换为 Python 列表# 打印两个列表(仅供调试)
print("日期列表:", dates)
print("感染人数列表:", cases)# 绘制折线图
plt.figure(figsize=(12, 6))
plt.plot(dates, cases, marker='o', linestyle='-', label='感染人数')# 设置图表标题和轴标签
plt.title('重庆疫情病例数发展趋势--来自420刘清城', fontsize=16)
plt.xlabel('日期', fontsize=12)
plt.ylabel('感染人数', fontsize=12)# 美化图表
plt.grid(alpha=0.3)
plt.xticks(rotation=45)  # 日期横轴倾斜以便阅读
plt.legend()
plt.tight_layout()# 显示图表
plt.show()

实例3:基于经纬度的城市聚类

结果:

代码:

import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 读取城市数据
file_path = "China_cities.csv"  # 确保文件路径正确
data = pd.read_csv(file_path)# 检查数据
print("数据预览:")
print(data.head())# 提取经纬度数据
coordinates = data[['北纬', '东经']]# 数据清洗:确保数据没有缺失值
coordinates = coordinates.dropna()# 转换为数值类型(如果必要)
coordinates['北纬'] = pd.to_numeric(coordinates['北纬'], errors='coerce')
coordinates['东经'] = pd.to_numeric(coordinates['东经'], errors='coerce')# 丢弃无法转换为数值的行
coordinates = coordinates.dropna()# 使用 K-Means 模型进行聚类
kmeans = KMeans(n_clusters=5, random_state=42)  # 将城市分为3类
data['聚类标签'] = kmeans.fit_predict(coordinates)# 输出聚类中心
print("聚类中心:")
print(kmeans.cluster_centers_)# 绘制聚类结果图
plt.figure(figsize=(10, 6))
colors = ['gray', 'blue', 'green',"yellow","cyan"]for i in range(5):  # 根据聚类标签绘制不同颜色的点cluster_points = data[data['聚类标签'] == i]plt.scatter(cluster_points['东经'], cluster_points['北纬'], c=colors[i], label=f'聚类{i+1}')# 绘制聚类中心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 1], centers[:, 0], c='Red', marker='*', s=200, label='聚类中心')# 设置图表标题和轴标签
plt.title('中国主要城市聚类图', fontsize=16)
plt.xlabel('东经', fontsize=12)
plt.ylabel('北纬', fontsize=12)
plt.legend()
plt.grid()
plt.show()

 思考题一:

结果:

代码: 

import jieba
import matplotlib.pyplot as plt# 读取政府工作报告文件
file_path = "govreport-2022.txt"  # 替换为实际文件路径
with open(file_path, "r", encoding="utf-8") as f:text = f.read()# 分词处理
words = jieba.lcut(text)# 统计词频并存储到字典
word_count = {}
for word in words:# 去除标点符号和无意义的单字if len(word) > 1 and word not in [",", "。", "、", "“", "”", "的", "和", "是", "在"]:word_count[word] = word_count.get(word, 0) + 1# 将字典转换为列表并按词频降序排序
sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True)# 提取前5个高频词并构建两个列表
top_words = sorted_word_count[:5]
words = [item[0] for item in top_words]
counts = [item[1] for item in top_words]# 绘制柱状图
plt.figure(figsize=(10, 6))
bars = plt.bar(words, counts, color="skyblue")# 在每个柱上方添加数字
for bar, count in zip(bars, counts):plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(),  # 坐标调整str(count), ha="center", va="bottom", fontsize=15)# 设置标题和标签
plt.title("2022年政府工作报告高频词", fontsize=16)
plt.xlabel("单词名称", fontsize=20)
plt.ylabel("出现频率", fontsize=20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.tight_layout()# 显示图表
plt.show()

思考题二:

 结果:

代码:

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
from matplotlib import rcParams# 设置字体为 SimHei(黑体)
rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
rcParams['axes.unicode_minus'] = False  # 用来正常显示负号# 加载鸢尾花数据集
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['种类'] = iris.target# 查看数据集前5行
print("鸢尾花数据集前5行:")
print(data.head())# 提取四个特征数据
features = data.iloc[:, :4]  # 全部四个特征# 使用 K-Means 模型进行聚类
kmeans = KMeans(n_clusters=3, random_state=42)  # 将数据分为3类
data['聚类标签'] = kmeans.fit_predict(features)# 输出聚类中心
print("聚类中心:")
print(kmeans.cluster_centers_)# 绘制两张图
plt.figure(figsize=(12, 10))# 子图1:花萼长度和宽度
plt.subplot(2, 1, 1)
colors = ['yellow', 'blue', 'green']
markers = ['o', 's', '^']  # 圆形、方形、三角形for i in range(3):  # 遍历3个聚类cluster_points = data[data['聚类标签'] == i]plt.scatter(cluster_points.iloc[:, 0], cluster_points.iloc[:, 1], c=colors[i], marker=markers[i], label=f'聚类{i+1}')# 绘制聚类中心
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='*', s=300, label='聚类中心')# 设置标题和轴标签
plt.title('鸢尾花按花萼特征聚类图', fontsize=16)
plt.xlabel('花萼长度', fontsize=12)
plt.ylabel('花萼宽度', fontsize=12)
plt.legend()
plt.grid()# 子图2:花瓣长度和宽度
plt.subplot(2, 1, 2)for i in range(3):  # 遍历3个聚类cluster_points = data[data['聚类标签'] == i]plt.scatter(cluster_points.iloc[:, 2], cluster_points.iloc[:, 3], c=colors[i], marker=markers[i], label=f'聚类{i+1}')# 绘制聚类中心
plt.scatter(centers[:, 2], centers[:, 3],  c='red', marker='*', s=300, label='聚类中心')# 设置标题和轴标签
plt.title('鸢尾花按花瓣特征聚类图', fontsize=16)
plt.xlabel('花瓣长度', fontsize=12)
plt.ylabel('花瓣宽度', fontsize=12)
plt.legend()
plt.grid()# 显示图形
plt.tight_layout()
plt.show()

相关文章:

实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)

一、实验目的 Python 数据可视化: 1、学习使用 jieba、wordcloud 等类库生成词云图。 2、学习使用 Matplotlib 库进行数据可视化。 Python 聚类-K-means: 1、理解聚类非监督学习方法的基本原理。 2、掌握 Python、numpy、pandas、sklearn 实现聚类…...

通义万相2.1:开启视频生成新时代

摘要:文章开篇便点明了通义万相2.1在视频生成领域的重大突破,强调其作为阿里云通义系列AI模型的重要成员,不仅是简单的模型升级,更是视频生成技术迈向更智能、高效、精准的重要里程碑。其核心技术包括自研的高效VAE和DiT架构&…...

爬虫案例十一js逆向数位观察网

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、网站分析二、代码总结 前言 提示:这里可以添加本文要记录的大概内容: 爬虫案例十一js逆向数位观察网 提示:以下是本篇…...

WSL安装及问题

1 概述 Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,开发人员可以在 Windows 计算机上同时访问 Windows 和…...

WordPress开发到底是开发什么?

WordPress 开发主要涉及基于 WordPress 平台构建、定制和扩展网站功能的过程。它不仅仅是简单的网站搭建,而是通过代码和技术实现个性化需求。 以下是 WordPress 开发的核心内容: 1. 主题开发(Theme Development) 功能&#xff…...

元脑服务器的创新应用:浪潮信息引领AI计算新时代

浪潮信息的元脑 R1 服务器现已全面支持开源框架 SGLang,能够在单机环境下实现 DeepSeek 671B 模型的高并发性能,用户并发访问量超过1000。通过对 SGLang 最新版本的深度适配,元脑 R1 推理服务器在运行高性能模型时,展现出卓越的处…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(9)

7.3. 查询计划相关操作符 78)Repartition Streams:该操作符消费多个输入流并产生多个输出流。期间,记录内容与格式保持不变。如果查询优化器使用一个位图过滤(bitmap filter),则输出流中的数据行数将会减少。一个输入流的每行记录被放入一个输出流。如果该操作符保留顺序…...

单片机项目复刻需要的准备工作

一、前言 复刻单片机的项目的时候,有些模块是需要焊接的。很多同学对焊接没有概念。 这里说一下做项目的基本工具。 比如:像这种模块,都需要自己焊接了排针才可以链接的。 二、基本模块 2.1 单排排针 一些模块买回来是没有焊接的&#x…...

【哇! C++】类和对象(五) - 赋值运算符重载

目录 ​编辑 一、运算符重载 1.1 运算符重载概念 1.2 全局运算符重载 1.3 运算符重载为成员函数 二、赋值运算符重载的特性 2.1 赋值运算符重载需要注意的点 2.2 赋值运算符重载格式 2.2.1 传值返回 2.2.2 传引用返回 2.2.3 检查自己给自己赋值 三、赋值运算符重载的…...

SpringCloud系列教程(十三):Sentinel流量控制

SpringCloud中的注册、发现、网关、服务调用都已经完成了,现在就剩下最后一部分,就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好,把平时常用的功能都集成进来了,而且非常简单高效。我们下一步就完成最后一块拼图Se…...

vue+element|el-tree树设置懒加载和设置默认勾选

文章目录 导文代码实现1. 基本结构2. 懒加载实现3. 默认勾选功能4. 动态加载初始节点5. 节点勾选事件监听完整代码 导文 在实际开发中,很多数据过于庞大,需要分批请求,使用到懒加载。但是在tree的方法中,使用懒加载后无法直接使用…...

零售交易流程相关知识(top-down拆解)

引入 关于POS机交易时的后台数据交互 模块之间数据交换,都可以能被窃取或篡改。由此引入加密、解密机制和签名、验签机制 经典的加密、解密机制: 对称加密:DES\ TDES\ AES\ RC4 非对称加密:RSA\ DSA\ ECC 经典的签名、验签…...

混合存储HDD+SSD机型磁盘阵列,配上SSD缓存功能,性能提升300%

企业日常运行各种文件无处不在,文档、报告、视频、应用数据......面对成千上万的文件,团队之间需要做到无障碍协作,员工能够即时快速访问、共享处理文件。随着业务增长,数字化办公不仅需要大容量,快速高效的文件访问越…...

将本地已有的项目上传至仓库

上传的仓库为Gitee 进入项目目录: 使用命令行工具进入你想要上传的项目的根目录。 初始化Git仓库: 如果项目目录尚未初始化为Git仓库,执行以下命令: git init 执行完成后,项目根目录下会自动生成一个隐藏的.git文件夹…...

中级网络工程师面试题参考示例(3)

一、企业园区网络 问题1:如何实现园区网络的自动化部署和管理?请结合实际场景说明技术选型。 答案要点: 技术选型: SDN(软件定义网络):通过控制器(如Cisco DNA Center)…...

祝福语【算法赛】

题目来源:第 27 场 蓝桥入门赛【算法题】 可以参考一下,本人也是比较菜 不喜勿喷,求求求 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String S sc.nextLi…...

前端 | CORS 跨域问题解决

问题:Access to fetch at http://localhost:3000/save from origin http://localhost:5174 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header is present on the request…...

MySQL知识点(第一部分)

MySQL 基础: 1、SQL语句的分类: DDL:用于控制数据库的操作DML:用于控制表结构的字段,增、删、修DQL:用于查询语句DCL:用于管理数据库,用户,数据库的访问 权限。 2、M…...

ChatGPT使用经验分享

ChatGPT 3.5模型 与 4模型的区别 ChatGPT 3.5 示例 问:树上有9只鸟,打死了一只还剩几只? 答:如果打死了一只鸟,那么树上还剩下8只鸟。 ChatGPT 4 示例 问:树上有9只鸟,打死了一只还剩几只&…...

Webshell原理与利用

本文内容仅用于技术研究、网络安全防御及合法授权的渗透测试,严禁用于任何非法入侵、破坏或未经授权的网络活动。 1. WebShell的定义与原理 定义:WebShell是一种基于Web脚本语言(如PHP、ASP、JSP)编写的恶意后门程序,…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...