Python C-均值聚类分析:基于身高、体重、50米成绩和肺活量数据
以下是使用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米成绩和肺活量四个特征的值。
原文地址: http://www.cveoy.top/t/topic/1A6 著作权归作者所有。请勿转载和采集!