KMeans聚类通过最小化点到簇中心距离平方和将数据划分为K组。使用scikit-learn需安装依赖库,准备数据后选择K值(可用肘部法则),训练模型并可视化结果,注意数据标准化及KMeans对初始值和异常值的敏感性。

在Python中使用KMeans聚类是数据挖掘和机器学习中常见的无监督学习方法,主要用于将数据划分为K个簇。它通过最小化每个点到其所属簇中心的距离平方和来实现聚类。下面介绍如何使用scikit-learn库中的KMeans进行聚类分析。
1. 安装依赖库
确保已安装必要的库:
pip install scikit-learn numpy matplotlib2. 基本使用步骤
KMeans聚类的基本流程包括:准备数据、选择簇数K、训练模型、查看结果和可视化。
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
示例数据:
立即学习“Python免费学习笔记(深入)”;
# 生成示例数据X = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6],
[9, 11], [8, 7], [10, 9], [0.5, 1]])
设置K值并训练模型:
kmeans = KMeans(n_clusters=2, random_state=42)kmeans.fit(X)
labels = kmeans.labels_ # 每个样本的类别标签
centers = kmeans.cluster_centers_ # 聚类中心
上面代码将数据分为2类,labels表示每个点属于哪个簇(0或1),centers是两个簇的中心坐标。
良精商城网店购物系统是一套能够适合不同类型商品、超强灵活的多功能在线商店系统,三级分销 PC+移动端+微网站,为您提供了一个完整的在线开店解决方案。良精网店购物系统除了拥有一般网上商店系统所具有的所有功能,还拥有着其它网店系统没有的许多超强功能。多种独创的技术使得系统能满足各行业广大用户的各种各样的需求,是一个经过完善设计并适用于各种服务器环境的高效、全新、快速和优秀的网上购物软件解决方案。
3. 可视化聚类结果
对于二维数据,可以用matplotlib画出聚类效果:
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', label='Data Points')plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x', s=200, label='Centroids')
plt.legend()
plt.title("KMeans Clustering")
plt.show()
不同颜色代表不同簇,红色叉号表示聚类中心。
4. 如何选择合适的K值
常用的方法是肘部法则(Elbow Method),通过观察不同K值对应的惯性(inertia,即样本到其簇中心距离的平方和)变化来判断最佳K。
inertias = []
K_range = range(1, 6)
for k in K_range:
km = KMeans(n_clusters=k, randomstate=42)
km.fit(X)
inertias.append(km.inertia)
plt.plot(K_range, inertias, 'bo-', label='Inertia')
plt.xlabel('Number of Clusters (k)')
plt.ylabel('Inertia')
plt.title('Elbow Method')
plt.show()
当曲线出现明显“拐点”时,该K值通常较合适。
5. 注意事项
- KMeans对初始中心敏感,建议设置
random_state保证结果可复现 - 数据最好先标准化,特别是各特征量纲差异大时,可用
StandardScaler - KMeans假设簇是凸形且大小相近,对非球形或密度差异大的数据效果可能不佳
- 异常值会影响聚类中心,必要时先做异常检测
基本上就这些。KMeans简单高效,适合初学者上手聚类任务,结合实际业务理解选择K值更重要。不复杂但容易忽略细节。









