news 2026/9/12 14:11:05

这个DBSCAN案例实现得挺有意思。咱们直接上代码,边看边聊。首先得准备点测试数据,用三维正态分布随机数生成三个簇

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
这个DBSCAN案例实现得挺有意思。咱们直接上代码,边看边聊。首先得准备点测试数据,用三维正态分布随机数生成三个簇

DBSCAN聚类(Density-Based Spatial Clustering of Application with Noise) 设定距离阈值、最小相邻观测数进行聚类,得到每个数据的聚类结果,无聚类中心 案例提供了非常详细的备注,智能化出2维3维聚类图,自动根据聚类结果添加相应多种类的颜色 Matlab代码,备注详细,替换自己数据即可 温馨提示:联系请考虑是否需要,(Example_61)

% 生成三簇三维数据(可替换为自己的数据矩阵) mu = [1 2 3; 4 5 6; 7 8 9]; % 各维度均值 sigma = cat(3,[1 1 1],[0.5 0.5 0.5],[2 2 2]); % 协方差矩阵 data = [mvnrnd(mu(1,:),sigma(:,:,1),200); mvnrnd(mu(2,:),sigma(:,:,2),150); mvnrnd(mu(3,:),sigma(:,:,3),100)];

生成的点云在空间里呈现不同密度分布,第三簇故意把协方差调大,让数据更分散。接下来是核心的DBSCAN函数:

function [IDX, isNoise] = DBSCAN(data, epsilon, minPts) [m,n] = size(data); visited = false(m,1); IDX = zeros(m,1); cluster = 1; for i = 1:m if ~visited(i) visited(i) = true; neighbors = regionQuery(data,i,epsilon); if numel(neighbors) < minPts IDX(i) = -1; % 标记为噪声 isNoise(i) = true; else expandCluster(i,neighbors,cluster,epsilon,minPts); cluster = cluster + 1; end end end % 子函数处理区域查询 function neighbors = regionQuery(~,pointIdx,eps) distances = sqrt(sum((data - data(pointIdx,:)).^2,2)); neighbors = find(distances <= eps); end end

这个实现有几个亮点:1)用regionQuery子函数封装距离计算,方便维护;2)通过visited数组避免重复访问;3)噪声点直接标记为-1。不过要注意,原数据量大的时候计算欧氏距离可能会慢,可以考虑预先计算距离矩阵。

可视化部分做得挺智能,自动判断维度生成对应图形:

% 动态生成颜色映射(支持任意数量簇) colors = hsv(max(IDX)); colors = [colors; 0.7 0.7 0.7]; % 噪声点用灰色 if size(data,2) == 2 scatter(data(:,1), data(:,2), 36, colors(IDX,:), 'filled'); else scatter3(data(:,1),data(:,2),data(:,3), 40, colors(IDX,:), 'filled'); end

这里用hsv色相环自动生成鲜艳颜色,再用灰度表示噪声。三维可视化用scatter3直接处理,颜色映射逻辑和二维保持一致。试跑结果可以看到三个主簇和边缘的噪声点,第三簇因为初始设置协方差较大,边界区域有些点可能被识别为噪声。

实际使用时替换数据矩阵就行,建议先做标准化处理:

data = zscore(your_data); % 消除量纲影响 epsilon = 0.5; % 根据数据分布调整 minPts = 10; % 密度阈值

遇到过参数调优的问题?可以试试这个技巧:画出k-距离曲线(取第minPts近邻的距离排序),拐点位置通常是比较合适的epsilon值。这个案例没实现但值得补充,能帮助新手快速确定参数范围。

最后输出结果中,簇标签从1开始连续编号,-1表示噪声。处理高维数据时虽然只能显示三维投影,但聚类标签本身保留着完整信息,可以导出做进一步分析。

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

导师推荐!9款AI论文写作软件测评:本科生毕业论文必备

导师推荐&#xff01;9款AI论文写作软件测评&#xff1a;本科生毕业论文必备 2025年AI论文写作工具测评&#xff1a;为什么你需要这份榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅…

作者头像 李华
网站建设 2026/9/10 12:42:07

【毕业设计】基于随机森林的贷款可能性预测系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/2 22:38:41

深度学习毕设项目:基于随机森林的贷款可能性预测系统实现

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/9/7 10:51:35

2026年IT行业技术发展前瞻:七大趋势将重塑数字未来

目录 一、人工智能的深度普及与行业融合 1.1 AI原生应用成为主流 1.2 多模态AI的突破性进展 二、量子计算的商业化应用初现端倪 2.1 量子优势在特定领域的实现 2.2 量子-经典混合计算架构 三、边缘计算的全面爆发 3.1 边缘AI的普及 3.2 5G-Advanced与边缘计算的深度融…

作者头像 李华