4

list_of_objectsを使用して一緒にクラスター化するオブジェクトのリストがありますscipy.cluster.hierarchy.linkage()。入力としてscipy.cluster.hierarchy.linkage()、圧縮された距離行列を取ります。itertools.combinations一意の組み合わせのみを比較するために使用して、縮約距離行列を計算します。

distances = map(do_comparison, itertools.combinations(list_of_objects, 2))

それでも、サイズが大きくなるにつれて、かかる時間は急速に増加しますlist_of_objects。これを行うより速い方法はありますか?

4

2 に答える 2

3

距離がもはや問題にならない重要なカットオフがある場合 (データ依存の回答)、 のスペア行列表現を使用してみることができますscipy.spatial.KDTree.sparse_distance_matrix。KDTree の知識により、より長い範囲の距離を計算する時間が大幅に短縮されます。

クラスタリングで機能させるには、次の点に注意してください。

2 つの KDTree 間の距離行列を計算し、max_distance より大きい距離はゼロとして残します

ゼロを に変更しますnp.inf

于 2013-11-01T14:46:01.573 に答える