DBSCAN用于地理位置数据的集群

DBSCAN用于地理位置数据的集群,第1张

DBSCAN用于地理位置数据的集群

DBSCAN 旨在
用于原始数据,并具有用于加速的空间索引。我所知道的唯一可以加速地理距离的工具是ELKI(Java)-不幸的是,scikit-
learn仅在诸如欧几里得距离之类的一些距离上支持此功能(请参阅参考资料

sklearn.neighbors.NearestNeighbors
)。但是显然,您可以尝试预先计算两两之间的距离,因此(现在)这不是问题。

但是, 您没有足够仔细地阅读文档 ,并且您认为DBSCAN使用距离矩阵是错误的:

from sklearn.cluster import DBSCANdb = DBSCAN(eps=2,min_samples=5)db.fit_predict(distance_matrix)

在距离矩阵行上 使用 欧几里得距离 ,这显然没有任何意义。

请参阅

DBSCAN
(强调)的文档:

sklearn.cluster.DBSCAN类(eps = 0.5,min_samples = 5, metric =’ euclidean
,algorithm =’auto’,leaf_size = 30,p = None,random_state = None)

metric :字符串或可调用

计算要素阵列中实例之间的距离时使用的度量。如果metric是字符串或可调用,则它必须是metric.pairwise.calculate_distance为其metric参数所允许的选项之一。
如果度量是“预先计算的”,则将X假定为距离矩阵,并且必须为平方。
X可能是一个稀疏矩阵,在这种情况下,只有“非零”元素可以被视为DBSCAN的邻居。

类似

fit_predict

X :形状(n_samples,n_features)的数组或稀疏(CSR)矩阵,或形状(n_samples,n_samples)的数组

特征数组,或者 如果metric =’precomputed’ ,则样本之间的距离数组

换句话说,你需要做

db = DBSCAN(eps=2, min_samples=5, metric="precomputed")


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5617407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存