Python实现C均值聚类分析:以身高、体重等特征为例
Python实现C均值聚类分析:以身高、体重等特征为例本文将介绍如何使用Python对Excel表格中的数据进行C均值聚类分析。我们以学生身高、体重、50米成绩、肺活量四个特征为例,演示如何利用Python进行数据标准化、执行C均值聚类算法、可视化聚类结果,以及将聚类中心还原为原始值。### 代码实现以下是完整的Python代码: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 = 2# 执行聚类kmeans = KMeans(n_clusters=num_clusters)kmeans.fit(scaled_data)labels = kmeans.labels_centers = kmeans.cluster_centers_# 绘制二维分布图plt.scatter(scaled_data[:, 0], scaled_data[:, 1], c=labels)plt.scatter(centers[:, 0], centers[:, 1], marker='X', c='red')plt.title(f'聚类数为{num_clusters}的二维分布图')plt.xlabel('标准化身高')plt.ylabel('标准化体重')plt.show()# 将聚类中心还原回初始值original_centers = scaler.inverse_transform(centers).round(2)# 输出聚类中心print(f'聚类数为{num_clusters}的聚类中心(还原后):')for center in original_centers: print(f'身高: {center[0]}, 体重: {center[1]}, 50米成绩: {center[2]}, 肺活量: {center[3]}')### 代码解读1. 导入库: 首先,我们需要导入必要的库:pandas用于读取Excel数据,sklearn.cluster中的KMeans用于执行C均值聚类算法,sklearn.preprocessing中的StandardScaler用于数据标准化,matplotlib.pyplot用于绘制图表。2. 读取数据: 使用pd.read_excel()函数读取指定路径的Excel文件。3. 数据预处理: 提取所需数据,并使用StandardScaler()对数据进行标准化,以便消除不同特征之间量纲的影响。4. 执行聚类: 使用KMeans()函数定义聚类模型,设置n_clusters参数为2,表示将数据分为两类。然后使用fit()函数训练模型,并获取聚类标签和聚类中心。5. 结果可视化: 使用plt.scatter()函数绘制散点图,展示不同类别数据点的分布情况,并使用不同颜色区分。同时,使用plt.scatter()函数将聚类中心标记在图上。6. 聚类中心还原: 使用scaler.inverse_transform()函数将标准化后的聚类中心还原为原始值,并使用.round(2)保留两位小数。7. 输出结果: 打印聚类中心信息,包括身高、体重、50米成绩和肺活量四个特征的均值。### 总结本文介绍了如何使用Python实现C均值聚类算法,并以学生身高、体重等特征为例进行了演示。通过数据标准化、聚类分析、结果可视化以及聚类中心还原等步骤,我们可以有效地对数据进行分类,并提取出有价值的信息。
原文地址: https://www.cveoy.top/t/topic/Yjd 著作权归作者所有。请勿转载和采集!