跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Python kmeans聚类的使用

KMeans聚类通过最小化点到簇中心距离平方和将数据划分为K组。使用scikit-learn需安装依赖库,准备数据后选择K值(可用肘部法则),训练模型并可视化结果,注意数据标准化及KMeans对初始值和异常值的敏感性。 在Python中使用KMeans聚类是数据挖掘和机器学习中常见的无监督学习方法,主要用于将数据划分为K个簇。它通过最小化每个点到其所属簇中心的距离平方和来实现聚类。下面介绍如何使用
scikit-learn
库中的KMeans进行聚类分析。 1. 安装依赖库 确保已安装必要的库: pip install scikit-learn numpy matplotlib 2. 基本使用步骤 KMeans聚类的基本流程包括:准备数据、选择簇数K、训练模型、查看结果和可视化。 from sklearn.cluster import KMeansimport numpy as npimport 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
是两个簇的中心坐标。 Python 3.14.3 微软官方的 Python 扩展,是 VS Code 安装量最高的扩展(209M+)。集成 IntelliSense(通过 Pylance)、调试(通过 Python Debugger)、代码检查、格式化、重构和单元测试等功能。支持 Jupyter Notebook、虚拟环境管理和多 Python 版本切换。 下载 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值更重要。不复杂但容易忽略细节。

相关文章