提问
我已经阅读了文档here以及查看this教程,但我仍然缺少在scikit-learn中使用K-means的基本知识:
说我有这样一个数据集:
|UserName| Variable1 | Variable2 | Variable3 | Cluster |
| bob | 1 | 3 | 7 | |
| joe | 2 | 4 | 8 | |
| bill | 1 | 6 | 4 | |
由于K-means采用一个numpy数组,因此我必须去除用户名,而仅使用数字变量.但是,在创建群集之后,如何将它们重新关联到每个用户,以进行进一步分析.即我如何用相应的群集号填充“群集”列?
最佳答案
这是一个示例,假设您将数据从文件中读取到列表中:import sklearn.cluster
import numpy as np
data = [
['bob', 1, 3, 7],
['joe', 2, 4, 8],
['bill', 1, 6, 4],
]
labels = [x[0] for x in data]
a = np.array([x[1:] for x in data])
clust_centers = 2
model = sklearn.cluster.k_means(a, clust_centers)
模型现在包含一个具有(质心,标签,间质)的元组
因此,像这样返回标签:
clusters = dict(zip(lables, model[1]))
并打印“一个”的集群标识:
print clusters['bob']
或者将其发送回csv,如下所示:
for d in data:
print '%s,%d' % (','.join([str(x) for x in d]), clusters[d[0]])