matlab 练手项目,DBSCAN密度聚类,关于DBSCAN的MATLAB实现的一个案例

六月ゝ 毕业季﹏ 提交于 2020-11-24 12:35:54

绪论

刚刚完成了一个关于DBSCAN的作业,由于刚开始学习MATLAB的使用便用它完成了一个练手任务,有一点想法记录下来。以便于后来重新学习这个方法和记录一些函数,同时也希望能给同学着一点思路。有问题也请留言,会不断改正。
参考博客指路:看了不少,链接挺多,有些忘了,欢迎指出改正
推荐一个基础知识点整理的比较好的博主
万勇’s Blog
https://blog.csdn.net/qiu1440528444/article/details/80763420?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160601820019195264744375%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=160601820019195264744375&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-80763420.first_rank_ecpm_v3_pc_rank_v2&utm_term=matlab+%E5%AE%9E%E7%8E%B0DBSCAN&spm=1018.2118.3001.4449



任务目标

1.生成一个双月型数据集;
2.使用KNN求出E-PS,在本实验中预先设置了Min-point =4;
3,利用DBSCAN分类,展示分类结果
4,顺便赚点币下载别人资料(手动狗头)


实验过程

1.生成双月型数据集
1.1思想
设计了一个半圆环,在matlab可以通过rand()函数在这个范围内生成随机数,
R是半径 W是圆环厚度,R+W是大圆环半径  R-W为小圆环半径
代码如下:



```tmp=[2*(r+w2)*(rand(N1,1)-0.5) (r+w2)*rand(N1,1)];   
     tmp(:,3)=sqrt(tmp(:,1).*tmp(:,1)+tmp(:,2).*tmp(:,2)); %求到原点距离
```bash

通过镜像和位移获得第二个半圆,N(生成点是可以自己定义)
完整代码资源指路:
(想下载资源没积分,救救孩子吧,等我够用就把下载需求就调最低)
https://download.csdn.net/download/Enjoy324/13137793
2求EPS
在本次实验中,由上文生成了一个200个点的双月型数据集
在这里插入图片描述





2.1如何求EPS
通过调用k近邻函数将距离最近的前五个保存在一个数组中,

[IDX,Dist]=knnsearch(A(1:numData,:),A(1,:),'k',5);

因为Dist包含到自己本身的距离,所以想用第四近邻点是【1.5】
将该点
保存在新的数组中
Kdist(1)=Dist(1,5);`


重复这个过程得到一个200*1的数组
排序后,将其作为纵坐标,,将点作为横坐标画图找转折点来确定Eps
画图如下:在这里插入图片描述
该部分完整代码指路:
https://download.csdn.net/download/Enjoy324/13137793



3.如何利用DBSCAN分类
3.1(有点累了,休息休息,再补充,希望有人看)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!