0

我通过 dbscan skelearn 制作了以下集群

在此处输入图像描述

我的数据是一个 numpy 数组:

array([[-0.22725194, -0.68548221],
       [ 0.01525107, -0.98825191],
       [-0.29117618, -0.69614647],
        ..., 
       [ 0.62125361, -0.79422623],
       [ 0.59627969, -0.82673572],
       [ 0.58919524, -1.04003462]])

我想将两个新集群作为变量添加到我的数据中。我使用的代码是:

from sklearn.cluster import DBSCAN

data3 = np.array(data3)

dbscan = DBSCAN(random_state=111, eps=0.3)


dbscan.fit(data3)

# visualization

from sklearn.decomposition import PCA
pca = PCA(n_components=2).fit(data3)
pca_2d = pca.transform(data3)
for i in range(0, pca_2d.shape[0]):
    if dbscan.labels_[i] == 0:
        c1 = plt.scatter(pca_2d[i,0],pca_2d[i,1],c='r',
    marker='+')


    elif dbscan.labels_[i] == 1:
        c2 = plt.scatter(pca_2d[i,0],pca_2d[i,1],c='g',
    marker='o')

    elif dbscan.labels_[i] == -1:
        c3 = plt.scatter(pca_2d[i,0],pca_2d[i,1],c='b',
    marker='*')

    plt.legend([c1, c2, c3], ['Cluster 1', 'Cluster 2',
        'Noise'])
plt.title('DBSCAN finds 2 clusters and noise')
plt.show()

如何将它们保存为变量?是否有评估这些集群质量的函数,例如 Silhoutte Coefficient?

4

1 回答 1

0

您已经将它们放在变量中:dbscan.labels_,不是吗?

并不是说您应该能够做一些事情,pca_2d[dbscan.labels_==1,:]以避免一次绘制一个点。

评估基于密度的集群并不容易。我只知道一个度量甚至声称它可以评估基于密度的聚类(不过我没有使用它,所以我不能保证它有效)。

剪影等适用。他们假设凸簇,并在经典的耆那教玩具问题上失败。

Moulavi, D.、Jaskowiak, PA、Campello, RJGB、Zimek, A. 和 Sander, J. (2014)。
基于密度的聚类验证。
在第 14 届 SIAM 国际数据挖掘会议 (SDM) 会议记录中,宾夕法尼亚州费城。

于 2014-12-06T19:42:48.597 回答