我想区分数据向量以找到相似的向量。例如:
A=[4,5,6,7,8];
B=[4,5,6,6,8];
C=[4,5,6,7,7];
D=[1,2,3,9,9];
E=[1,2,3,9,8];
在前面的示例中,我想区分 A、B、C 向量彼此相似(不相同),而 D、E 彼此相似。结果应该是这样的:A、B、C 相似,D、E 相似,但是 A、B、C 组与 D、E 组不相似。 matlab可以做到吗? 我在考虑使用一些分类算法或 Kmeans、ROC 等。但我不确定哪一个是最好的。
有什么建议吗?提前致谢
最佳答案
我最喜欢的处理这类事情的方法之一是 agglomerate clustering .
首先,将所有向量连接成一个矩阵,其中每一行都是一个单独的向量。这使得此类方法更易于使用:
F = [A; B; C; D; E];
然后可以找到链接:
Z = linkage(F, 'ward', 'euclidean');
这可以用以下方法绘制:
dendrogram(Z);
这显示了一棵树,其中底部的每个叶子都是原始向量之一。分支的长度显示相似点和不同点。
如您所见,1、2 和 3 显示为非常接近,4 和 5 也是如此。这甚至给出了接近程度的度量,并表明向量 1 和 3 被认为比向量 2 和 2 更接近3(从某种意义上说,7 比 8 更接近 8,而不是 6 比 7)。
关于math - 确定一些向量有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064861/