怎么用Matlab计算聚类算法的正确率问题

怎么用Matlab计算聚类算法的正确率问题,第1张

我把K-mediods的matlab代码贴出来,你好好学习一下

function label = kmedoids( data,k,start_data )

% kmedoids k中心点算法函数

% data 待聚类的数据集,每一行是一个样本数据点

% k 聚类个数

% start_data 聚类初始中心值,每一行为一个中心点,有cluster_n行

% class_idx 聚类结果,每个样本点标记的类别

% 初始化变量

n = length(data)

dist_temp1 = zeros(n,k)

dist_temp2 = zeros(n,k)

last = zeros(n,1)

a = 0

b = 0

if nargin==3

centroid = start_data

else

centroid = data(randsample(n,k),:)

end

for a = 1:k

temp1 = ones(n,1)*centroid(a,:)

dist_temp1(:,a) = sum((data-temp1).^2,2)

end

[~,label] = min(dist_temp1,[],2)

while any(label~=last)

for a = 1:k

temp2 = ones(numel(data(label==a)),1)

temp3 = data(label==a)

for b = 1:n

temp4 = temp2*data(b,:)

temp5 = sum((temp3-temp4).^2,2)

dist_temp2(b,a) = sum(temp5,1)

end

end

[~,centry_indx] = min(dist_temp2,[],1)

last = label

centroid = data(centry_indx,:)

for a = 1:k

temp1 = ones(n,1)*centroid(a,:)

dist_temp1(:,a) = sum((data-temp1).^2,2)

end

[~,label] = min(dist_temp1,[],2)

end

end

聚类分析的主要步骤

聚类分析的主要步骤

1.数据预处理,2.为衡量数据点间的相似度定义一个距离函数,3.聚类或分组,4.评估输出。

数据预处理包括选择数量,类型和特征的标度,它依靠特征选择和特征抽取,特征选择选择重要的特征,特征抽取把输入的特征转化为一个新的显著特征,它们经常被用来获取一个合适的特征集来为避免“维数灾”进行聚类,数据预处理还包括将孤立点移出数据,孤立点是不依附于一般数据行为或模型的数据,因此孤立点经常会导致有偏差的聚类结果,因此为了得到正确的聚类,我们必须将它们剔除。

既然相类似性是定义一个类的基础,那么不同数据之间在同一个特征空间相似度的衡量对于聚类步骤是很重要的,由于特征类型和特征标度的多样性,距离度量必须谨慎,它经常依赖于应用,例如,通常通过定义在特征空间的距离度量来评估不同对象的相异性,很多距离度都应用在一些不同的领域,一个简单的距离度量,如Euclidean距离,经常被用作反映不同数据间的相异性,一些有关相似性的度量,例如PMC和SMC,能够被用来特征化不同数据的概念相似性,在图像聚类上,子图图像的误差更正能够被用来衡量两个图形的相似性。

将数据对象分到不同的类中是一个很重要的步骤,数据基于不同的方法被分到不同的类中,划分方法和层次方法是聚类分析的两个主要方法,划分方法一般从初始划分和最优化一个聚类标准开始。CrispClustering,它的每一个数据都属于单独的类;FuzzyClustering,它的每个数据可能在任何一个类中,CrispClustering和FuzzyClusterin是划分方法的两个主要技术,划分方法聚类是基于某个标准产生一个嵌套的划分系列,它可以度量不同类之间的相似性或一个类的可分离性用来合并和分裂类,其他的聚类方法还包括基于密度的聚类,基于模型的聚类,基于网格的聚类。

评估聚类结果的质量是另一个重要的阶段,聚类是一个无管理的程序,也没有客观的标准来评价聚类结果,它是通过一个类有效索引来评价,一般来说,几何性质,包括类间的分离和类内部的耦合,一般都用来评价聚类结果的质量,类有效索引在决定类的数目时经常扮演了一个重要角色,类有效索引的最佳值被期望从真实的类数目中获取,一个通常的决定类数目的方法是选择一个特定的类有效索引的最佳值,这个索引能否真实的得出类的数目是判断该索引是否有效的标准,很多已经存在的标准对于相互分离的类数据集合都能得出很好的结果,但是对于复杂的数据集,却通常行不通,例如,对于交叠类的集合。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7744753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存