我有一个数据集,其中包含分类(名义和序数)和数字属性。我想使用这些混合属性来计算我的观察结果的(不)相似度矩阵。使用daisy() http://stat.ethz.ch/R-manual/R-patched/library/cluster/html/daisy.htmlR中的cluster包函数,我可以很容易地得到相异矩阵,如下所示:
if(!require("cluster")) { install.packages("cluster"); require("cluster") }
data(flower)
as.matrix(daisy(flower, metric = "gower"))
这使用高尔度量来处理名义变量。Python 是否有相当于daisy()
R 中的函数?
或者也许任何其他模块函数允许使用高尔度量或类似的东西来计算具有混合(名义、数字)属性的数据集的(不)相似度矩阵?
仅实现与 pdist 一起使用的 Gower 函数是不够的。
pdist 在内部进行多次数值转换,如果您使用包含混合数据的矩阵,这些转换将会失败。
我根据原始论文实现了 Gower 函数,以及 pdist 模块中所需的相应调整(我不能简单地覆盖这些函数,因为 pdist 模块中的 defs 是私有的)。
到目前为止我得到的结果与 R 的 daisy 函数相同。
源代码可以在这个jupyter笔记本上找到:https://sourceforge.net/projects/gower-distance-4python/files/ https://sourceforge.net/projects/gower-distance-4python/files/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)