Python实现C均值聚类算法:分析身高体重等特征并可视化
Python实现C均值聚类算法:分析身高体重等特征并可视化
本文将介绍如何使用Python编写程序,对包含770组学生样本的Excel表格数据进行聚类分析。该程序将读取Excel表格中每个样本的身高、体重、50米成绩以及肺活量四个特征,运用C-均值聚类算法进行分析,并最终可视化聚类结果。
程序主要功能:
- 读取Excel表格数据
- 提取身高、体重、50米成绩和肺活量四个特征
- 使用TSNE算法将四维特征降至二维
- 采用C-均值聚类算法对降维后的数据进行聚类分析,并尝试不同的聚类数量(2, 3, 4, 5, 6, 7, 8, 9, 10)
- 绘制不同聚类数量下的二维分布图,并标记聚类中心
- 输出每个聚类数量对应的聚类中心坐标
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
请确保您已安装以上库,才可运行该代码。
原文地址: https://www.cveoy.top/t/topic/S1m 著作权归作者所有。请勿转载和采集!