【发布时间】:2016-07-20 17:16:45
【问题描述】:
我有一个 (n_sample x 2) 数组,我想使用 sklearn.neighbors.KDTree 中的 KDTree 对它们进行聚类。
我有这段示例代码:
from sklearn.neighbors import KDTree
import numpy as np
np.random.seed(0)
X = np.random.random((10, 2))
tree = KDTree(X, leaf_size=2)
现在我想提取树的叶子中的点,这样每个叶子都可以是一个簇。同一叶子中的点属于同一个簇。
在上面的例子中,因为最大 leaf_size 为 2,我们将有大约 10 / 2 = 5 个集群。
我想要的是给定 X 中的一个点(例如 X[0]),树可以给我这些点所属的树的叶子的索引。
【问题讨论】:
-
kd-tree 不太适合集群。
-
在我的情况下,KD-tree 非常适合我需要的集群类型。如本文所述aclweb.org/anthology/P15-2104.
-
我不会为此使用“集群”一词。这是一个自适应网格;他们没有提及他们对非叶子用户所做的事情;并且很容易表达和实现这一点,而无需使用中值分割的 kd-tree。
标签: python-2.7 scikit-learn cluster-analysis kdtree