Python实现C均值聚类分析:身高体重案例
Python实现C均值聚类分析:身高体重案例
本文将介绍如何使用Python编写程序,读取Excel表格中的身高体重数据,并利用C-均值聚类算法对其进行分析。我们将探索不同聚类数下的结果,并使用matplotlib库可视化二维分布和聚类中心。
代码示例:
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读取Excel数据
data = pd.read_excel(r'D:\研究生作业\模式识别作业\2023年模式识别与机器学习数据集汇总1\XLS')
# 提取身高和体重两个特征
features = data[['身高', '体重']]
# 定义聚类数
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['身高'], features['体重'], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='X', c='red')
plt.title(f'聚类数={n}')
plt.xlabel('身高')
plt.ylabel('体重')
plt.show()
# 输出聚类中心
print(f'聚类数为{n}的聚类中心:')
for center in centers:
print(f'身高: {center[0]}, 体重: {center[1]}')
print()
代码解读:
- 导入必要的库:pandas用于数据处理,scikit-learn提供KMeans聚类算法,matplotlib用于绘图。
- 读取Excel文件:使用
pd.read_excel()函数读取指定路径的Excel文件。 - 提取特征:从数据集中选取'身高'和'体重'两列作为聚类分析的特征。
- 设置聚类数:定义一个列表
num_clusters,包含要测试的不同聚类数。 - 循环执行聚类:
- 使用
KMeans(n_clusters=n)实例化KMeans模型,指定聚类数。 - 使用
kmeans.fit(features)训练模型。 - 使用
kmeans.labels_获取每个样本所属的簇标签。 - 使用
kmeans.cluster_centers_获取每个簇的中心点坐标。 - 使用
plt.scatter()绘制散点图,根据簇标签区分颜色。 - 使用
plt.scatter()绘制聚类中心点,用红色'X'标记。 - 设置图表标题、横纵坐标轴标签。
- 使用
plt.show()显示图表。 - 打印每个聚类数下的聚类中心坐标。
- 使用
注意事项:
- 请确保已安装pandas、scikit-learn和matplotlib库。
- 将代码中的Excel文件路径替换为实际路径。
- 可以根据需要修改聚类数列表
num_clusters。
通过运行这段代码,你将获得不同聚类数下的身高体重数据聚类结果,并以散点图的形式直观地展示出来。这将帮助你更好地理解数据的分布规律,并为进一步分析提供参考。
原文地址: https://www.cveoy.top/t/topic/S6I 著作权归作者所有。请勿转载和采集!