我应该用一些数据做一个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()
老实说,我不知道向你展示什么样的代码..我告诉你的数据格式已经有了描述。否则,它与我链接的教程相同。
答案 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个科目才能合理地运作。
请在问题中加入可视化。我们没有您的数据。