sklearn.cluster.KMeans(n_clusters=8)
sklearn.cluster.KMeans(n_clusters8)是scikit-learn库中 K-Means 聚类算法的一个实例化调用。这行代码的含义是创建一个 K-Means 聚类模型设置将数据分成8 个簇即n_clusters8其他参数全部使用默认值。详细参数说明fromsklearn.clusterimportKMeans# 完整写法含默认值kmeansKMeans(n_clusters8,# 簇的数量你设置的initk-means,# 初始化质心的方法n_initauto,# 不同初始质心运行的次数max_iter300,# 单次运行的最大迭代次数tol1e-4,# 收敛容忍度verbose0,# 是否输出详细日志random_stateNone,# 随机种子用于结果复现copy_xTrue,# 是否复制数据algorithmlloyd# 算法实现)常用操作示例fromsklearn.clusterimportKMeansimportnumpyasnp# 1. 创建模型kmeansKMeans(n_clusters8,random_state42)# random_state 保证结果可复现# 2. 准备数据假设有 100 个样本每个样本 2 个特征Xnp.random.rand(100,2)# 3. 训练模型kmeans.fit(X)# 4. 获取聚类结果labelskmeans.labels_# 每个样本的簇标签 (0-7)centerskmeans.cluster_centers_# 8 个簇的中心点坐标# 5. 预测新样本new_datanp.array([[0.5,0.5]])pred_labelkmeans.predict(new_data)# 6. 计算每个样本到所属簇中心的距离distanceskmeans.transform(X)# shape: (100, 8)每列是到各簇中心的距离如何选择 n_clustersn_clusters8不一定是“最优”的常用方法确定 K 值fromsklearn.metricsimportsilhouette_scoreimportmatplotlib.pyplotasplt# 肘部法则inertias[]silhouette_scores[]K_rangerange(2,15)forkinK_range:kmeansKMeans(n_clustersk,random_state42,n_init10)kmeans.fit(X)inertias.append(kmeans.inertia_)# 簇内平方和silhouette_scores.append(silhouette_score(X,kmeans.labels_))# 绘图fig,(ax1,ax2)plt.subplots(1,2,figsize(12,4))ax1.plot(K_range,inertias,bo-)ax1.set_xlabel(k)ax1.set_ylabel(Inertia)ax1.set_title(Elbow Method)ax2.plot(K_range,silhouette_scores,ro-)ax2.set_xlabel(k)ax2.set_ylabel(Silhouette Score)ax2.set_title(Silhouette Analysis)plt.show()注意事项特征缩放K-Means 对特征尺度敏感建议先标准化fromsklearn.preprocessingimportStandardScaler X_scaledStandardScaler().fit_transform(X)random_state设置随机种子可使结果可复现n_init默认auto10次增加可提高稳定性但会慢内存数据量大时考虑使用MiniBatchKMeans