Python C-均值聚类分析:基于TSNE降维的男生女生身高、体重、50米成绩和肺活量特征聚类
以下是使用Python编写的代码,用于读取Excel表格并执行C-均值聚类算法分析,然后绘制二维分布图并输出聚类中心和对应的特征值:
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
# 读取Excel数据
data = pd.read_excel('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)
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}的聚类中心:')
for center in centers:
print(f'身高: {center[0]}, 体重: {center[1]}, 50米成绩: {center[2]}, 肺活量: {center[3]}')
print()
请确保您已安装pandas、scikit-learn和matplotlib库。此代码将读取指定路径的Excel文件,并提取其中的身高、体重、50米成绩和肺活量四个特征。然后,它使用TSNE将这些特征降为2维,并执行C-均值聚类算法来分析数据。对于给定的聚类数,它将绘制出对应的二维分布图,并输出聚类中心和对应的特征值。您可以根据需要修改聚类数列表num_clusters。
原文地址: https://www.cveoy.top/t/topic/S4O 著作权归作者所有。请勿转载和采集!