Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中的K均值算法-解释聚类标签分配步骤_Matlab_K Means - Fatal编程技术网

MATLAB中的K均值算法-解释聚类标签分配步骤

MATLAB中的K均值算法-解释聚类标签分配步骤,matlab,k-means,Matlab,K Means,我有一个课堂上的Matlab代码,教授使用该代码将每个数据点分配到最近的聚类,其中c是质心矩阵,x是数据矩阵 % norm squared of the centroids; c2 = sum(c.^2, 1); % For each data point x, computer min_j -2 * x' * c_j + c_j^2; % Note that here is implemented as max, so the difference is negate

我有一个课堂上的Matlab代码,教授使用该代码将每个数据点分配到最近的聚类,其中c是质心矩阵,x是数据矩阵

  % norm squared of the centroids; 
  c2 = sum(c.^2, 1);  

  % For each data point x, computer min_j  -2 * x' * c_j + c_j^2;
  % Note that here is implemented as max, so the difference is negated.
  tmpdiff = bsxfun(@minus, 2*x'*c, c2); 
  [val, labels] = max(tmpdiff, [], 2); 
我不确定这如何等同于此步骤的算法定义,在该步骤中,集群分配是通过

% For every centroid j and for every data point x_i
labels(i) = `argmin||x_i - c_j||^2`
有谁能给我解释一下这是如何工作的,基本上是如何计算的

min_j  -2 * x' * c_j + c_j^2 
相当于

 argmin||x_i - c_j||^2

如果我们有一个三角形,其边的长度是a,b,c,那么 我们(从报纸上)知道这一点

其中,
alpha
是尺寸为
b
的一侧与尺寸为
c
的一侧之间的角度

现在,考虑由三个顶点组成的三角形<代码> x <代码>,<代码> Cyj> <代码>和<代码> o>代码>(代码的起源> r^ n < /代码>)。写

theta
x和
c
之间的角度,我们有

 argmin_j||x-c_j||^2
 =argmin_j (||x||^2+||c_j||^2 - 2*||x||* ||c_j|| * cos(theta)  )
这等于

 argmin_j(||x||^2 + ||c||^2 - 2x^t c_j)
现在,记住,
x
在这个极小化中是常数,所以最后一个方程正好等于

argmin_j(||c_j||^2 - 2 x^t c_j)

这是您在代码中最小化的等式。

非常好。这是正确的+1.如果我可以推荐的话,可以使用类似的方法将你的方程渲染成实际的图像。这将大大提高你的答案质量。谢谢你的建议,我会尽快完成。我真希望我们可以在stackoverflow上使用Latex,就像在math甚至robotics stackexchange网站上一样……我同意。很烦人。是否支持LaTeX on Stack Overflow一直是一个争论的话题,但由于开销太大,它们不会支持LaTeX on Stack Overflow。。。没有意义,因为许多其他SE网站都支持它(数学、信号处理、电子工程、物理等)。我不会使用QuickLatex或类似的东西。如果有一天他们倒下了,答案是无用的。真正应该做的是让他们重新考虑关于StackOverflow的MathJaX。这很有意义!非常感谢。
argmin_j(||c_j||^2 - 2 x^t c_j)