Python实现C-均值聚类算法分析学生身高体重等特征本文介绍如何使用Python编写程序,读取Excel表格中的学生样本数据,并利用C-均值聚类算法对学生的身高、体重、50米成绩、肺活量四个特征进行聚类分析。程序将计算在不同聚类数(2-20)情况下的聚类准则函数值J,并绘制J值随聚类数变化的曲线图,以便用户观察“肘部”确定最佳聚类数。**代码示例:**pythonimport pandas as pdfrom sklearn.cluster import KMeansimport 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米成绩', '肺活量']# 定义聚类数范围num_clusters = range(2, 21)# 计算不同聚类数情况下的聚类准则函数值JJ_values = []for n in num_clusters: kmeans = KMeans(n_clusters=n) kmeans.fit(merged_data[features]) J = kmeans.inertia_ J_values.append(J)# 绘制J与聚类数的曲线图plt.plot(num_clusters, J_values, marker='o')plt.title('聚类准则函数值J与聚类数的关系')plt.xlabel('聚类数')plt.ylabel('聚类准则函数值J')plt.xticks(num_clusters)plt.grid(True)plt.show()# 输出聚类数和对应的准则函数值Jdf = pd.DataFrame({'聚类数': num_clusters, '准则函数值J': J_values})print(df)*代码说明:1. 导入库: 导入pandas用于数据处理,sklearn.cluster中的KMeans用于实现C-均值聚类算法,matplotlib.pyplot用于绘制图表。2. 读取数据: 使用pandas读取指定路径的Excel文件。3. 数据预处理: 提取所需数据,包括男生和女生的数据,以及身高、体重、50米成绩、肺活量四个特征。4. 设置聚类数范围: 定义聚类数的范围为2到20。5. 计算J值: 使用循环遍历不同的聚类数,对每个聚类数使用KMeans算法进行聚类,并计算对应的聚类准则函数值J。6. 绘制曲线图: 使用matplotlib绘制J值随聚类数变化的曲线图。7. 输出结果: 将聚类数和对应的J值存储在DataFrame中并打印输出。使用说明: 确保已安装pandas、scikit-learn和matplotlib库。 修改代码中Excel文件的路径为实际路径。 运行代码后,将显示J值随聚类数变化的曲线图,并打印聚类数和J值的表格。**结果分析:**通过观察J值随聚类数变化的曲线图,可以找到曲线的“肘部”,即J值下降速度开始变缓的点。该点对应的聚类数可以作为最佳聚类数。

Python实现C-均值聚类算法分析学生身高体重等特征

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

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