Scikit-learn kmeans clustering

时间:2014-12-21 23:01:38

标签: python scipy cluster-analysis

我应该用一些数据做一个kmeans聚类实现。我从http://glowingpython.blogspot.com/2012/04/k-means-clustering-with-scipy.html看到的示例显示他们的测试数据分为2列......但是,我给出的数据是68个具有78个特征的主题(因此68x78矩阵)。我该如何为此创建一个合适的输入?

我基本上只是尝试输入矩阵,但它似乎没有做我想要的...而且我不知道为什么会这样。我很担心该怎么做。

        data = np.rot90(data)
        centroids,_ = kmeans(data,2)
        # assign each sample to a cluster
        idx,_ = vq(data,centroids)

        # some plotting using numpy's logical indexing
        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()

老实说,我不知道向你展示什么样的代码..我告诉你的数据格式已经有了描述。否则,它与我链接的教程相同。

1 个答案:

答案 0 :(得分:0)

您的可视化仅使用前两个维度

这就是为什么这些点看起来不正确" - 他们在不同的方面更接近。

看看接下来的两个维度:

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

...重复所有剩余的oyur 78维...

在这许多特征中,(平方)欧几里德距离变得毫无意义,并且k均值结果趋于变得与随机凸分区一样好。

要获得更具代表性的视图,请考虑使用MDS将数据投影到2d以进行可视化。它应该只有68个科目才能合理地运作。

请在问题中加入可视化。我们没有您的数据。