以下是使用Python编写的代码,用于读取Excel表格并执行C-均值聚类算法分析,对身高、体重、50米成绩和肺活量四个特征进行聚类。首先将数据进行标准化。然后,分析不同聚类初始值对聚类结果的影响,其中采用在特征最大值与最小值中间取10个随机聚类中心的方法。代码将输出这种方法的初始聚类中心,并绘制出聚类结果的二维分布图。最后,代码将输出聚类过后的聚类中心,表示为未进行数据处理前的身高、体重、50米成绩和肺活量四个特征的值。

import pandas as pd
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import random
import 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

# 在特征最大值与最小值中间取10个随机聚类中心
random_centers = []
for i in range(num_clusters):
    center = []
    for j in range(normalized_data.shape[1]):
        feature_min = min(normalized_data[:, j])
        feature_max = max(normalized_data[:, j])
        center.append(random.uniform(feature_min, feature_max))
    random_centers.append(center)
random_centers = np.array(random_centers)

# 执行聚类并绘制二维分布图
kmeans = KMeans(n_clusters=num_clusters, init=random_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、scikit-learn和matplotlib库。此代码将读取指定路径的Excel文件,并提取其中的身高、体重、50米成绩和肺活量四个特征数据。然后,它将对数据进行标准化处理。接下来,代码使用在特征最大值与最小值中间取10个随机聚类中心的方法执行C-均值聚类算法,并绘制出聚类结果的二维分布图。最后,代码输出初始聚类中心,表示为未进行数据处理前的身高、体重、50米成绩和肺活量四个特征的值。

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

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

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