Mar*_*lac 6 math matlab classification vector
我想区分数据向量以找到相似的数据向量.例如:
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];
Run Code Online (Sandbox Code Playgroud)
在前面的例子中,我想区分A,B,C向量彼此相似(不相同),D,E彼此相似.结果应该类似于:A,B,C相似且D,E相似,但A,B,C组与D,E组不相似.Matlab可以做到这一点吗?我正在考虑使用一些分类算法或Kmeans,ROC等.但我不确定哪一个是最好的.
有什么建议吗?提前致谢
Bil*_*ham 10
我最喜欢的这种方法之一是聚集聚类.
首先,将所有向量连接到一个矩阵中,其中每一行都是一个单独的向量.这使得这些方法更容易使用:
F = [A; B; C; D; E];
Run Code Online (Sandbox Code Playgroud)
然后可以找到链接:
Z = linkage(F, 'ward', 'euclidean');
Run Code Online (Sandbox Code Playgroud)
这可以使用以下方式绘制:
dendrogram(Z);
Run Code Online (Sandbox Code Playgroud)

这显示了一棵树,其中底部的每个叶子是原始矢量之一.分支的长度表现出相似性和不同性.
正如你所看到的,1,2和3显示非常接近,4和5也是如此.这甚至给出了接近度的度量,并且表明向量1和3被认为比向量2和3更接近(在从百分比来看,7接近8比6的感觉是7).
这是我根据您的结果提出的解决方案:
Z = [A;B;C;D;E];
Y = pdist(Z);
matrix = SQUAREFORM(Y);
matrix_round = round(matrix);
Run Code Online (Sandbox Code Playgroud)
现在我们有了向量,我们可以根据最大值设置阈值,并决定哪个阈值最合适。
最好创建一些聚类图来显示它们之间的差异。
此致