Python实现C均值聚类算法:分析身高体重等特征并可视化

本文将介绍如何使用Python编写程序,对包含770组学生样本的Excel表格数据进行聚类分析。该程序将读取Excel表格中每个样本的身高、体重、50米成绩以及肺活量四个特征,运用C-均值聚类算法进行分析,并最终可视化聚类结果。

程序主要功能:

  1. 读取Excel表格数据
  2. 提取身高、体重、50米成绩和肺活量四个特征
  3. 使用TSNE算法将四维特征降至二维
  4. 采用C-均值聚类算法对降维后的数据进行聚类分析,并尝试不同的聚类数量(2, 3, 4, 5, 6, 7, 8, 9, 10)
  5. 绘制不同聚类数量下的二维分布图,并标记聚类中心
  6. 输出每个聚类数量对应的聚类中心坐标

Python代码:

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 读取Excel数据
data = pd.read_excel(r'D:\研究生作业\模式识别作业\2023年模式识别与机器学习数据集汇总1\XLS')

# 提取四个特征
features = data[['身高', '体重', '50米成绩', '肺活量']]

# 使用TSNE将特征降为2维
tsne = TSNE(n_components=2)
features_tsne = tsne.fit_transform(features)

# 定义聚类数
num_clusters = [2, 3, 4, 5, 6, 7, 8, 9, 10]

# 执行聚类并绘制二维分布图
for n in num_clusters:
    kmeans = KMeans(n_clusters=n)
    kmeans.fit(features_tsne)
    labels = kmeans.labels_
    centers = kmeans.cluster_centers_

    plt.scatter(features_tsne[:, 0], features_tsne[:, 1], c=labels)
    plt.scatter(centers[:, 0], centers[:, 1], marker='X', c='red')
    plt.title(f'聚类数={n}')
    plt.show()

    # 输出聚类中心
    print(f'聚类数为{n}的聚类中心:')
    print(centers)

代码说明:

  • 代码首先使用pandas库读取Excel文件中的数据,并提取'身高'、'体重'、'50米成绩'和'肺活量'四列数据作为特征。
  • 然后利用sklearn.manifold库中的TSNE算法将四维特征降至二维,方便可视化展示。
  • 接着使用sklearn.cluster库中的KMeans算法对降维后的数据进行聚类,并通过循环尝试不同的聚类数量,观察聚类效果。
  • 最后,代码使用matplotlib.pyplot库绘制了不同聚类数量下的二维分布图,并用红色'X'标记出每个聚类的中心点,方便用户直观地观察聚类结果。

运行环境:

  • Python 3
  • pandas
  • scikit-learn
  • matplotlib

请确保您已安装以上库,才可运行该代码。

Python实现C均值聚类算法:分析身高体重等特征并可视化

原文地址: https://www.cveoy.top/t/topic/S1m 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录