使用 sklearn KDTree 的 Clusterint 2D 点
Clusterint 2D points using sklearn KDTree
我有一个 (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])树可以给我这些点所属树的叶子的索引。
最大叶子大小 2 意味着每个叶子可以有 n 到 n/2 个用户。但是你忘记了非叶节点。
一棵 kd 树在根部有 1 个元素,在第二层有 2 个元素(即 not 关闭),然后你将有 4 个叶节点,剩下的7个对象。所以只看叶子,你丢失了三个对象。
kd-tree 不会尝试聚类点。 kd-tree 在两个节点中具有完全相同的坐标是完全有效的!您提供的参考仅使用 kd-tree 来获得自适应网格。我不认为这是一个很好的方法,但它非常 easy。你应该自己实现它,这样你就不会构建完整的树,也不会将对象放入非叶节点中。
有这个包 kdtree in Python 可以通过以下方式安装:
pip install --user kdtree
可用于聚类二维点。
我有一个 (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])树可以给我这些点所属树的叶子的索引。
最大叶子大小 2 意味着每个叶子可以有 n 到 n/2 个用户。但是你忘记了非叶节点。
一棵 kd 树在根部有 1 个元素,在第二层有 2 个元素(即 not 关闭),然后你将有 4 个叶节点,剩下的7个对象。所以只看叶子,你丢失了三个对象。
kd-tree 不会尝试聚类点。 kd-tree 在两个节点中具有完全相同的坐标是完全有效的!您提供的参考仅使用 kd-tree 来获得自适应网格。我不认为这是一个很好的方法,但它非常 easy。你应该自己实现它,这样你就不会构建完整的树,也不会将对象放入非叶节点中。
有这个包 kdtree in Python 可以通过以下方式安装:
pip install --user kdtree
可用于聚类二维点。