matlab实现Kmeans聚类
K-means聚类的建模与求解
1.建模前准备
建模前,我们小组通过阅读文献,研究讨论了K-means的实现原理和应用场景,认为K-means算法在求解用户出行分区信息上具有可行性。
2.模型建立
通过对问题的分析,我们将k-means聚类模型建立如下:
3.模型求解及检验
我们分别通过调用matlab的K-means函数方法以及底层实现K-means方法,实现了k-means算法。
对于借助matlab函数的k-means函数实现的方式,我们最终得到的聚类结果如下:
图4 Kmeans结果图(调用函数)
对于底层实现K-means的方式,我们得到的聚类结果如下:
图5 Kmeans结果图(底层实现)
将两组数据进行对比分析,我们可以发现:
- 共性:相邻地区的点往往处于同一个类下,说明我们的K-means算法从实验效果上来看具有可行性。
- 异性:两组聚类效果并不完全一致。我们小组通过讨论分析,我们意识到K-means算法对于初始类的选择尤为敏感,而两种实现方式的初始类选择不同,所以聚类结果有略微差距。
4.项目代码
-
function [index,C,sumd,dim]=K_means(data,k,threshold,N)
-
%设定最大的迭代次数
-
iter=0;
-
dim=size(data);%计算样本维度
-
index=zeros(dim(1),1);
-
dist=zeros(k,1);
-
C = data(randperm(dim(1), k), :);%随机选择K个聚类中心
-
while 1
-
sumd=zeros(dim(1),1);
-
for i=1:dim(1)
-
for j=1:k
-
X=[data(i,:);C(j,:)];
-
dist(j)=get_distance(X,2) %计算样本点与聚类中心点之间的欧氏距离
-
end
-
[d,idx]=min(dist);
-
sumd(i)=d;
-
index(i)=idx;
-
end
-
new_C=zeros(k,dim(2));%新的类中心
-
c=0;
-
for i=1:k
-
count=0;
-
for j=1:dim(1)
-
if index(j)==i
-
count=count 1;
-
new_C(i,:)=new_C(i,:) data(j,:);
-
end
-
end
-
new_C(i, :) = new_C(i, :) / count; %¾聚类中心求均值
-
Y = [new_C(i, :);C(i, :)];
-
if get_distance(Y, 2)<= threshold
-
c = c 1;
-
end
-
end
-
iter = iter 1;
-
if c == k
-
break
-
elseif iter > N %大于迭代次数就退出
-
break
-
else
-
C = new_C;
-
end
-
end
-
end
-
-
function dist = get_distance(X,p)
-
%计算两点之间的相似度
-
dim = size(X);
-
sum = 0;
-
for i = 1:dim(2)
-
sum = sum abs(X(1,i)-X(2,i))^p;
-
end
-
dist = sum^(1/p);
-
end
-
-
-
function r=plot_data(data,index,k)
-
figure
-
color_index=[[1,0,0],[0,1,0],[0,0,1],[0.5,0.5,0.5],[0,0,0],[1,1,0],[0.5,0.16,0.16],[0,1,1],[0.63,0.13,0.94],[1,0,1]];
-
for j=1:k
-
for i=1:length(data(:,1))
-
if index(i)==j
-
plot(data(i,1),data(i,2),'color',color_index(j))
-
end
-
end
-
end
-
end
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghffei
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13