
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
您好,K-mean聚类算法是一种常用的无监督学习算法,能够将数据集分成k个簇,每个簇内的数据点相似度较高,而不同簇之间的相似度较低。在实际应用中,K-mean聚类算法的准确率往往不会达到100%。以下是可能导致K-mean聚类准确率不达100%的原因:1. 数据集不完整:如果数据集中存在缺失值、异常值或者噪声等问题,那么K-mean聚类算法的准确率就会受到影响。
2. 簇的数量不合理:如果簇的数量选择不合理,例如选择的簇的数量过多或者过少,那么K-mean聚类算法的准确率就会受到影响。
3. 初始点的选择不合理:K-mean聚类算法的准确率还受到初始点的选择影响。如果初始点的选择不合理,那么K-mean聚类算法的准确率就会受到影响。
4. 数据集分布不均匀:如果数据集的分布不均匀,例如某些簇内的数据点数量较少,那么K-mean聚类算法的准确率就会受到影响。
因此,K-mean聚类算法的准确率不可能达到100%。在实际应用中,需要根据具体情况选择合适的算法和参数,以达到较高的准确率。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)