【发布时间】:2019-05-19 19:40:54
【问题描述】:
我正在尝试使用具有自定义距离度量(即亲和力)的凝聚聚类,因为我想通过序列相似性而不是像欧几里德距离这样没有意义的东西来聚类整数序列。
我的数据看起来像这样
>> dat.values
array([[860, 261, 240, ..., 300, 241, 1],
[860, 840, 860, ..., 860, 240, 1],
[260, 860, 260, ..., 260, 220, 1],
...,
[260, 260, 260, ..., 260, 260, 1],
[260, 860, 260, ..., 840, 860, 1],
[280, 240, 241, ..., 240, 260, 1]])
我创建了以下相似度函数
def sim(x, y):
return np.sum(np.equal(np.array(x), np.array(y)))/len(x)
所以我只用 numpy 返回两个序列中匹配值的百分比,然后进行以下调用
cluster = AgglomerativeClustering(n_clusters=5, affinity=sim, linkage='average')
cluster.fit(dat.values)
但我收到一个错误提示
TypeError: sim() missing 1 required positional argument: 'y'
我不确定为什么会出现此错误;我认为该函数会将成对的行聚集在一起,以便传递每个必需的参数。
对此的任何帮助将不胜感激
【问题讨论】:
标签: python scikit-learn hierarchical-clustering sklearn-pandas