【发布时间】:2020-08-17 04:45:58
【问题描述】:
与
X = [1.8421 4.6076;
5.6586 4.8;
6.3526 3.2909;
2.904 4.6122;
3.232 4.9399;
1.2479 4.9327]
还有
centroids = [3 3;
6 2;
8 5]
我正在尝试找到离 x 中每个点最近的质心。 我正在使用 Octave 编码,这是我的代码
K = size(centroids, 1);
idx = zeros(size(X,1), 1); %idx is the vector storing the index of the closest centroid
for e = 1: size(X,1)
difference(1, :) = X(e,:) - centroids(1,:);
min_distance = sum(difference(1,:).^2);
for j = 2:K
difference(j, :) = X(e,:) - centroids(j,:);
distance = sum(difference.^2);
if distance<min_distance
min_distance = distance;
idx(e) = centroids(j);
endif
endfor
endfor
代码有效,但我只得到
idx = 0 0 0
对于 x 的前三个条目
【问题讨论】:
-
同样的问题:
x和X不是同一个变量。您没有定义difference的大小。idx应该是列向量 6x1 ,怎么变成矩阵 3x2 ?检查idx(e) = centroids(j)两边的索引;可能您的意图是idx(e) = j而您忘记在外循环上设置 idx(e)=1?
标签: machine-learning cluster-analysis octave k-means