【问题标题】:Scipy cluster binary data and labelScipy 集群二进制数据和标签
【发布时间】:2014-06-05 06:53:06
【问题描述】:

我正在尝试对二进制数据集进行 k-means 聚类。以下矩阵基于网页访问(“1”表示访问,“0”表示不访问)。第一列是标识每个用户的标签。

0,1,1,0,1,0,1,0,1,1,0
1,1,0,0,1,1,0,1,0,1,0
2,1,0,0,0,1,0,1,0,1,1
3,1,0,1,0,1,0,0,0,1,0
4,0,1,1,1,0,1,0,1,0,0
5,1,1,0,0,1,0,1,1,1,1
6,0,0,1,0,1,1,0,1,0,0
7,1,1,0,1,0,1,0,0,1,0
8,1,0,0,0,1,0,1,1,1,1
9,0,1,1,0,1,0,1,0,0,0

我正在使用 scipy k-means 并遵循 this 教程。最后我想知道每个用户属于哪个集群。例如:如果 k = 3

0 - cluster_1
1 - cluster_0
2 - cluster_1
3 - cluster_3
.. - .... 

以下是我尝试过的,似乎二进制数据没有正确聚集。这可以改进以获得我的预期输出吗?

import numpy as np
from pylab import plot,show
from numpy import vstack,array
from numpy.random import rand
from scipy.cluster.vq import kmeans,vq

# data generation
data = np.array([[1,0,0,1,1,0,1,0,1,0],
[1,0,0,0,1,0,1,0,1,1],
[1,0,1,0,1,0,0,0,1,0],
[0,1,1,1,0,1,0,1,0,0],
[1,1,0,0,1,0,1,1,1,1],
[0,0,1,0,1,1,0,1,0,0],
[1,1,0,1,0,1,0,0,1,0],
[1,0,0,0,1,0,1,1,1,1],
[0,1,1,0,1,0,1,0,0,0],
[1,1,0,1,0,1,0,1,1,0]])

centroids,_ = kmeans(data,2)
idx,_ = vq(data,centroids)
plot(data[idx==0,0],data[idx==0,1],'ob',
     data[idx==1,0],data[idx==1,1],'or')
plot(centroids[:,0],centroids[:,1],'sg',markersize=8)
show()

【问题讨论】:

    标签: python scipy cluster-analysis data-mining k-means


    【解决方案1】:

    请阅读更多文档,不要只从网上复制粘贴代码。

    idx,_ = vq(data,centroids)
    

    你看过idx是什么吗?

    【讨论】:

      猜你喜欢
      • 2012-11-12
      • 2016-06-22
      • 2017-11-08
      • 1970-01-01
      • 2011-01-12
      • 2019-11-25
      • 2021-04-12
      • 1970-01-01
      • 2016-06-07
      相关资源
      最近更新 更多