【发布时间】:2014-04-13 09:16:12
【问题描述】:
我对 Matlab 很陌生,这是我在给定数据集中的聚类内差异的代码。
这段代码效率很低,我的电脑几乎因为在30x4 dataset上运行而崩溃。
谁能帮我做一个更好的版本?
这是我使用的代码。
function [W] = WIC( X , IDX , N , C )
W = zeros( N , 1 );
kclas = unique(IDX);
count = histc( IDX(:) , kclas );
for i =1:N
for j=1:length(X)
while IDX(j)==i
W = sum( ( X(j,:) - C(i,:) ).^2 );
end
end
end
W = W .* count;
end
【问题讨论】:
-
也与我们分享调用脚本吗?至少是函数输入的大小?
-
首先我在 20x3 数值矩阵上使用 K-means 保持编号。簇数为 2。
-
然后我使用了kmeans返回的IDX(索引数组)和C(簇质心)作为WIC的输入参数
-
您的代码错误,因为 W 在每个循环步骤中都会被覆盖。