我有一个包含字符串值的分类属性。其中三个包含dayname(mon---sun)monthname和time interval(morning-午后-傍晚),另外两个是我前面提到的地区和街道名称。其次是性别、角色、评论(这是一个预定义的固定字段,有good、bad、strong agree等值)姓氏和first我的名字目的是将它们聚集在一起并将其形象化。我用这个WEKA应用了k-均值聚类,但是它不起作用。 现在我希望对它应用层次聚类。我发现了这个密码:
import scipy
import scipy.cluster.hierarchy as sch
X = scipy.randn(100, 2) # 100 2-dimensional observations
d = sch.distance.pdist(X) # vector of (100 choose 2) pairwise distances
L = sch.linkage(d, method='complete')
ind = sch.fcluster(L, 0.5*d.max(), 'distance')
然而,上面代码中的X是数字;我有分类数据。
有什么方法可以让我用大量的分类数据来计算距离吗?
换句话说,我可以使用字符串值的分类数据来查找距离吗?
我会用这个距离来表示sch.linkage(d, method='complete')
另一种可能性是使用汉明距离。在
如果你的分类数据由一个字符表示,例如:“m”/“f”,那么它可能就是你要找的。在
https://en.wikipedia.org/wiki/Hamming_distance
https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.pdist.html#scipy.spatial.distance.pdist
我想我们已经确定了问题所在:您将
X
值保持原样,即字符串数据。您可以将这些传递给pdist
,但还必须为距离度量提供一个2进制函数(2个输入,数字输出)。在最简单的方法是相等的分类有0个距离;其他的都是1。你可以用
如果您想知道其他类的区别,只需编写逻辑以返回所需的距离,将其包装在一个函数中,然后将函数名传递给
pdist
。我们对此无能为力,因为您没有告诉我们您的类或模型语义。在这能让你动起来吗?在
相关问题 更多 >
编程相关推荐