我已经安装了 KMeans 模型并检索了数据的质心。
有什么方法可以使用这些质心的predict()函数来初始化KMeans模型,但是不调用fit函数
我尝试运行以下代码并遇到此错误。 这里 jsonl 文件有一个 json 对象为
{ "primary" : [[<some_array>]]}
{ "secondary" : [[<some_array>]]}
models = dict()
for json_str in json_list:
result = json.loads(json_str)
models[list(result.keys())[0]] = list(result.values())[0]
from sklearn.cluster import KMeans
k = KMeans(init = np.array(models['primary']))
k.predict(inference_data)
NotFittedError: This KMeans instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.
这个问题在 cuml 版本的 KMeans 中得到了很好的处理,但是如何使用 sklearn 来完成它。
pickle
或 joblib
。 Sklearn的首选方法是使用joblib
。
from joblib import dump, load
k = KMeans()
# fit and stuff here
dump(k, 'filename.joblib')
# later on
k = load('filename.joblib')
至于像您所要求的那样在对象上设置值,您可以尝试设置 K-means 在拟合后定义的所有 属性 。不过,您必须自己保存所有这些数据,并且使用
pickle
或 joblib
更容易。
下面的伪代码。等号右边的所有内容都必须保存。
k = KMeans.__new__(KMeans)
k.cluster_centers_ = best_centers
k._n_features_out = self.cluster_centers_.shape[0]
k.labels_ = best_labels
k.inertia_ = best_inertia
k.n_iter_ = best_n_iter