【发布时间】:2019-08-17 22:57:25
【问题描述】:
我有一个包含 3 列的 2d np.array,来自 4 个注册类别。我想在这个 3 列 np 数组上实现 K-means 以测试它是否可以自动聚类到 4 个 3 维足够好的集群。所以我从真实类别的中位数(3 个中位数 * 4 个我想要聚类的类别)开始我的质心,而不是从平均值开始,因为它们都来自非参数分布。我缩放了我的数据并创建了一个 np.array 中位数 (3*4) 但我收到了这个错误:
clean=[[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3],[0.1, 0.2, 0.3]]
init_medians=np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9], [0.01, 0.02, 0.03]])
model = KMeans(n_clusters=4, max_iter=300, init=init_medians)
model.fit(clean)
TypeError: 'builtin_function_or_method' 对象不可下标
我尝试将数组更改为 np 数组、堆栈等,但似乎我无法为每个集群输入 3 个中位数。我认为 K-means 可以聚集在 3 维空间上,对吧?
当我用 4 个单值初始化质心时它起作用了,但这不是我想要的。该错误是由数组 i 输入到 init= 引起的。我的逻辑或 K-means 知识或语法有问题吗?
【问题讨论】:
-
如果我的回答有帮助,请告诉我。
标签: python scikit-learn k-means