使用替代距离度量标准,如Mahalanobis和DBSCAN

时间:2017-07-11 10:08:20

标签: python machine-learning scikit-learn

我想将Mahalanobis距离与DBSCAN结合使用。

对于NearestNeighbors,您可以通过metric='mahalanobis'metric_params={'V': np.cov(X)}来使用Mahalanobis距离。

DBSCAN(eps=0.15, min_samples=8, metric='...', algorithm='brute', leaf_size=30, n_jobs=-1)

但如何使用DBSCAN

2 个答案:

答案 0 :(得分:2)

您似乎需要通过以下方式创建指标: DistanceMetric

例如,您可以使用:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.neighbors import DistanceMetric
from sklearn.cluster import DBSCAN

X, y = make_classification()
metric = DistanceMetric.get_metric('mahalanobis', V=np.cov(X))

sklearn.cluster.DBSCAN(eps=0.15, min_samples=8, metric=metric, 
                       algorithm='brute', leaf_size=30, n_jobs=-1)

答案 1 :(得分:2)

上述答案在 2021 年初对我不起作用。今天,您不传递距离对象,而是传递带有 mahalanobis 协方差参数的字典。

上面的例子看起来像这样:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.cluster import DBSCAN

X, y = make_classification()

sklearn.cluster.DBSCAN(eps=0.15, min_samples=8, metric='mahalanobis', metric_params={'V':np.cov(X)}, algorithm='brute', leaf_size=30, n_jobs=-1)