使用python实现3D聚类图示例代码

 更新时间:2024年08月20日 10:47:06   作者:兜里没有一毛钱  
这篇文章主要介绍了使用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 metrics
print("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 metrics
print("Silhouette Coefficient: %0.3f" % metrics.silhouette_score(X_pca, labels))

实现效果;

到此这篇关于使用python实现3D聚类图的文章就介绍到这了,更多相关python 3D聚类图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于opencv的selenium滑动验证码的实现

    基于opencv的selenium滑动验证码的实现

    这篇文章主要介绍了基于opencv的selenium滑动验证码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 解决Django部署设置Debug=False时xadmin后台管理系统样式丢失

    解决Django部署设置Debug=False时xadmin后台管理系统样式丢失

    这篇文章主要介绍了解决Django部署设置Debug=False时xadmin后台管理系统样式丢失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Django 博客实现简单的全文搜索的示例代码

    Django 博客实现简单的全文搜索的示例代码

    这篇文章主要介绍了Django 博客实现简单的全文搜索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python中低维数组填充高维数组的实现

    Python中低维数组填充高维数组的实现

    今天小编就为大家分享一篇Python中低维数组填充高维数组的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python深度学习标准库使用argparse调参

    python深度学习标准库使用argparse调参

    这篇文章主要为大家介绍了python深度学习标准库使用argparse调参实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • python函数返回多个值的示例方法

    python函数返回多个值的示例方法

    这篇文章主要介绍了python函数返回多个值的方法,大家参考使用
    2013-12-12
  • wxPython之wx.DC绘制形状

    wxPython之wx.DC绘制形状

    这篇文章主要为大家详细介绍了wxPython之wx.DC绘制形状,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Matplotlib绘制雷达图和三维图的示例代码

    Matplotlib绘制雷达图和三维图的示例代码

    这篇文章主要介绍了Matplotlib绘制雷达图和三维图的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Python面向对象实现数据分析的实例详解

    Python面向对象实现数据分析的实例详解

    这篇文章主要通过几个实例为大家详细介绍了Python面向对象实现数据分析的方法,文中的示例代码讲解详细,对我们学习Python有一定帮助,需要的可以参考一下
    2023-01-01
  • Python识别验证码的实现示例

    Python识别验证码的实现示例

    这篇文章主要介绍了Python识别验证码的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论