聚类(matlab实践)
来源:互联网 发布:文字抓取软件 编辑:程序博客网 时间:2024/06/06 08:56
k-means 算法
K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
k个初始类聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。如果在一次迭代前后,J的值没有发生变化,说明算法已经收敛。
算法过程如下:
1)从N个文档随机选取K个文档作为质心
2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类
3)重新计算已经得到的各个类的质心
4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束
matlab代码
%第一类数据mu1=[0 0 0]; %均值S1=[0.3 0 0;0 0.35 0;0 0 0.3]; %协方差data1=mvnrnd(mu1,S1,100); %产生高斯分布数据%%第二类数据mu2=[1.25 1.25 1.25];S2=[0.3 0 0;0 0.35 0;0 0 0.3];data2=mvnrnd(mu2,S2,100);%第三个类数据mu3=[-1.25 1.25 -1.25];S3=[0.3 0 0;0 0.35 0;0 0 0.3];data3=mvnrnd(mu3,S3,100);%显示数据plot3(data1(:,1),data1(:,2),data1(:,3),'+');hold on;plot3(data2(:,1),data2(:,2),data2(:,3),'r+');plot3(data3(:,1),data3(:,2),data3(:,3),'g+');grid on;%三类数据合成一个不带标号的数据类data=[data1;data2;data3]; %这里的data是不带标号的%k-means聚类[u re]=KMeans(data,3); %最后产生带标号的数据,标号在所有数据的最后,意思就是数据再加一维度[m n]=size(re);%最后显示聚类后的数据figure;hold on;for i=1:m if re(i,4)==1 plot3(re(i,1),re(i,2),re(i,3),'ro'); elseif re(i,4)==2 plot3(re(i,1),re(i,2),re(i,3),'go'); else plot3(re(i,1),re(i,2),re(i,3),'bo'); endendgrid on;
显示三类原始数据:
显示聚类后的数据:
阅读全文
0 0
- 聚类(matlab实践)
- KNN算法(MATLAB实践)
- PCA降维(MATLAB实践)
- 【Matlab】Matlab实践
- Matlab实践备忘笔记
- (转)Matlab编程实现FFT实践及频谱分析
- 胡寿松Matlab源代码(第五版实践笔记)
- MATLAB 图像处理小实践
- FingerPrint Fuzzy Vault Matlab实践
- MATLAB数学实践与建模
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part8(完结篇)
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part1
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part3
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part5
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part4
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part6
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part7
- VBA处理文件框架代码 【第一部分:处理流程】
- 架构师必看书籍
- js内存泄漏
- R语言中之分布函数
- DQL 数据查询语句
- 聚类(matlab实践)
- POJ 3311 Hie with the Pie(经典TSP问题)
- kbe之ubuntu下的编译
- VBA处理文件框架代码 【第二部分:变量定义】
- header函数 自动下载文件
- intellij配置maven+SSM+redis(一)
- celery笔记
- java 集合排序
- Python使用dir获取类的方法列表