我想将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
?
答案 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)