我已阅读文档here http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html以及看着this http://fromdatawithlove.thegovans.us/2013/05/clustering-using-scikit-learn.html教程,但我仍然缺少一些关于在 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]))
并打印“one”的集群 ID:
print clusters['bob']
或者将其发送回 csv,如下所示:
for d in data:
print '%s,%d' % (','.join([str(x) for x in d]), clusters[d[0]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)