Python C-均值聚类分析:基于TSNE降维的男生女生样本数据聚类
使用Python进行C-均值聚类分析
本文将提供一个Python代码示例,用于读取Excel数据,并应用C-均值聚类算法对男生女生样本数据中的身高、体重、50米成绩、肺活量四个特征进行聚类分析。首先,使用TSNE将四维特征降维至二维,然后进行聚类分析,并绘制聚类结果分布图以及计算聚类准则函数值。
代码示例:
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
# 读取Excel数据
data = pd.read_excel('D:\研究生作业\模式识别作业\2023年模式识别与机器学习数据集汇总1\XLS')
# 提取四个特征
features = data[['身高', '体重', '50米成绩', '肺活量']]
# 使用TSNE将特征降为2维
tsne = TSNE(n_components=2)
features_tsne = tsne.fit_transform(features)
# 定义聚类数范围
num_clusters = range(2, 21)
# 存储聚类准则函数值
inertia = []
# 执行聚类
for n in num_clusters:
kmeans = KMeans(n_clusters=n)
kmeans.fit(features)
inertia.append(kmeans.inertia_)
# 绘制聚类准则函数值表格
table = pd.DataFrame({'聚类数': num_clusters, '聚类准则函数值J': inertia})
print(table)
# 绘制聚类结果分布图(聚类数为2、3、4、5)
for n in [2, 3, 4, 5]:
kmeans = KMeans(n_clusters=n)
kmeans.fit(features)
labels = kmeans.labels_
plt.scatter(features_tsne[:, 0], features_tsne[:, 1], c=labels)
plt.title(f'聚类数={n}')
plt.show()
# 输出聚类中心
centers = kmeans.cluster_centers_
print(f'聚类数为{n}的聚类中心:')
print(centers)
注意:
- 需要安装以下库:pandas、scikit-learn、matplotlib。
- 请将代码中的Excel文件路径更改为实际路径。
- 代码示例仅展示了聚类分析的基本步骤,具体的代码实现可能需要根据实际需求进行调整。
应用场景:
该代码示例可以应用于各种数据分析场景,例如:
- 对学生数据进行分类,例如根据身高、体重、成绩等特征将学生分成不同的组别
- 对客户数据进行细分,例如根据消费习惯、购买历史等特征将客户分成不同的群体
- 对市场数据进行分析,例如根据用户画像、产品销量等特征将市场细分为不同的区域或类别
总结:
本文介绍了使用Python进行C-均值聚类分析的基本步骤,并提供了代码示例。通过该代码,我们可以对数据进行聚类分析,并根据聚类结果进行进一步的分析和决策。
原文地址: http://www.cveoy.top/t/topic/pbH 著作权归作者所有。请勿转载和采集!