以下是根据您的要求编写的代码,用于读取Excel表格并执行C-均值聚类算法分析,然后绘制二维分布图并输出聚类中心:

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

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

# 提取男生和女生的数据
male_data = data[data['性别'] == '男']
female_data = data[data['性别'] == '女']

# 合并男生和女生的数据
merged_data = pd.concat([male_data, female_data])

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

# 使用PCA将特征降为2维
pca = PCA(n_components=2)
features_pca = pca.fit_transform(merged_data[features])

# 定义聚类数
num_clusters = 2

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

# 绘制二维分布图
plt.scatter(features_pca[:, 0], features_pca[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='X', c='red')
plt.title(f'聚类数为{num_clusters}的二维分布图')
plt.xlabel('主成分1')
plt.ylabel('主成分2')
plt.show()

# 输出聚类中心
print(f'聚类数为{num_clusters}的聚类中心:')
for center in centers:
    print(f'身高: {center[0]}, 体重: {center[1]}, 50米成绩: {center[2]}, 肺活量: {center[3]}')

请确保您已安装pandas、scikit-learn和matplotlib库。此代码将读取指定路径的Excel文件,并提取其中的男生和女生的数据。然后,它使用PCA将身高、体重、50米成绩和肺活量四个特征降为2维,并执行C-均值聚类算法来分析数据。代码将使用聚类数为2进行聚类,并绘制出对应的二维分布图。同时,代码输出聚类中心,其中聚类中心表示为身高、体重、50米成绩和肺活量四个特征的值。

Python C-均值聚类分析:降维、聚类可视化与中心点提取

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

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