KMeans实战——聚类和轮廓系数评估啤酒数据集

原理:

在数据分析和机器学习中,聚类是一种常用的无监督学习方法,用于将数据集中的样本划分为若干个簇,使得同一簇内的样本相似度较高,而不同簇之间的样本相似度较低。KMeans算法是其中最常用的聚类算法之一。本文将介绍如何使用KMeans算法对啤酒数据集进行聚类,并使用轮廓系数(Silhouette Score)来评估聚类结果的质量。

1. 数据准备

首先,我们需要导入必要的库并加载数据集。本文使用的数据集是一个啤酒数据集,包含啤酒的热量(calories)、钠含量(sodium)、酒精含量(alcohol)和成本(cost)等特征。

python 复制代码
import pandas as pd
from sklearn.cluster import KMeans
from sklearn import metrics
import matplotlib.pyplot as plt

# 加载数据集
beer = pd.read_table('data.txt', sep=' ', encoding='utf-8', engine='python')

# 选择特征
X = beer[['calories', 'sodium', 'alcohol', 'cost']]

2. 轮廓系数简介

轮廓系数是一种用于评估聚类质量的指标,其值介于-1和1之间。轮廓系数越接近1,表示聚类结果越好;越接近-1,则表示聚类结果可能存在问题。轮廓系数的计算公式如下:

其中:

3. 计算不同簇数的轮廓系数

为了找到最佳的簇数,我们可以尝试不同的簇数,并计算每个簇数对应的轮廓系数。代码如下:

python 复制代码
scores = []
for k in range(2, 10):
    labels = KMeans(n_clusters=k).fit(X).labels_  # 聚类
    score = metrics.silhouette_score(X, labels)  # 计算轮廓系数
    scores.append(score)

print(scores)

4. 绘制轮廓系数随簇数变化的曲线

为了更直观地观察轮廓系数随簇数的变化,我们可以绘制轮廓系数曲线:

python 复制代码
plt.plot(list(range(2, 10)), scores)
plt.xlabel('Number of Clusters')
plt.ylabel('Silhouette Score')
plt.show()

通过观察曲线,我们可以选择一个轮廓系数较高的簇数作为最终的聚类数。

5. 进行聚类并评估结果

假设我们选择簇数为2,进行聚类并评估结果:

python 复制代码
# 聚类
km = KMeans(n_clusters=2).fit(X)
beer['cluster'] = km.labels_

# 计算轮廓系数
score = metrics.silhouette_score(X, beer.cluster)
print(score)

6、运行结果

总结

本文介绍了如何使用KMeans算法对啤酒数据集进行聚类,并使用轮廓系数来评估聚类结果的质量。通过尝试不同的簇数并计算轮廓系数,我们可以选择一个合适的簇数,从而得到较好的聚类结果。轮廓系数是一个非常有用的指标,可以帮助我们判断聚类结果的好坏。

相关推荐
科大饭桶21 分钟前
昇腾AI自学Day2-- 深度学习基础工具与数学
人工智能·pytorch·python·深度学习·numpy
什么都想学的阿超41 分钟前
【大语言模型 02】多头注意力深度剖析:为什么需要多个头
人工智能·语言模型·自然语言处理
努力还债的学术吗喽1 小时前
2021 IEEE【论文精读】用GAN让音频隐写术骗过AI检测器 - 对抗深度学习的音频信息隐藏
人工智能·深度学习·生成对抗网络·密码学·音频·gan·隐写
明道云创始人任向晖1 小时前
20个进入实用阶段的AI应用场景(零售电商业篇)
人工智能·零售
数据智研1 小时前
【数据分享】大清河(大庆河)流域上游土地利用
人工智能
聚客AI2 小时前
🔷告别天价算力!2025性价比最高的LLM私有化训练路径
人工智能·llm·掘金·日新计划
天波信息技术分享2 小时前
AI 云电竞游戏盒子:从“盒子”到“云-端-芯”一体化竞技平台的架构实践
人工智能·游戏·架构
用户5191495848452 小时前
curl --continue-at 参数异常行为分析:文件覆盖与删除风险
人工智能·aigc
用户84913717547162 小时前
joyagent智能体学习(第1期):项目概览与架构解析
人工智能·llm·agent
是乐谷2 小时前
阿里云杭州 AI 产品法务岗位信息分享(2025 年 8 月)
java·人工智能·阿里云·面试·职场和发展·机器人·云计算