R的群集程序包中的daisy()的Python等效项

朱巴卜

我有一个包含分类(标称和序数)和数值属性的数据集。我想使用这些混合属性来计算我的观察结果的(不相似度)矩阵。使用R中群集程序包daisy()函数,我可以很容易地获得一个相异矩阵,如下所示:

if(!require("cluster")) { install.packages("cluster");  require("cluster") }
data(flower)
as.matrix(daisy(flower, metric = "gower"))

这使用gower度量标准来处理名义变量。在R中有与该daisy()函数等效的Python吗?

还是任何其他允许使用Gower度量标准或类似方法为具有混合(标称,数字)属性的数据集计算(不相似度)矩阵的模块功能?

伊利

相信您正在寻找scipy.spatial.distance.pdist

如果您实现了一个可在一对观测值上计算高尔距离的函数,则可以将该函数传递给pdist,它将成对应用,并返回成对距离的矩阵。高尔距离似乎不是内置选项之一。

同样,如果单个观测值具有混合属性,则可以定义自己的函数,例如,对数字属性的子集使用欧几里得距离,对分类属性的子集使用高尔距离,然后将它们相加-或对于您的应用程序而言,对您意味着什么的任何其他实现,都可以计算两个孤立的观测值之间的距离。

对于使用Python进行群集化,通常您希望使用scikits.learn此问答页面确切地讨论了将自定义距离度量(在您的情况下为Gower)与scikits一起使用的问题-这似乎是不可能的。

您可以使用pdist该链接的答案页面上的实现提供的选择之一,也可以使用Gower相似性实现一个功能并使用它。但是,如果您想从scikits中获得现成的群集工具,则似乎不可能直接实现。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章