【发布时间】: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