当前位置: 首页 > 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)编写的恶意后门程序,…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

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

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

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

StarRocks 全面向量化执行引擎深度解析

StarRocks 全面向量化执行引擎深度解析 StarRocks 的向量化执行引擎是其高性能的核心设计,相比传统行式处理引擎(如MySQL),性能可提升 5-10倍。以下是分层拆解: 1. 向量化 vs 传统行式处理 维度行式处理向量化处理数…...

Linux系统:进程间通信-匿名与命名管道

本节重点 匿名管道的概念与原理匿名管道的创建命名管道的概念与原理命名管道的创建两者的差异与联系命名管道实现EchoServer 一、管道 管道(Pipe)是一种进程间通信(IPC, Inter-Process Communication)机制,用于在不…...

大模型智能体核心技术:CoT与ReAct深度解析

**导读:**在当今AI技术快速发展的背景下,大模型的推理能力和可解释性成为业界关注的焦点。本文深入解析了两项核心技术:CoT(思维链)和ReAct(推理与行动),这两种方法正在重新定义大模…...