python - DBSCAN 中预先计算的距离矩阵
问题描述
仔细阅读,我发现可以将预先计算的距离矩阵传递给SKLearn DBSCAN。不幸的是,我不知道如何通过它进行计算。
假设我有一个包含 100 个元素的一维数组,只有节点的名称。然后我有一个 100x100 的二维矩阵,每个元素之间的距离(以相同的顺序)。
我知道我必须这样称呼它:
db = DBSCAN(eps=2, min_samples=5, metric="precomputed")
对于 2 个节点和至少 5 个节点集群之间的距离。此外,使用“预计算”表示使用 2D 矩阵。但是如何传递计算信息?
如果使用 RAPIDS CUML DBScan函数(GPU 加速),同样的问题也可能适用。
解决方案
文档:
class sklearn.cluster.DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean', metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None) [...]
[...] metricstring, or callable, default=’euclidean’ The metric to use when calculating distance between instances in a feature array. If metric is a string or callable, it must be one of the options allowed by sklearn.metrics.pairwise_distances for its metric parameter. If metric is “precomputed”, X is assumed to be a distance matrix and must be square. X may be a Glossary, in which case only “nonzero” elements may be considered neighbors for DBSCAN. [...]
因此,您通常称其为:
from sklearn.cluster import DBSCAN
clustering = DBSCAN()
DBSCAN.fit(X)
如果你有一个距离矩阵,你可以:
from sklearn.cluster import DBSCAN
clustering = DBSCAN(metric='precomputed')
clustering.fit(distance_matrix)
推荐阅读
- reactjs - 在 FramerX 中设置 AG-Grid 组件
- python-3.x - Python - 图中的选择订单项
- python - 将numpy数组保存为图像的问题
- python - Selenium 用 shadow dom 选择多个元素
- python - 无法从 anaconda 打开终端(a.tool 错误)
- sqlite - 如何在 windows 10 for delphi 10.3.1 中升级 sqlit3
- alfresco - Alfresco 7.X 中的文件存储在哪里?
- json - 带有 JSON 到 powershell 的 Ansible win_shell,其他方式也可以正常工作
- python - 您如何制作一个在其自身之外模拟按键的程序?(Python)
- python - 将 AxesImage 直方图转换为数组直方图