python - DBSCAN 中的预计算距离矩阵

标签 python scikit-learn dbscan rapids

环顾四周,我发现可以将预先计算的距离矩阵传递给 SKLearn DBSCAN .不幸的是,我不知道如何通过它进行计算。
假设我有一个包含 100 个元素的一维数组,其中只有节点的名称。然后我有一个 2D 矩阵,100x100,每个元素之间的距离(以相同的顺序)。
我知道我必须调用它:db = DBSCAN(eps=2, min_samples=5, metric="precomputed")对于 2 个节点和至少 5 个节点集群之间的距离。此外,使用“预先计算”来指示使用二维矩阵。但是如何传递计算信息呢?
如果使用 RAPIDS,同样的问题可能适用 CUML DBScan功能(GPU 加速)。

最佳答案

documentation :

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)

关于python - DBSCAN 中的预计算距离矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62695842/

相关文章:

python - Django 2.0 密码验证

python - 从管道获取模型属性

python - Sklearn随机森林模型太大

python - 在 Fabric 中,如何检查 Debian 或 Ubuntu 软件包是否存在,如果不存在则安装它?

python - 如何查询数据库以获得一个列表,其中每个值是具有相同日期值的记录数之和?

python - 使用 statsmodels 线性回归拟合下降趋势(负斜率)

python - 在 Scikit 中保存经过交叉验证训练的模型

python - DBSCAN的参数eps,python

python - 在 Cypher/Python 中为 neo4j 优化 DBSCAN

cluster-analysis - 使用自定义距离度量对纬度/经度对进行聚类