🎯 学习目标

  • 理解聚类与分类的区别
  • 掌握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值

📝 本节小结

  • • K-Means是最常用的聚类算法
  • • 需要预先指定K值
  • • 肘部法则帮助选择K
  • • 客户细分、图像压缩等应用