我正在实现一个聚类算法,它需要计算每对数据点之间的距离,其中每个数据点都作为一行存储在pd.数据帧. 总的计算是按O(n^2)的顺序增长的,为了有效地计算,我必须小心谨慎。在
什么是做我想做的事的有效方法?在
假设我在一个数据帧中有4个数据点:
#<inputtable tin>
Id Label
0 Michael
1 Jim
2 Pam
3 Dwight
我需要运行一个定制函数similar(x,y)
来计算每两点组合(2,4)~6之间的折扣,我的输出应该如下所示:
我所做的:
我试着用pd合并为表生成笛卡尔积
data = pd.DataFrame([[0, 'Michael'], [1, 'Jim'], [2, 'Pam'], [3, 'Dwight']], columns=['Id', 'Label'])
data['tmp'] = 1
result = pd.merge(data, data, left_on='tmp', right_on='tmp')
result = result[result['Id_x'] != result['Id_y']]
print result
不过,这看起来真的像是一个围绕合并的黑客,我也尝试了itertools和combination,这对Pandas不太好用。在
有谁知道一种更有效的方法来使用定制的相似距离函数来完成这种“聚类工作”?我还计划在盖菲分析这一点,我不知道是否有更好的解决办法。在
首先
我解决不了这个问题。在
itertools.combination
^{pr2}$np.triu_indices
相关问题 更多 >
编程相关推荐