我有一个包含十几个维度(列)和大约200个观察值(行)的数据集。此数据集已使用规范化 quantile_transform_normalize
quantile_transform_normalize
但是,当我尝试使用Mahalanobis距离度量使用DBSCAN对数据进行聚类时,每个项都被聚类到-1中。根据文档:
我不确定这意味着什么,但是我用KMeans得到了一些好的集群,所以我知道有一些东西可以集群——它不仅仅是随机的。
下面是我用于聚类的代码:
covariance = np.cov(data.values.astype("float32"), rowvar=False) clusterer = sklearn.cluster.DBSCAN(min_samples=6, metric="mahalanobis", metric_params={"V": covariance}) clusterer.fit(data)
data 是我在调试器中检查过的数字数据帧。
data
您需要选择参数 eps 也
eps
结果在很大程度上取决于这个参数。你可以在文献中找到一些估算它的方法。
sklearn 应该 不 为这个参数提供一个默认值,因为它很少工作(在标准化的玩具数据上通常是可以的,但仅此而已)。
sklearn
200个实例可能太小,无法可靠地测量密度,特别是在有12个变量的情况下。