Python-sklearn-聚类
Sklearn 聚类算法sklearn.cluster提供 K-Means、层次聚类、DBSCAN、GMM 等经典聚类算法。 基于划分的聚类1.KMeans— K 均值聚类 ⭐fromsklearn.clusterimportKMeans modelKMeans(n_clusters8,# 簇的数量initk-means,# k-means 或 random 或 ndarrayn_initauto,# 初始化运行次数auto1 次int多次取最优max_iter300,# 单次运行的最大迭代次数tol1e-4,# 收敛容忍度verbose0,random_state42,copy_xTrue,algorithmlloyd# lloyd,elkan(密集数据快),full,auto)model.fit(X)# 核心属性print(model.cluster_centers_)# 簇中心 (n_clusters, n_features)print(model.labels_)# 每个样本的簇标签print(model.inertia_)# 样本到最近簇中心的平方距离之和 ⭐print(model.n_iter_)# 迭代次数print(model.n_features_in_)# 特征数# 预测新样本labelsmodel.predict(X_new)# 将新样本分配到最近簇# 变换到各簇中心的距离distancesmodel.transform(X)# (n_samples, n_clusters) → 可以用作降维特征# 一步到位labelsmodel.fit_predict(X)2.MiniBatchKMeans— 小批量 K 均值fromsklearn.clusterimportMiniBatchKMeans modelMiniBatchKMeans(n_clusters8,initk-means,max_iter100,batch_size1024,# 每批样本数verbose0,random_state42,tol0.0,max_no_improvement10,# 连续无改善轮数init_sizeNone,# 初始化的样本数n_init3,reassignment_ratio0.01# 重新分配中心的比例)model.fit(X)# 支持 partial_fit在线学习model.partial_fit(X_batch) 基于密度的聚类1.DBSCAN— 密度聚类 ⭐fromsklearn.clusterimportDBSCAN modelDBSCAN(eps0.5,# 邻域半径min_samples5,# 核心点所需的最小邻域点数metriceuclidean,# 距离度量metric_paramsNone,algorithmauto,# auto,ball_tree,kd_tree,bruteleaf_size30,# BallTree/KDTree 的叶大小pNone,# Minkowski 度量的幂参数n_jobsNone)model.fit(X)# 核心属性print(model.labels_)# -1噪音, 0簇标签print(model.core_sample_indices_)# 核心样本的索引print(model.components_)# 每个核心样本的副本# 注意: DBSCAN 没有 predict 方法# 对新数据需使用训练后的 dbscan 作为 nearest neighbors 查询调参指南:fromsklearn.neighborsimportNearestNeighborsimportnumpyasnpimportmatplotlib.pyplotasplt# K-距离图选择合适的 epsk5# 一般取 min_samples 值nbrsNearestNeighbors(n_neighborsk).fit(X)distances,indicesnbrs.kneighbors(X)k_distnp.sort(distances[:,-1])plt.plot(k_dist)plt.xlabel(Points sorted by distance)plt.ylabel(f{k}-NN distance)plt.title(K-distance Graph (elbow method))plt.show()# 曲线的肘部即为合适的 eps2.OPTICS— 排序点识别聚类结构fromsklearn.clusterimportOPTICS modelOPTICS(min_samples5,max_epsnp.inf,# 最大邻域半径metricminkowski,p2,cluster_methodxi,# xi 或 dbscanepsNone,# 提取簇的阈值cluster_methoddbscan 时需要xi0.05,# 最小陡度cluster_methodxi 时predecessor_correctionTrue,min_cluster_sizeNone,# 最小簇大小algorithmauto,leaf_size30,n_jobsNone)model.fit(X)print(model.labels_)# 簇标签-1噪音print(model.reachability_)# 可达距离print(model.ordering_)# 簇排序print(model.core_distances_)# 核心距离print(model.predecessor_)# 前驱索引3.HDBSCAN— 层次 DBSCANfromsklearn.clusterimportHDBSCAN modelHDBSCAN(min_cluster_size5,# 最小簇大小min_samplesNone,# 保守性越大越保守cluster_selection_epsilon0.0,max_cluster_sizeNone,# 最大簇大小metriceuclidean,alpha1.0,# 距离持久性algorithmauto,leaf_size40,n_jobsNone,cluster_selection_methodeom,# eom(Excess of Mass) 或 leafallow_single_clusterFalse,store_centersNone)model.fit(X)print(model.labels_)print(model.probabilities_)# 每个样本的簇成员强度 (0~1)print(model.cluster_persistence_)# 每个簇的持久性分数# HDBSCAN 特有的方法soft_clustersmodel.membership_vector()# 软聚类向量️ 基于层次的聚类1.AgglomerativeClustering— 凝聚层次聚类 ⭐fromsklearn.clusterimportAgglomerativeClustering modelAgglomerativeClustering(n_clusters2,# 目标簇数metriceuclidean,# 距离度量linkageward,# 链接准则# ward — 最小方差仅 euclidean# complete — 最大距离最远邻# average — 平均距离# single — 最小距离最近邻connectivityNone,# 连接性约束矩阵compute_distancesFalse,# 存储距离矩阵distance_thresholdNone,# 距离阈值代替 n_clusters)model.fit(X)print(model.labels_)print(model.n_clusters_)# 估计的簇数print(model.n_leaves_)# 树的叶节点数print(model.children_)# 每个合并步骤的子节点 (2, n_samples-1)print(model.distances_)# 每个合并步骤的距离compute_distancesTrue使用距离阈值而非指定 K:modelAgglomerativeClustering(n_clustersNone,distance_threshold0,# 设置为 0 会计算全树linkageward)model.fit(X)2.FeatureAgglomeration— 特征凝聚fromsklearn.clusterimportFeatureAgglomeration modelFeatureAgglomeration(n_clusters2,metriceuclidean,linkageward,pooling_funcnp.mean# 合并后特征的聚合函数)X_reducedmodel.fit_transform(X)print(model.labels_)# 每个原始特征的簇标签3.Birch— 层次聚类大数据友好fromsklearn.clusterimportBirch modelBirch(threshold0.5,# 子簇合并阈值branching_factor50,# 每个节点的最大 CF 子簇数n_clusters3,# 最终簇数compute_labelsTrue,copyTrue)model.fit(X)print(model.labels_)print(model.root_)# 内部树的根节点print(model.subcluster_centers_)# 子簇中心# 支持 partial_fitmodel.partial_fit(X_batch) 基于模型的聚类GaussianMixture— 高斯混合模型GMMfromsklearn.mixtureimportGaussianMixture modelGaussianMixture(n_components1,# 混合成分数covariance_typefull,# full,tied,diag,sphericaltol1e-3,reg_covar1e-6,# 协方差对角线上加的正则化max_iter100,n_init1,# 初始化次数init_paramskmeans,# kmeans,k-means,random,random_from_dataweights_initNone,means_initNone,precisions_initNone,random_stateNone,warm_startFalse,verbose0,verbose_interval10)model.fit(X)# 关键属性print(model.weights_)# 各成分的混合权重print(model.means_)# 各成分的均值print(model.covariances_)# 各成分的协方差print(model.precisions_)# 各成分的精度矩阵协方差逆print(model.precisions_cholesky_)# 精度矩阵的 Cholesky 分解print(model.converged_)# 是否收敛print(model.n_iter_)# 实际迭代数print(model.lower_bound_)# 对数似然的下界# 预测方法labelsmodel.predict(X)# 硬分配probsmodel.predict_proba(X)# 软分配后验概率log_likelihoodmodel.score(X)# 每个样本的对数似然total_llmodel.score_samples(X)# 加权对数似然# 采样X_sampled,y_sampledmodel.sample(n_samples100)# AIC / BIC模型选择print(model.aic(X))print(model.bic(X))GMM 模型选择:importnumpyasnp n_componentsrange(1,11)models[GaussianMixture(n,random_state42).fit(X)forninn_components]bics[m.bic(X)forminmodels]aics[m.aic(X)forminmodels]best_nn_components[np.argmin(bics)]print(fBest n_components (BIC):{best_n})BayesianGaussianMixture— 贝叶斯 GMMfromsklearn.mixtureimportBayesianGaussianMixture modelBayesianGaussianMixture(n_components10,# 设置足够大的初始值covariance_typefull,tol1e-3,reg_covar1e-6,max_iter1000,n_init1,init_paramskmeans,weight_concentration_prior_typedirichlet_process,# dirichlet_process — 自动推断成分数# dirichlet_distribution — 固定成分数weight_concentration_priorNone,# Dirichlet 先验浓度mean_precision_priorNone,mean_priorNone,degrees_of_freedom_priorNone,covariance_priorNone,random_stateNone,warm_startFalse,verbose0)model.fit(X)print(model.weights_)# 部分权重接近 0自动选择成分数print(model.n_components)# 原始设定的成分数# 实际有效的成分数effective_nnp.sum(model.weights_0.01)print(fEffective components:{effective_n}) 其他聚类算法1.MeanShift— 均值漂移fromsklearn.clusterimportMeanShift modelMeanShift(bandwidthNone,# 带宽None 用 estimate_bandwidth 估计seedsNone,# 初始核位置bin_seedingFalse,# 使用离散化加速min_bin_freq1,cluster_allTrue,# 是否将所有点分配给簇False 时孤立点为 -1n_jobsNone,max_iter300)model.fit(X)print(model.cluster_centers_)print(model.labels_)print(model.n_iter_)# 带宽估计fromsklearn.clusterimportestimate_bandwidth bandwidthestimate_bandwidth(X,quantile0.3,n_samples500,random_state42)2.AffinityPropagation— 近邻传播fromsklearn.clusterimportAffinityPropagation modelAffinityPropagation(damping0.5,# 阻尼因子 (0.5~1)max_iter200,convergence_iter15,# 连续迭代无变化判定收敛copyTrue,preferenceNone,# 优先度None相似度中值affinityeuclidean,# 或 precomputedverboseFalse,random_stateNone)model.fit(X)print(model.cluster_centers_indices_)# 簇中心在原数据中的索引print(model.labels_)print(model.affinity_matrix_)# 相似度矩阵print(model.n_iter_)3.SpectralClustering— 谱聚类fromsklearn.clusterimportSpectralClustering modelSpectralClustering(n_clusters8,eigen_solverNone,# None,arpack,lobpcg,amgn_componentsNone,# 谱嵌入维度random_state42,n_init10,# k-means 运行次数gamma1.0,# RBF 核参数affinityrbf,# rbf,nearest_neighbors,precomputed,callablen_neighbors10,# nearest_neighbors affinity 的邻居数eigen_tolauto,assign_labelskmeans,# kmeans,discretize,cluster_qrdegree3,# 多项式核的次数coef01# 多项式核/ sigmoid 核的独立项)model.fit(X)print(model.labels_)print(model.affinity_matrix_)# 亲和矩阵4.SpectralBiclustering/SpectralCoclustering— 谱双聚类fromsklearn.clusterimportSpectralBiclustering,SpectralCoclustering# 双聚类同时对行和列聚类modelSpectralBiclustering(n_clusters3,methodbistochastic,# bistochastic,scale,logn_components6,n_best3,svd_methodrandomized,n_svd_vecsNone,mini_batchFalse,initk-means,n_init10,random_state42)model.fit(X)print(model.row_labels_)# 行标签print(model.column_labels_)# 列标签# 共聚类仅用于文档-词矩阵modelSpectralCoclustering(n_clusters3,random_state42)model.fit(X)print(model.row_labels_)print(model.column_labels_) 选择簇数 K肘部法则Elbow Methodfromsklearn.clusterimportKMeansimportmatplotlib.pyplotasplt inertias[]K_rangerange(1,11)forkinK_range:kmKMeans(n_clustersk,random_state42,n_init10)km.fit(X)inertias.append(km.inertia_)plt.plot(K_range,inertias,bo-)plt.xlabel(k)plt.ylabel(Inertia)plt.title(Elbow Method)plt.show()轮廓系数fromsklearn.metricsimportsilhouette_score silhouettes[]forkinrange(2,11):kmKMeans(n_clustersk,random_state42,n_init10)labelskm.fit_predict(X)silsilhouette_score(X,labels)silhouettes.append(sil)best_kK_range[np.argmax(silhouettes)] 算法选择指南场景推荐一般用途、快速KMeans大数据集在线学习MiniBatchKMeans任意形状簇、含噪音DBSCAN变密度簇HDBSCAN/OPTICS层次结构AgglomerativeClustering软聚类、概率GaussianMixture自动推断簇数BayesianGaussianMixture非凸簇SpectralClusteringK 已知、球形簇KMeans[[sklearn-总览|← 返回总览]]

相关新闻

从“肃面爱音”实战解析音视频处理项目评估与落地指南

从“肃面爱音”实战解析音视频处理项目评估与落地指南

1. 先搞清楚“肃面爱音”到底是什么,以及它能解决什么问题 看到“肃面爱音”这个标题,很多人第一反应可能是某个新出的工具、模型或者某种音频处理技术。在没有详细正文和关键词的情况下,我们只能基于这个名称本身和常见的工程实践来拆解。这…

2026/10/15 7:41:21 阅读更多 →
AI漫剧制作全流程实战:从剧本到成片,整合豆包、即梦AI与剪映

AI漫剧制作全流程实战:从剧本到成片,整合豆包、即梦AI与剪映

最近在尝试用AI工具制作短视频时,发现从剧本到成片,整个流程涉及多个工具和环节,网上教程要么只讲单点,要么过于理论,新手很难串联起来。特别是想制作带有故事性的“AI漫剧”,更是不知道从何下手。本文将为…

2026/9/30 23:12:27 阅读更多 →
非科班开发者AI应用入门:本地部署与Web集成实战指南

非科班开发者AI应用入门:本地部署与Web集成实战指南

在实际技术转型和职业发展讨论中,很多非计算机背景的开发者,尤其是传统意义上的“文科生”,会面临一个共同的困惑:在AI技术浪潮席卷各行各业的今天,如何找到自己的定位并构建起有竞争力的技术栈?这种困境并…

2026/10/1 7:40:47 阅读更多 →

最新新闻

光子晶体光纤仿真降维实操:笔记本搞定模式干涉建模

光子晶体光纤仿真降维实操:笔记本搞定模式干涉建模

最近有个朋友跟我诉苦:他接手了一个光子晶体光纤传感器的项目,领导开口就问“你这个仿真要多大内存,是不是得租台服务器”,他按照常规三维时域软件一估算,发现模型随便就是几十亿网格,当场就自闭了。我跟他…

2026/10/15 7:41:00 阅读更多 →
Zotero本地增强方案:可视化+AI问答+全文翻译

Zotero本地增强方案:可视化+AI问答+全文翻译

1. 这不是“又一个Zotero插件”,而是一套可落地的学术工作流增强方案你有没有过这样的时刻:文献库攒了八百篇PDF,点开Zotero主界面却像面对一座没有索引的图书馆——知道里面有东西,但找不到入口;读到关键段落想查证原…

2026/10/15 7:41:00 阅读更多 →
一人公司的商业价值与运营策略解析

一人公司的商业价值与运营策略解析

1. 一人公司的产业定位解析在商业生态系统中,一人公司正以独特的组织形式填补着传统企业难以触及的市场缝隙。这种微型企业形态不同于自由职业者或个体工商户,其核心特征在于以公司法人身份运作,却保持极简的组织架构。我观察到近年来在软件开…

2026/10/15 7:41:00 阅读更多 →
考虑源荷不确定性的两阶段鲁棒机组调度:Yalmip+Gurobi实现

考虑源荷不确定性的两阶段鲁棒机组调度:Yalmip+Gurobi实现

1. 项目概述:源荷不确定性下的机组调度为何需要重做模型电力系统的机组调度问题,如果只在确定性场景下做,说实话已经不算难事了。常规的经济调度加机组启停约束,用线性规划或者混合整数线性规划就能收敛得很漂亮。真正让调度模型从…

2026/10/15 7:41:00 阅读更多 →
AI热点背后的认知校准:GPT-6、世界模型与术语通胀解析

AI热点背后的认知校准:GPT-6、世界模型与术语通胀解析

1. 标题背后的三重信号:一场被误读的“AI纪年”重构看到这个标题,我第一反应不是点开看内容,而是下意识翻了翻日历——2026年10月?再确认一遍手机系统时间:2024年9月。没错,这根本不是一份“新闻简报”&…

2026/10/15 7:41:00 阅读更多 →
2026年10月北京市联通宽带实测办理避坑全攻略

2026年10月北京市联通宽带实测办理避坑全攻略

上个月我翻了一下家里的宽带账单,一年算下来花了快两千块。很多人有个反常识的误区,觉得宽带资费越贵,网速就绝对越快。其实我拿着四家运营商的账单横向对比后发现,花双倍钱办的千兆宽带,实际体验甚至不如邻居办的五百…

2026/10/15 7:40:00 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →