Python 使用替代的距离度量,如Mahalanobis和DBSCAN
我想将Python 使用替代的距离度量,如Mahalanobis和DBSCAN,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,我想将Mahalanobis距离与DBSCAN结合使用 对于nearestneighbories您可以传递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?您似乎需要通过创建度量,例如距离度量 例如,您可以使
Mahalanobis
距离与DBSCAN
结合使用
对于nearestneighbories
您可以传递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
?您似乎需要通过创建度量,例如距离度量
例如,您可以使用:
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)
上述答案在2021年初对我来说并不适用。今天,您不会传递距离对象,而是传递带有马氏协方差参数的字典
上面的示例如下所示:
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)