news 2026/3/30 20:26:27

均值漂移聚类Mean Shift Cluster用于数据聚类,代码注释详细,适合新手学习~

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
均值漂移聚类Mean Shift Cluster用于数据聚类,代码注释详细,适合新手学习~

均值漂移聚类Mean Shift Cluster用于数据聚类,代码注释详细,适合新手学习~

均值漂移聚类这名字听起来挺学术,但说白了就是个"随大流"的算法。它的核心思想特有意思:想象你站在一片丘陵地带,蒙着眼睛往四周扔石子,听到石子落地声最大的方向就迈一步,重复这操作直到爬上山顶——这就是密度最高的地方。搞机器学习的人把这过程叫做"密度梯度上升",咱们普通人理解成"哪人多往哪挤"就行了。

先看个实际场景:假设我要把淘宝买家的消费行为数据分成不同群体。咱们不整那些虚的,直接上代码:

from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # 生成3簇数据,特意加了些重叠区域更真实 X, _ = make_blobs(n_samples=500, centers=3, cluster_std=1.8, random_state=11) # 可视化原始数据分布 plt.scatter(X[:,0], X[:,1], s=15, edgecolor='k') plt.title('原始数据分布') plt.show()

!散点图显示三个有部分重叠的簇

这段代码的关键在makeblobs,它像捏面团似的给我们生成测试数据。clusterstd参数控制着数据点的分散程度,调大这个值会让各簇之间产生更多重叠,更接近真实场景中的数据分布。

接下来上主菜:

from sklearn.cluster import MeanShift # 创建模型时要注意带宽选择,相当于决定搜索范围的大小 # 这里让算法自动估算,实际项目需要交叉验证 ms = MeanShift(bandwidth=2.5, bin_seeding=True) ms.fit(X) # 提取聚类结果 labels = ms.labels_ cluster_centers = ms.cluster_centers_ # 可视化魔法 plt.scatter(X[:,0], X[:,1], c=labels, s=15, edgecolor='k') plt.scatter(cluster_centers[:,0], cluster_centers[:,1], c='red', s=250, marker='X', edgecolor='w') plt.title('聚类结果(红叉为簇中心)') plt.show()

!显示三个被正确划分的簇,中心标记明显

重点说下bandwidth参数,这相当于算法中的"社交距离"。设置太大容易把不同群体合并,太小又会产生过多小群体。新手可以试着把这个值从1改到5,观察聚类结果的变化,比看论文管用多了。

这个算法有个特点,不用预先指定簇的数量。它像扫地机器人似的在数据空间里游走,自动发现高密度区域。但代价就是计算量较大,当数据量超过十万级时可能得换其他方法。

遇到异常值怎么办?咱们举个极端例子:

# 故意添加离群点 import numpy as np outliers = np.array([[15, 15], [-10, -5], [20, -8]]) X_with_outliers = np.vstack([X, outliers]) # 重新训练模型 ms_out = MeanShift(bandwidth=3).fit(X_with_outliers) # 可视化时用不同符号标记离群点 labels_out = ms_out.labels_ plt.scatter(X_with_outliers[:,0], X_with_outliers[:,1], c=labels_out, s=15, edgecolor='k', alpha=0.7) plt.scatter(ms_out.cluster_centers_[:,0], ms_out.cluster_centers_[:,1], c='red', s=200, marker='X') plt.title('存在离群点时的聚类效果') plt.show()

!显示三个主簇外存在孤立点

这时候会发现那些孤立的点要么自成一组,要么被忽略——具体取决于带宽设置。这种特性在欺诈检测场景中反而成了优点,可以把异常交易自动筛出来。

最后给新人提个醒:虽然sklearn的实现很方便,但处理大规模数据时记得开启cluster_all=False参数,否则内存可能爆炸。工业级应用通常会结合空间索引进行优化,不过那是进阶玩法了。下次遇到形状不规则的客户分群需求,不妨先试试这个"随大流"的方法,说不定比K-means更管用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 12:18:54

Jupyter内核切换:让Notebook识别Miniconda中的PyTorch

Jupyter内核切换:让Notebook识别Miniconda中的PyTorch 在人工智能项目开发中,你是否遇到过这样的场景?明明已经在 Conda 环境里装好了 PyTorch,也配置了 CUDA 支持,可一打开 Jupyter Notebook,import torch…

作者头像 李华
网站建设 2026/3/27 21:06:26

Miniconda vs Anaconda:谁更适合PyTorch GPU环境部署?

Miniconda vs Anaconda:谁更适合 PyTorch GPU 环境部署? 在深度学习项目日益复杂的今天,一个稳定、高效且可复现的开发环境,往往比模型结构本身更能决定实验成败。尤其是在使用 PyTorch 进行 GPU 加速训练时,Python 环…

作者头像 李华
网站建设 2026/3/27 6:56:38

RustFS x Distribution Registry,构建本地镜像仓库

容器镜像仓库是应用容器化部署的必选项,顶级玩家 Dockerhub 由于网络原因,在国内使用不是很顺畅,因此搭建一个企业专属的私有化镜像仓库就成为了企业云原生转型的关键。现在市面上有很多类似的解决方案,比如 Harbor, GitLab Conta…

作者头像 李华
网站建设 2026/3/27 4:01:55

好写作AI|当论文遇到“网感”:让你的学术思想拥有“破圈”魅力

如果你的论文读者至今仍只有导师一人,或许不是思想不够深,而是表达缺少了那份让人愿意读下去的“网感”吸引力。想象一下:一篇关于“外卖平台算法”的论文摘要,能以“困在系统里的,何止是骑手?”这样具有传…

作者头像 李华
网站建设 2026/3/27 19:57:53

GPU直通技术应用:Miniconda环境独占显卡训练

GPU直通技术应用:Miniconda环境独占显卡训练 在AI模型训练日益复杂的今天,一个常见的痛点是:明明服务器配备了高端显卡,可多个项目一跑起来就互相“打架”——显存爆了、速度忽高忽低、环境还动不动报CUDA版本不兼容。这种混乱不仅…

作者头像 李华
网站建设 2026/3/28 9:56:00

ndfapi.dll文件损坏丢失找不到 打不开软件 下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华