Anistropic点聚类

时间:2017-11-04 14:04:12

标签: scikit-learn cluster-analysis k-means dbscan gmm

K-means方法不能处理各向异性点。 DBSCAN和高斯混合模型似乎可以根据scikit-learn使用它。我试图使用这两种方法,但它们不适用于我的dataset

DBSCAN

我使用了以下代码:

db = DBSCAN(eps=0.1,min_samples=5 ).fit(X_train,Y_train)
labels_train=db.labels_
# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels_train)) - (1 if -1 in labels_train else 0)
print('Estimated number of clusters: %d' % n_clusters_)

并且仅检测到1个群集(估计的群集数:1),如here所示。

高斯混合模型

代码如下:

gmm = mixture.GaussianMixture(n_components=2, covariance_type='full')
gmm.fit(X_train,Y_train)
labels_train=gmm.predict(X_train)
print(gmm.bic(X_train))

无法区分这两个群集,如here所示。

如何检测两个群集?

1 个答案:

答案 0 :(得分:0)

阅读文档。

  

适合(X,y =无,sample_weight =无)

     

X:数组或稀疏(CSR)形状矩阵(n_samples,n_features) [...]

     

...

     

y:忽略

所以你的调用会忽略y坐标。

我们都不喜欢python / sklearn,因为它甚至没有警告过你,但默默地忽略了y

X应该是整个数据,而不仅仅是x坐标。

"火车"的概念和"预测"对聚类没有意义。不要使用它。仅使用fit_predict