- • K-Means是最常用的聚类算法
- • 需要预先指定K值
- • 肘部法则帮助选择K
- • 客户细分、图像压缩等应用
8.1 K-Means聚类
最经典的无监督学习算法
🎯 学习目标
- 理解聚类与分类的区别
- 掌握K-Means算法原理
- 学会选择K值
- 了解K-Means的应用场景
🔄 K-Means算法流程
1
初始化K个质心
2
分配点到最近质心
3
重新计算质心
4
重复2-3直到收敛
💻 sklearn实现
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 创建K-Means模型
kmeans = KMeans(
n_clusters=3, # 聚类数量
init='k-means++', # 智能初始化
n_init=10, # 运行次数
max_iter=300, # 最大迭代
random_state=42
)
# 训练
kmeans.fit(X)
# 获取聚类标签
labels = kmeans.labels_
# 获取质心
centroids = kmeans.cluster_centers_
# 预测新数据
new_labels = kmeans.predict(X_new)
📊 确定K值
肘部法则
# 计算不同K值的惯性
inertias = []
K_range = range(1, 11)
for k in K_range:
kmeans = KMeans(n_clusters=k, random_state=42)
kmeans.fit(X)
inertias.append(kmeans.inertia_)
# 绑制肘部图
plt.plot(K_range, inertias, 'bx-')
plt.xlabel('K')
plt.ylabel('Inertia')
plt.title('肘部法则确定K值')
plt.show()
# 选择拐点处的K值
📝 本节小结
✅