Kmeans脚本最后一行D.^0.5技术问询:为何取0.5次方?
解答:Kmeans脚本中
D.^0.5里的0.5含义 Hey there! Let's unpack that 0.5 in your K-means script clearly:
首先,先明确Matlab的kmeans函数返回的D是什么:
当你运行
[m,C,sumd,D] = kmeans(data,K);时,输出参数D是一个m×K的矩阵,其中每个元素D(i,j)代表第i个样本到第j个聚类中心的平方欧氏距离。
Matlab的kmeans默认用欧氏距离作为度量,但为了计算效率,内部会优先使用平方欧氏距离——毕竟在比较距离大小(用来分配样本到最近聚类)时,平方距离和实际距离的排序是完全一致的,省去开根号的步骤能加快运算速度。
那你脚本里的D.^0.5是什么意思呢?
^0.5在Matlab里等价于对矩阵中的每个元素取平方根(和sqrt(D)效果完全一致)。- 这么做的目的是把平方距离转换回我们日常认知的真实欧氏距离,也就是样本到聚类中心的直线距离。
结合你代码里的输出提示:
display(' IDX |JARAK KE C1|JARAK KE C2|JARAK KE C3');
这里的JARAK是印尼语的“距离”,显然你想要展示的是直观的实际距离值,而不是平方后的抽象数值。比如如果D里某个值是2.25(平方距离),D.^0.5后就会变成1.5,这才是大家能直接理解的距离大小。
举个简单例子:
假设某样本到C1的平方距离是4,D.^0.5后得到2,这就是该样本到C1的真实直线距离,比直接看4要直观得多。
内容的提问来源于stack exchange,提问作者Nisa h
相关产品推荐
相关产品推荐

