实验三 Python 数据可视化 Python 聚类-K-means(CQUPT)
一、实验目的
Python 数据可视化:
1、学习使用 jieba、wordcloud 等类库生成词云图。
2、学习使用 Matplotlib 库进行数据可视化。
Python 聚类-K-means:
1、理解聚类非监督学习方法的基本原理。
2、掌握 Python、numpy、pandas、sklearn 实现聚类的方法。
二、实验原理
运用 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) 功能ÿ…...

元脑服务器的创新应用:浪潮信息引领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)编写的恶意后门程序,…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...