Python实现C均值聚类算法:分析身高、体重等特征本文将使用Python代码,读取Excel表格中的学生样本数据,并利用C均值聚类算法对学生的身高、体重、50米成绩和肺活量四个特征进行聚类分析。代码功能:1. 读取Excel表格数据2. 提取身高、体重、50米成绩和肺活量四个特征3. 对数据进行标准化处理4. 分析不同聚类初始值对聚类结果的影响5. 将特征值区间均分为6个子区间,并取每个子区间的中值作为初始聚类中心6. 使用C均值聚类算法进行聚类7. 绘制聚类结果的二维分布图8. 输出初始聚类中心和最终聚类中心代码:pythonimport pandas as pdfrom sklearn.cluster import KMeansfrom sklearn.preprocessing import StandardScalerimport numpy as npimport matplotlib.pyplot as plt# 读取Excel数据data = pd.read_excel(r'D:/研究生作业/模式识别作业/2023年模式识别与机器学习数据集汇总1/XLS')# 提取身高、体重、50米成绩、肺活量四个特征features = data[['身高(cm)', '体重(kg)', '50米成绩', '肺活量']]# 标准化数据scaler = StandardScaler()normalized_data = scaler.fit_transform(features)# 定义聚类数num_clusters = 6# 将特征值区间均分为6个子区间,取每个子区间的中值作为初始聚类中心uniform_centers = []for j in range(normalized_data.shape[1]): feature_min = np.min(normalized_data[:, j]) feature_max = np.max(normalized_data[:, j]) interval = (feature_max - feature_min) / num_clusters center = [feature_min + (i + 0.5) * interval for i in range(num_clusters)] uniform_centers.append(center)uniform_centers = np.array(uniform_centers).T# 执行聚类并绘制二维分布图kmeans = KMeans(n_clusters=num_clusters, init=uniform_centers, random_state=0)kmeans.fit(normalized_data)labels = kmeans.labels_centers = kmeans.cluster_centers_# 绘制二维分布图plt.scatter(normalized_data[:, 0], normalized_data[:, 1], c=labels)plt.scatter(centers[:, 0], centers[:, 1], marker='X', c='red')plt.title('特征值区间均分作为初始聚类中心的二维分布图')plt.xlabel('标准化身高')plt.ylabel('标准化体重')plt.show()# 将聚类中心还原回初始值original_centers = scaler.inverse_transform(centers)# 输出初始聚类中心print('初始聚类中心(还原后):')for i, center in enumerate(original_centers): print(f'聚类中心{i+1}:') for j, feature in enumerate(features.columns): print(f'{feature}: {center[j]}') print()代码说明: 代码首先导入了必要的库,包括pandas用于数据处理,sklearn用于机器学习算法,matplotlib用于数据可视化。 接着,代码读取Excel文件,并提取身高、体重、50米成绩和肺活量四个特征。 为了消除不同特征量纲的影响,代码使用StandardScaler对数据进行标准化处理。 然后,代码定义了聚类数目num_clusters为6,并将特征值区间均分为6个子区间,取每个子区间的中值作为初始聚类中心。* 代码使用KMeans函数执行C均值聚类算法,并通过fit方法拟合数据。* kmeans.labels_存储了每个样本所属的类别标签,kmeans.cluster_centers_存储了聚类中心。* 代码使用matplotlib.pyplot绘制了聚类结果的二维分布图,其中不同颜色代表不同的类别,红色'X'代表聚类中心。* 最后,代码将聚类中心还原回初始值,并打印了初始聚类中心和最终聚类中心。注意:* 请确保您已安装pandas、scikit-learn和matplotlib库。* 将代码中的文件路径替换为您实际的Excel文件路径。

Python实现C均值聚类算法:分析身高、体重等特征

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

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