以下是使用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。

Python C-均值聚类分析:基于TSNE降维的男生女生身高、体重、50米成绩和肺活量特征聚类

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

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