【问题标题】:Anistropic points clustering各向异性点聚类
【发布时间】:2018-04-17 02:50:25
【问题描述】:

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

如何检测两个集群?

【问题讨论】:

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


    【解决方案1】:

    阅读文档。

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

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

    ...

    y : 忽略

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

    我们不是都喜欢 python/sklearn,因为它甚至不会警告你,而是默默地忽略y

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

    “训练”和“预测”的概念对聚类没有意义。不要使用它。只使用fit_predict

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-13
      • 2013-01-20
      • 2018-07-11
      • 2012-06-03
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多