以下是使用Python代码进行C-均值聚类分析的示例,该代码读取Excel表格,并对身高、体重、50米成绩和肺活量四个特征进行聚类,并分析随机选择初始聚类点对结果的影响。

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
import random

# 读取Excel数据
data = pd.read_excel('D:\研究生作业\模式识别作业\2023年模式识别与机器学习数据集汇总1\XLS')

# 提取身高、体重、50米成绩、肺活量四个特征
features = ['身高', '体重', '50米成绩', '肺活量']

# 标准化数据
scaler = StandardScaler()
normalized_data = scaler.fit_transform(data[features])

# 定义聚类数
num_clusters = 2

# 随机选择6个数据点作为初始聚类点
random.seed(0)
initial_centers = random.sample(list(normalized_data), num_clusters)

# 执行聚类并绘制二维分布图
kmeans = KMeans(n_clusters=num_clusters, init=initial_centers)
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', s=200)
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):
        print(f'{feature}: {center[j]}')
    print()

请确保您已安装pandas、scikit-learn和matplotlib库。此代码将读取指定路径的Excel文件,并提取其中的身高、体重、50米成绩和肺活量四个特征数据。然后,它将对数据进行标准化处理。接下来,代码随机选择6个数据点作为初始聚类点,并执行C-均值聚类算法得到聚类结果。同时,代码绘制出聚类结果的二维分布图。最后,代码输出初始聚类中心,表示为未进行数据处理前的身高、体重、50米成绩和肺活量四个特征的值。

Python C-均值聚类分析:基于身高、体重、50米成绩和肺活量数据

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

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