失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【数学建模】聚类算法+Spss实现+Matlab代码实现

【数学建模】聚类算法+Spss实现+Matlab代码实现

时间:2024-01-07 15:52:51

相关推荐

【数学建模】聚类算法+Spss实现+Matlab代码实现

文章目录

一、聚类算法原理二、Spss实现聚类三、Matlab实现聚类

图片来源于清风老师视频

b站地址:数学建模学习交流

一、聚类算法原理


二、Spss实现聚类


三、Matlab实现聚类

1.创建DBSCAN.m文件内容如下:

function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)C=0;n=size(X,1);IDX=zeros(n,1); % 初始化全部为0,即全部为噪音点D=pdist2(X,X);visited=false(n,1);isnoise=false(n,1);for i=1:nif ~visited(i)visited(i)=true;Neighbors=RegionQuery(i);if numel(Neighbors)<MinPts% X(i,:) is NOISEisnoise(i)=true;elseC=C+1;ExpandCluster(i,Neighbors,C);endendendfunction ExpandCluster(i,Neighbors,C)IDX(i)=C;k = 1;while truej = Neighbors(k);if ~visited(j)visited(j)=true;Neighbors2=RegionQuery(j);if numel(Neighbors2)>=MinPtsNeighbors=[Neighbors Neighbors2]; %#okendendif IDX(j)==0IDX(j)=C;endk = k + 1;if k > numel(Neighbors)break;endendendfunction Neighbors=RegionQuery(i)Neighbors=find(D(i,:)<=epsilon);endend

2.创建PlotClusterinResult.m文件内容如下:

function PlotClusterinResult(X, IDX)k=max(IDX);Colors=hsv(k);Legends = {};for i=0:kXi=X(IDX==i,:);if i~=0Style = 'x';MarkerSize = 8;Color = Colors(i,:);Legends{end+1} = ['Cluster #' num2str(i)];elseStyle = 'o';MarkerSize = 6;Color = [0 0 0];if ~isempty(Xi)Legends{end+1} = 'Noise';endendif ~isempty(Xi)plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);endhold on;endhold off;axis equal;grid on;legend(Legends);legend('Location', 'NorthEastOutside');end

3.创建数据文件mydata.mat内容为2列n行(下面是随机创建的数据):

4.最后,创建main.m文件内容如下:

clc;clear;close all;%% Load Dataload mydata;%% Run DBSCAN Clustering Algorithmepsilon=0.3;MinPts=10;IDX=DBSCAN(X,epsilon,MinPts);%% Plot Results% 如果只要两个指标的话就可以画图PlotClusterinResult(X, IDX);title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);

5.运行main.m文件,效果如下:


如果觉得《【数学建模】聚类算法+Spss实现+Matlab代码实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。