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/8/15 7:39:48 阅读更多 →
AI漫剧制作全流程实战:从剧本到成片,整合豆包、即梦AI与剪映

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

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

2026/8/15 7:38:47 阅读更多 →
非科班开发者AI应用入门:本地部署与Web集成实战指南

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

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

2026/8/15 7:38:47 阅读更多 →

最新新闻

Postman从入门到精通:API测试、自动化与团队协作实战指南

Postman从入门到精通:API测试、自动化与团队协作实战指南

1. 项目概述:为什么Postman是API开发的瑞士军刀 如果你刚开始接触后端开发、前端联调,或者需要和第三方服务打交道,那么“接口”这个词对你来说一定不陌生。简单说,接口就是不同软件模块或服务之间沟通的桥梁,而测试和…

2026/8/15 8:32:06 阅读更多 →
Qt安装报错“License check failed”的深度解析与MinGW环境搭建全攻略

Qt安装报错“License check failed”的深度解析与MinGW环境搭建全攻略

1. 项目概述:当Qt安装遇上“License check failed” 如果你在Windows上,兴致勃勃地下载了Qt的离线安装包,准备大干一场,却在安装过程中,尤其是在选择添加MinGW组件时,突然弹出一个冰冷的错误窗口&#xff…

2026/8/15 8:32:06 阅读更多 →
机器学习模型可解释性:SHAP特征重要性分析实战

机器学习模型可解释性:SHAP特征重要性分析实战

1. 可解释性技术:为什么我们需要理解机器学习模型在机器学习项目落地过程中,我经常遇到这样的场景:业务方看着模型输出的预测结果,皱着眉头问"这个结论是怎么得出来的?"作为从业者,如果我们自己都…

2026/8/15 8:32:06 阅读更多 →
SteamCMD命令行工具:精准下载与管理Steam创意工坊MOD文件

SteamCMD命令行工具:精准下载与管理Steam创意工坊MOD文件

1. 从零开始:为什么你需要SteamCMD来下载MOD?如果你是一个深度游戏玩家,尤其是钟情于那些支持创意工坊的游戏,比如《方舟:生存进化》、《腐蚀》、《泰拉瑞亚》或者《欧洲卡车模拟2》,那你一定对“订阅即下载…

2026/8/15 8:32:06 阅读更多 →
电话号码定位查询三步搞定:用 location-to-phone-number 实现手机号一键地图定位

电话号码定位查询三步搞定:用 location-to-phone-number 实现手机号一键地图定位

电话号码定位查询三步搞定:用 location-to-phone-number 实现手机号一键地图定位 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: ht…

2026/8/15 8:32:06 阅读更多 →
CPK计算公式深度解析:从统计原理到工程实践

CPK计算公式深度解析:从统计原理到工程实践

1. 项目概述:从“合格”到“卓越”的量化标尺 在制造业、质量工程乃至任何涉及过程控制的领域,我们经常听到一个词:“过程能力”。它衡量的是一个稳定生产流程,其输出结果满足规格要求的内在潜力。而CPK(Process Capab…

2026/8/15 8:31:06 阅读更多 →

日新闻

内景 空间站内部 中国空间站 太空 内仓

内景 空间站内部 中国空间站 太空 内仓

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 空间站内部 中国空间站 太空 内仓 地址:本地PC端运行(或Web…

2026/8/15 0:00:30 阅读更多 →
重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能

重新定义数据接口:3个突破性场景让通达信数据读取更智能 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 当我们面对海量金融数据时,传统的数据获取方式往往让我们陷入困境—…

2026/8/15 0:00:30 阅读更多 →
一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

一文读懂快消WMS怎么选?2026年国内外10大主流WMS品牌盘点

快消品(FMCG)是流通速度较快、竞争较为激烈的行业之一。一瓶饮料从出厂到消费者手中,往往只有几十天甚至几天的周转窗口。这决定了快消行业的仓储管理系统(WMS)与制造业、电商行业存在明显区别:它不仅需要管…

2026/8/15 0:02:30 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →