我在脚本中运行MiniBatchKMeans
并输出我得到的集群中心。现在在另一个脚本中,我想用这些集群中心计算测试集的分数。我试过这样做:
mbk = MiniBatchKMeans(n_clusters=k, init=cluster_centers)
print mbk.score(X)
但是我得到了这个例外
AttributeError: Model has not been trained yet.
如何在不训练模型的情况下获得k-means的分数?
答案 0 :(得分:2)
您必须恢复群集器的cluster_centers_
属性。执行此操作的标准方法是pickle your model,将其保存到磁盘(而不是仅打印质心),然后加载它以对测试数据进行评分。
在培训脚本中:
mbk = MiniBatchKMeans(n_clusters=k, ...)
mbk.fit(X)
import pickle
pickle.dump(mbk, open('/path/to/mbk.pickle', 'wb'))
在测试脚本中:
import pickle
mbk = pickle.load(open('/path/to/mbk.pickle', 'rb'))
print mbk.score(X)
或者,它可能就足以使用您当前的代码,并在测试脚本中执行:
mbk = MiniBatchKMeans(n_clusters=k)
mbk.cluster_centers_ = cluster_centers
mbk.score(X)
但可能无法保证始终有效。