我想结合使用Mahalanobis距离和DBSCAN。
对于NearestNeighbors,可以传递使用Mahalanobis距离的metric='mahalanobis'和metric_params={'V': np.cov(X)}。
DBSCAN(eps=0.15, min_samples=8, metric='...', algorithm='brute', leaf_size=30, n_jobs=-1)但是如何使用DBSCAN来实现呢?
发布于 2021-01-06 07:06:23
在2021年初,上面的答案对我来说并不适用。现在,您不需要传递distance对象,而是传递一个带有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)发布于 2017-07-11 20:24:01
看起来你需要通过创建一个指标,例如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)https://stackoverflow.com/questions/45031509
复制相似问题