K均值聚类

%

距离用传统欧式距离,分成两类[cidx2,cmeans2,sumd2,D2] =

kmeans(X,2,'dist','sqEuclidean');

P2 = figure;clf;

[silh2,h2] = silhouette(X,cidx2,'sqeuclidean');

从轮廓图上面看,第二类结果比较好,但是第一类有部分数据表现不佳。有相当部分的点落在0.8以下。

分层聚类

eucD = pdist(X,'euclidean');

clustTreeEuc = linkage(eucD,'average');

cophenet(clustTreeEuc,eucD);

P3 = figure;clf;

[h,nodes] = dendrogram(clustTreeEuc,20);

set(gca,'TickDir','out','TickLength',[.002 0],'XTickLabel',[]);

可以选择dendrogram显示的结点数目,这里选择20 。结果显示可能可以分成三类

重新调用K均值法

改为分成三类

[cidx3,cmeans3,sumd3,D3] =

kmeans(X,3,'dist','sqEuclidean');

P4 = figure;clf;

[silh3,h3] = silhouette(X,cidx3,'sqeuclidean');

图上看,比前面的结果略有改善。

将分类的结果展示出来

P5 = figure;clf

ptsymb = {'bo','ro','go',',mo','c+'};

MarkFace = {[0 0 1],[.8 0 0],[0 .5 0]};

hold on

for i =1:3

clust =

find(cidx3 == i);

plot(X(clust,1),X(clust,2),ptsymb{i},'MarkerSize',3,'MarkerFace',MarkFace{i},'MarkerEdgeColor','black');

plot(cmeans3(i,1),cmeans3(i,2),ptsymb{i},'MarkerSize',10,'MarkerFace',MarkFace{i});

end

hold off

运用高斯混合分布模型进行聚类分析

分别用分布图、热能图和概率图展示结果 等高线

% 等高线

options = statset('Display','off');

gm = gmdistribution.fit(X,3,'Options',options);

P6 = figure;clf

scatter(X(:,1),X(:,2),10,'ro');

hold on

ezcontour(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);

hold off

P7 = figure;clf

scatter(X(:,1),X(:,2),10,'ro');

hold on

ezsurf(@(x,y) pdf(gm,[x,y]),[-15 15],[-15 10]);

hold off

view(33,24)

热能图

cluster1 = (cidx3 == 1);

cluster3 = (cidx3 == 2);

% 通过观察,K均值方法的第二类是gm的第三类cluster2

= (cidx3 == 3);

% 计算分类概率

P = posterior(gm,X);

P8 = figure;clf

plot3(X(cluster1,1),X(cluster1,2),P(cluster1,1),'r.')

grid on;hold on

plot3(X(cluster2,1),X(cluster2,2),P(cluster2,2),'bo')

plot3(X(cluster3,1),X(cluster3,2),P(cluster3,3),'g*')

legend('第 1 类','第 2 类','第 3 类','Location','NW')

clrmap = jet(80); colormap(clrmap(9:72,:))

ylabel(colorbar,'Component 1 Posterior Probability')

view(-45,20);

% 第三类点部分概率值较低,可能需要其他数据来进行分析。

% 概率图

P9 = figure;clf

[~,order] = sort(P(:,1));

plot(1:size(X,1),P(order,1),'r-',1:size(X,1),P(order,2),'b-',1:size(X,1),P(order,3),'y-');

legend({'Cluster 1 Score' 'Cluster 2 Score' 'Cluster 3

Score'},'location','NW');

ylabel('Cluster Membership Score');

xlabel('Point Ranking');

通过AIC准则寻找最优的分类数

高斯混合模型法的最大好处是给出分类好坏的标准

AIC = zeros(1,4);

NlogL = AIC;

GM = cell(1,4);

for k = 1:4

GM{k} =

gmdistribution.fit(X,k);

AIC(k)=

GM{k}.AIC;

NlogL(k) =

GM{k}.NlogL;

end

[minAIC,numComponents] = min(AIC);

按AIC准则给出的最优分类数为: 3 对应的AIC值为: 8647.63

后记

(1)pluskid指出K均值算法的初值对结果很重要,但是在运行时还没有发现类似的结果。也许Mathworks对该算法进行过优化。有时间会仔细研究下代码,将结果放上来。

聚类分析 距离 matlab,用MATLAB做聚类分析相关推荐

  1. matlab调用kmeans_matlab做聚类分析(k-means)

    基本函数使用方法:Idx=Kmeans(X,K) 对矩阵X进行分类且为K类:假设X为m*n矩阵,n为特征数,m为样本数目,则输出参数Idx为m个整数,且属于1到K之间的数.[Idx,C]=Kmeans ...

  2. matlab 自定义距离函数,用MATLAB做聚类分析时非常有用的自定义距离函数和标准化函数...

    聚类分析中,经常遇到观测值缺失的情况. 例如统计历史降水资料时,某个月的资料缺失了,这时用MATLAB做聚类分析时, 就需要自定义距离函数,处理nan的问题. 下面是相关的MATLAB函数,里面有例子 ...

  3. matlab求距离判别函数,马氏距离判别法matlab

    -2.7137 -3.9604 2.两个总体协方差矩阵不相等 在MATLAB中mahal 计算马氏距离平方 d = mahal(Y,X) 输入:Y是要判别的 样本点,通常是矩阵Ymn X是已知总体的. ...

  4. matlab设计风电机外部控制器,【matlab编程代做】步进电机控制器设计

    <[matlab编程代做]步进电机控制器设计>由会员分享,可在线阅读,更多相关<[matlab编程代做]步进电机控制器设计(8页珍藏版)>请在人人文库网上搜索. 1.步进电机控 ...

  5. MATLAB符号变量做矩阵运算出现conj()

    MATLAB符号变量做矩阵运算出现conj() 这两天在做矩阵运算时,发现用符号变量syms时候会出现conj函数,导致结果算不出来. 查了一下后发现[]'代表的是共轭转置,结果会以共轭形式表现,改成 ...

  6. hata模型仿真matlab程序,Okumura-Hata模型损耗信道仿真源码程序|matlab assignment代做...

    核心提示:Okumura-Hata模型损耗信道仿真源码程序|matlab assignment代做... Okumura-Hata模型损耗信道仿真源码程序|matlab assignment代做 fu ...

  7. 机器学习之MATLAB代码--SSA-CNN-BiLSTM做电池容量预测(十)

    机器学习之MATLAB代码--SSA-CNN-BiLSTM做电池容量预测(十) 代码 数据 结果 代码 代码按照如下顺序: 1. clc close all clear alldata=xlsread ...

  8. matlab上确界距离,常见距离公式的MATLAB代码(一)

    常见距离公式的MATLAB代码(一) 大家好! 最近在研究小样本聚类,作为一个初学者,首先肯定是学习一下它的预备知识距离公式啦~在了解了各种距离公式的定义之后,想要看下它们的代码是怎么写的,但是网上大 ...

  9. 常见距离公式的MATLAB代码(一)

    常见距离公式的MATLAB代码(一) 大家好! 最近在研究小样本聚类,作为一个初学者,首先肯定是学习一下它的预备知识距离公式啦~在了解了各种距离公式的定义之后,想要看下它们的代码是怎么写的,但是网上大 ...

  10. matlab怎么把导入的数据拟合,matlab曲线拟合怎么做,来研究下吧

    Matlab是一个在数学领域中使用广泛的软件.它有很高的处理数据的能力.下面,小编就给大家讲解一下matlab曲线拟合怎么做. 工具/材料 matlab7.0及以上版本 操作方法 01 第一步,打开m ...

最新文章

  1. 软件工程师的发明家—从发明家的视角分析软件
  2. Android踩坑日记:自定义水平和圆形ProgressBar样式
  3. 更改Ubuntu终端复制和粘贴的快捷键
  4. Spring Boot整合批量文件下载功能
  5. 算法题10 最长等差序列问题
  6. java数据结构--最大堆
  7. Android Studio NDK初探
  8. 谷歌首页被别的网站篡改
  9. (二)NI采集卡应用学习:使用NI MAX创建测量任务及常见错误
  10. 安装PSPNet 遇到的问题
  11. Java计算机毕业设计电竞教育公司源码+系统+数据库+lw文档
  12. 华为服务器串号官网查询系统,查询服务器序列号
  13. 通信协议之一线协议(1-Wire)解析
  14. php word替换换行符,word换行替换
  15. 塞班系统更新服务器,塞班系统又更新了,又更新了,仿佛回到十年前!
  16. 链家租房数据抓取流程、分析
  17. 多部民族电影在移动电影院App首映发布成功
  18. Fastboot的使用简单教程
  19. MNS支持JMS协议的方案
  20. 这就是你要的廉价,廉价版iPhoneX到底便宜在哪?

热门文章

  1. stata中安装meta分析模块
  2. Ubuntu16.04 安装国内版火狐浏览器,同步标签
  3. ps保存psd后图层全没了_ps保存成psd格式后,再打开就是一张图片而不显图层,怎么办啊??急!!...
  4. 关于Navicat 数据库一直激活不成功的解决方法
  5. pom文件project爆红
  6. 视频中场的概念(1080I和1080P)和BT601/656/709/1120/2020/2077
  7. 百度云盘资源下载器分享【只要有分享地址+提取码】
  8. Matlab R2019a Win64位 迅雷下载链接
  9. STM32 OSAL操作系统抽象层的移植
  10. 面经 | 靠一份PPT做自我介绍,成功拿下了互联网名企offer