【问题标题】:How to print result of clustering in sklearn如何在sklearn中打印聚类结果
【发布时间】:2015-06-30 04:46:18
【问题描述】:

我有一个稀疏矩阵

from scipy.sparse import *
M = csr_matrix((data_np, (rows_np, columns_np)));

那我就这样进行聚类

from sklearn.cluster import KMeans
km = KMeans(n_clusters=n, init='random', max_iter=100, n_init=1, verbose=1)
km.fit(M)

我的问题是非常菜鸟:如何在没有任何额外信息的情况下打印聚类结果。我不在乎绘图或距离。我只需要这样的聚集行

Cluster 1
row 1
row 2
row 3

Cluster 2
row 4
row 20
row 1000
...

我怎样才能得到它?对不起这个问题。

【问题讨论】:

    标签: python scikit-learn cluster-analysis k-means


    【解决方案1】:

    是时候帮助自己了。之后

    km.fit(M)
    

    我们跑

    labels = km.predict(M)
    

    返回标签,numpy.ndarray。此数组中的元素数等于行数。每个元素意味着一行属于集群。 例如:如果第一个元素是 5,则表示第 1 行属于集群 5。 让我们把我们的行放在一个这样的列表字典中 {cluster_number:[row1, row2, row3], ...}

    # in row_dict we store actual meanings of rows, in my case it's russian words
    clusters = {}
        n = 0
        for item in labels:
            if item in clusters:
                clusters[item].append(row_dict[n])
            else:
                clusters[item] = [row_dict[n]]
            n +=1
    

    并打印结果

    for item in clusters:
        print "Cluster ", item
        for i in clusters[item]:
            print i
    

    【讨论】:

    • 非常感谢,我也敞开心扉:) 非常有帮助的答案
    【解决方案2】:

    更新: 您可以通过以下方式进行操作

    """data= data clustered retrieved by function as you want"""
    """model = result from the data with got by KMeans"""
    """cluster = clusters formed by the model"""
    from sklearn.cluster import KMeans
    
    data = clusteredData()
    model = KMeans(n_clusters=5, init='random', max_iter=100, n_init=1, verbose=1)
    cluster = model.fit_predict(scale(data))
    
    dictionary = {}
    for index in range(len(data)): 
        if cluster[index] in dictionary:
            value = []
            value = dictionary[cluster[index]]
            value.append(data[index])
            dictionary[cluster[index]] = value
        else:
            dictionary[cluster[index]]=data[index]
    

    这将为您创建一个字典,其中 NUMBER_OF_THE_CLUSTER 作为键,该集群中的数据作为 VALUE

    【讨论】:

      猜你喜欢
      • 2016-03-25
      • 2021-07-16
      • 2011-11-06
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 2017-03-29
      • 1970-01-01
      相关资源
      最近更新 更多