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()

代码解读:

  1. 导入必要的库:pandas用于数据处理,scikit-learn提供KMeans聚类算法,matplotlib用于绘图。
  2. 读取Excel文件:使用pd.read_excel()函数读取指定路径的Excel文件。
  3. 提取特征:从数据集中选取'身高'和'体重'两列作为聚类分析的特征。
  4. 设置聚类数:定义一个列表num_clusters,包含要测试的不同聚类数。
  5. 循环执行聚类:
    • 使用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

通过运行这段代码,你将获得不同聚类数下的身高体重数据聚类结果,并以散点图的形式直观地展示出来。这将帮助你更好地理解数据的分布规律,并为进一步分析提供参考。

Python实现C均值聚类分析:身高体重案例

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

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