使用python实现3D聚类图

实验记录,在做XX得分预测的实验中,做了一个基于Python的3D聚类图,水平有限,仅供参考。

一、以实现三个类别聚类为例

代码:

import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 读取数据
data = pd.read_csv('E:\\shujuji\\Goods\\man.csv')# 选择用于聚类的列
features = ['Weight', 'BMI', 'Lung Capacity Score', '50m Running Score',   'Standing Long Jump Score', 'Sitting Forward Bend Score',   '1000m Running Score', 'Pulling Up Score', 'Total Score']
X = data[features]# 处理缺失值
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_imputed)# 应用PCA降维到3维
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X_scaled)# 执行K-means聚类
# 假设我们想要3个聚类
kmeans = KMeans(n_clusters=9, random_state=0).fit(X_pca)
labels = kmeans.labels_# 将聚类标签添加到原始DataFrame中
data['Cluster'] = labels# 3D可视化聚类结果
fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
unique_labels = set(labels)
colors = ['r', 'g', 'b']for k, c in zip(unique_labels, colors):class_member_mask = (labels == k)xy = X_pca[class_member_mask]ax.scatter(xy[:, 0], xy[:, 1], xy[:, 2], c=c, label=f'Cluster {k}')ax.set_title('PCA of Fitness Data with K-means Clustering')
ax.set_xlabel('Principal Component 1')
ax.set_ylabel('Principal Component 2')
ax.set_zlabel('Principal Component 3')
plt.legend()
plt.show()# 打印每个聚类的名称和对应的数据点数量
cluster_centers = kmeans.cluster_centers_
for i in range(3):cluster_data = data[data['Cluster'] == i]print(f"Cluster {i}: Count: {len(cluster_data)}")# 评估聚类效果
from sklearn import metricsprint("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X_pca, labels))

实现效果:
在这里插入图片描述

二、实现3个聚类以上,以9个类别聚类为例

import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 读取数据
data = pd.read_csv('E:\\shujuji\\Goods\\man.csv')# 选择用于聚类的列
features = ['Weight', 'BMI', 'Lung Capacity Score', '50m Running Score',   'Standing Long Jump Score', 'Sitting Forward Bend Score',   '1000m Running Score', 'Pulling Up Score', 'Total Score']
X = data[features]# 处理缺失值
imputer = SimpleImputer(strategy='mean')
X_imputed = imputer.fit_transform(X)# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X_imputed)# 应用PCA降维到3维
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X_scaled)# 执行K-means聚类
# 假设我们想要9个聚类
kmeans = KMeans(n_clusters=9, random_state=0).fit(X_pca)
labels = kmeans.labels_# 将聚类标签添加到原始DataFrame中
data['Cluster'] = labels# 3D可视化聚类结果
fig = plt.figure(1, figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
unique_labels = set(labels)
colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k', 'orange', 'purple']for k, c in zip(unique_labels, colors):class_member_mask = (labels == k)xy = X_pca[class_member_mask]ax.scatter(xy[:, 0], xy[:, 1], xy[:, 2], c=c, label=f'Cluster {k}')ax.set_title('PCA of Fitness Data with K-means Clustering')
ax.set_xlabel('Principal Component 1')
ax.set_ylabel('Principal Component 2')
ax.set_zlabel('Principal Component 3')
plt.legend()
plt.show()# 打印每个聚类的名称和对应的数据点数量
cluster_centers = kmeans.cluster_centers_
for i in range(9):cluster_data = data[data['Cluster'] == i]print(f"Cluster {i}: Count: {len(cluster_data)}")# 评估聚类效果
from sklearn import metricsprint("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X_pca, labels))

实现效果;
在这里插入图片描述

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

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

相关文章

静力水准仪的基本工作原理:解析磁致伸缩式水准仪

静力水准仪作为一种高精度的测量设备,广泛应用于桥梁、隧道、地铁、大坝、大型储罐等工程结构的沉降监测中。其中,磁致伸缩式静力水准仪以其独特的测量原理和技术优势,成为沉降监测领域的重要工具。本文将详细解析磁致伸缩式静力水准仪的基本…

el-scrollbar搭配el-backtop滚动到最顶/最底 el-scrollbar在focus时出现黑框的解决办法

如何搭配 el-scrollbar 和 el-backtop&#xff0c;使其点击后滚动到底部&#xff1a; <template><!-- 一个el-scrollbar区域&#xff0c;其ref是chatArea --><el-scrollbar scroll"(e: any) > { tempHeight e.scrollTop }" ref"chatArea&qu…

67 H3C SecPath F1000 (网络大致介绍)

一 VRF VRF&#xff08;Virtual Routing and Forwarding&#xff0c;虚拟路由和转发&#xff09;用来实现不同VPN的路由隔离。每个VRF都有相对独立的路由表和LFIB&#xff08;Label Forwarding Information Base&#xff0c;标签转发信息库&#xff09;&#xff0c;确保VPN数据…

MySQL基础:事务

&#x1f48e;所属专栏&#xff1a;MySQL &#x1f48e;1. 事务 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;这些操作要么同时成功&#xff0c;要么同时失败 例如转账…

C++第四十弹---从零开始:模拟实现C++中的unordered_set与unordered_map

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1 哈希概念 2 哈希冲突 3 哈希函数 4 哈希冲突解决 4.1 闭散列 4.1.1. 线性探测 4.1.2. 二次探测 4.2 开散列 4.2.1. 开散列概念 4.2.2…

C语言一笔画迷宫

目录 开头程序程序的流程图程序游玩的效果结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <string.h> #include <Windows.h> void printmaze(const char strmaze[11][11]) {int ia 0;…

智慧环卫与智慧城市:以人文本的创新发展之路

智慧环卫与智慧城市&#xff1a;以人文本的创新发展之路 前言智慧环卫与智慧城市 前言 智慧环卫和智慧城市的建设是当今社会发展的重要趋势&#xff0c;它们对于提升城市管理水平、改善居民生活质量具有至关重要的意义。随着国家政策对新型城市建设的大力推动&#xff0c;智慧…

python环境学习:pip 和 conda的区别和联系。哪个更好使用?pip创建虚拟环境并解释venv模块,pip的常用命令,conda的常用命令。

文章目录 一、pip介绍二、pip 和 conda 的区别与联系1、包管理器的功能2、下载包的来源3、 环境管理4、 安装速度和依赖管理5、联系6、实践中的使用 三、pip创建独立环境1、存在问题并提供解决方案a、问题b、解决方案1c、解决方案2 1、创建虚拟环境流程&#xff08;easy&#x…

Three 物体(三)

点&#xff08;Points&#xff09; 一个用于显示点的类。 由WebGLRenderer渲染的点使用 gl.POINTS。 构造器 Points( geometry : Geometry, material : Material ) geometry —— &#xff08;可选&#xff09;是一个Geometry或者BufferGeometry的实例&#xff0c;默认值是…

Android13 app后台无法启动Abort background activity starts from

总纲 android13 rom 开发总纲说明 目录 1.前言 2.log分析 3.代码查找分析 4.修改方法 5.编译测试 6彩蛋 1.前言 Android13 用户app后台无法启动,提示Abort background activity starts from 10111 2.log分析 08-07 21:37:36.703: W/ActivityTaskManager(440): Back…

保护网站安全,了解常见的几种网络攻击

随着互联网技术的迅猛发展&#xff0c;网站作为信息展示和交互的重要平台&#xff0c;面临着日益复杂的网络攻击威胁。从简单的口令入侵到复杂的分布式拒绝服务&#xff08;DDoS&#xff09;攻击&#xff0c;网络攻击手段层出不穷&#xff0c;给网站所有者带来了巨大的挑战。今…

完成控制器方法获取参数-@RequestParam

文章目录 1.将方法的request和response参数封装到参数数组1.SunDispatcherServlet.java1.根据方法信息&#xff0c;返回实参列表2.具体调用 2.测试 2.封装Http请求参数到参数数组1.自定义RequestParam注解2.MonsterController.java 增加参数3.SunDispatcherServlet.java1.resol…

正则表达式备查

一、常用 符号内容\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如&#xff0c;“n”匹配字符“n”。“\n”匹配换行符。序列“\”匹配“\”&#xff0c;“(”匹配“(”。^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性&#xff0c;^ 还…

ARM工作模式

ARM ARM架构ARM七个工作模式寄存器异常向量表存储格式&#xff08;内存大小端&#xff09;汇编指令 ARM架构 RAM&#xff1a;随机访问存储器 ROM&#xff1a;只读访问存储器 AHB&#xff1a;先进高速总线 APB&#xff1a;先进外设总线 USB&#xff1a;统一串行总线 norflash&am…

Python爬虫案例二:获取虎牙主播图片(动态网站)

爬虫流程&#xff1a;优先假设是JSON数据&#xff0c;抓包方式只能翻页JSON数据HTML数据1.异步数据&#xff08;即先返回HTML&#xff0c;再返回目标的数据&#xff0c;只是触发了JSON请求&#xff09;&#xff0c;不在HTML中2.不能刷新网页&#xff0c;直接翻页 测试链接&…

基于Vue.js+Express的夕阳红养老院管理系统的设计与实现--附源码98650

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 相关技术介绍 2.1 Express框架介绍 2.2 Vue.js 2.3 MySQL数据库 2.4 Node.js主要功能 3系统分析 3.1 可行性分析 3.2 系统流程分析 3.2.1 数据新增流程 3.2.2 数据修改流程 3.2.3数据删除…

【Android】Glide模块工作原理

Glide模块工作原理 每个Glide模块包含一个Decoder&#xff0c;和一个Transcoder Decoder负责将DataSource转换为对应的Resource Transcoder负责将对应的Resource&#xff0c;转换为Drawable GlideModule示例 这里以SVG为例&#xff0c;展示下GlideModule是如何定义的 cla…

Java中等题-完全平方数(力扣)

给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 不是。 示…

AWS SAM CLI 备忘单!

安装 AWS SAM CLI brew tap aws/tap brew 安装 aws-sam-cli 验证安装 $ sam --version 升级 SAM $ brew upgrade aws-sam-cli 您需要 AWS 凭证才能在 AWS 上工作。 构建并部署简单应用程序 $ sam init→ 下载示例应用程序 $ sam build→ 构建您的应用程序 $ sam deploy --guid…

记录自己的嵌入式学习之路

一、STM32软件编程 【STM32】C语言基础补充-CSDN博客 【STM32】写Keil程序的注意事项-CSDN博客 【STM32】一些外设通用内容-CSDN博客 二、嵌入式硬件设计 未完待续