0

我想在matlab中使用自定义距离的链接函数。

我的距离函数的形式是:

Distance = pdist(matrix,@mydistance); 

所以给定一个

matrix = rand(132,18)

距离将是一个向量[1x8646];

D_matrix = squareform(Distance,'tomatrix');

是一个矩阵132x132,包含 te 行之间的所有成对距离matrix

我怎样才能mydistance嵌入linkage

4

2 回答 2

0

您可以使用这样的调用linkage

Z = linkage(Data,'single','@mydistance')

其中“单一”也可以是此处描述的任何其他集群合并方法:http: //www.mathworks.com/help/stats/linkage.html

换句话说,只需将您的函数句柄放在一个字符串中并将其作为第三个参数传递给linkage. 但是,您不能'savememory'linkage使用自定义距离函数时使用该函数。这让我对我的 300,000 x 6 数据集感到有些沮丧。我认为解决方案是将其投影到定义欧几里德距离且有意义的某个空间,但我们将看看它是如何进行的。

于 2015-10-13T03:47:00.187 回答
0

除了使用

tree = linkage(Data,'single','@mydistance')

就像模仿者建议的那样,您也可以使用

dissimilarity = pdist(Data,@mydistance);
tree = linkage(dissimilarity,'single');

后者的好处是允许 Data 成为带有 @mydistance 的对象数组,使用对象作为参数。

于 2017-05-21T13:22:05.280 回答