Python实现C均值聚类算法:分析学生身高、体重与50米成绩关系
Python实现C均值聚类算法:分析学生身高、体重与50米成绩关系本文将介绍如何使用Python,结合C-均值聚类算法,对学生身高、体重和50米成绩数据进行聚类分析。### 代码实现以下代码将读取指定路径的Excel文件,并提取其中的男生和女生的数据。然后,它使用C-均值聚类算法对标准化后的身高、体重和50米成绩三个特征进行聚类分析。代码将执行聚类并绘制出不同聚类数下的二维分布图。同时,代码使用scaler.inverse_transform()将聚类中心还原回初始值,即未进行数据处理前的身高、体重和50米成绩三个特征的值。最后,代码输出聚类中心。聚类数范围可以通过修改range(2, 11)来设置。pythonimport pandas as pdfrom sklearn.cluster import KMeansfrom sklearn.preprocessing import StandardScalerimport 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米成绩']# 标准化数据scaler = StandardScaler()scaled_data = scaler.fit_transform(merged_data[features])# 定义聚类数范围num_clusters = range(2, 11)# 执行聚类并绘制二维分布图fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12, 12))axes = axes.flatten()for i, n in enumerate(num_clusters): kmeans = KMeans(n_clusters=n) kmeans.fit(scaled_data) labels = kmeans.labels_ centers = kmeans.cluster_centers_ # 绘制二维分布图 axes[i].scatter(scaled_data[:, 0], scaled_data[:, 1], c=labels) axes[i].scatter(centers[:, 0], centers[:, 1], marker='X', c='red') axes[i].set_title(f'聚类数为{n}的二维分布图') axes[i].set_xlabel('标准化身高') axes[i].set_ylabel('标准化体重')plt.tight_layout()plt.show()# 将聚类中心还原回初始值original_centers = scaler.inverse_transform(centers)# 输出聚类中心for i, center in enumerate(original_centers): print(f'聚类数为{num_clusters[i]}的聚类中心(还原后):') for j, feature in enumerate(features): print(f'{feature}: {center[j]}') print()### 代码说明1. 首先,我们需要导入必要的库:pandas用于数据处理,KMeans用于执行C均值聚类,StandardScaler用于数据标准化,matplotlib.pyplot用于数据可视化。2. 使用pd.read_excel函数读取Excel表格数据。3. 根据性别提取男生和女生的数据,并使用pd.concat函数合并数据。4. 选择'身高'、'体重'和'50米成绩'作为聚类特征。5. 使用StandardScaler对数据进行标准化处理。6. 设置聚类数范围为2到10。7. 使用循环遍历不同的聚类数,执行KMeans聚类,并绘制二维分布图。8. 使用scaler.inverse_transform()将聚类中心还原回初始值,并输出聚类中心信息。### 总结本文介绍了如何使用Python实现C均值聚类算法,对学生身高、体重和50米成绩数据进行聚类分析。通过调整聚类数,可以探索数据中潜在的模式和结构。
原文地址: https://www.cveoy.top/t/topic/XUB 著作权归作者所有。请勿转载和采集!