Scikit learn 我如何在没有培训的情况下获得k-means的分数?

Scikit learn 我如何在没有培训的情况下获得k-means的分数?,scikit-learn,Scikit Learn,我正在脚本中运行MiniBatchKMeans,并输出我得到的集群中心。现在在另一个脚本中,我想计算这些集群中心的测试集的分数。我尝试过这样做: mbk = MiniBatchKMeans(n_clusters=k, init=cluster_centers) print mbk.score(X) 但我得到了这个例外 AttributeError: Model has not been trained yet. 如何在不训练模型的情况下获得k-means的分数?您必须恢复clusterer的

我正在脚本中运行
MiniBatchKMeans
,并输出我得到的集群中心。现在在另一个脚本中,我想计算这些集群中心的测试集的分数。我尝试过这样做:

mbk = MiniBatchKMeans(n_clusters=k, init=cluster_centers)
print mbk.score(X)
但我得到了这个例外

AttributeError: Model has not been trained yet.

如何在不训练模型的情况下获得k-means的分数?

您必须恢复clusterer的
群集\u中心属性。执行此操作的标准方法是,将其保存到磁盘(而不仅仅是打印质心),然后加载以对测试数据进行评分

在培训脚本中:

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.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)
但这并不能保证永远有效