各向异性点聚类



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

数据库扫描

我使用了以下代码:

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),如下所示。

高斯混合模型

代码如下:

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))

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

如何检测两个集群?

阅读文档。

fit(X, y=无, sample_weight=无)

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

y : 忽略

因此,您的调用会忽略 y 坐标。

我们不是都喜欢python/sklearn吗,因为它甚至没有警告你这一点,而是默默地忽略了y

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

"

训练"和"预测"的概念对于聚类没有意义。不要使用它。仅使用fit_predict .

相关内容

  • 没有找到相关文章

最新更新