如何保存KMeans模型以实现新数据的聚类归属判定?
如何保存并复用训练好的KMeans聚类模型
当然可以实现,你可以通过模型序列化的方式保存训练好的KMeans模型,之后直接加载模型对新数据做聚类预测,无需重复训练。常用的工具是pickle或joblib(后者对包含大量numpy数组的scikit-learn模型更高效)。
步骤1:训练并保存模型
在你的现有训练代码后添加保存逻辑:
import joblib # 也可以用 pickle n_clusters = 15 kmeans = KMeans(n_clusters = n_clusters, init = 'k-means++', max_iter = 3000, n_init = 100, random_state = 0) y_kmeans = kmeans.fit_predict(data) data_df['k-means'] = y_kmeans # 将模型保存到本地文件 joblib.dump(kmeans, 'kmeans_cluster_model.pkl') # 如果用pickle实现: # with open('kmeans_cluster_model.pkl', 'wb') as f: # pickle.dump(kmeans, f)
步骤2:加载模型并预测新数据
当有新数据需要聚类时,直接加载保存好的模型,调用predict方法即可:
import joblib # 对应保存时使用的工具 # 加载本地保存的模型 loaded_kmeans = joblib.load('kmeans_cluster_model.pkl') # 如果用pickle加载: # with open('kmeans_cluster_model.pkl', 'rb') as f: # loaded_kmeans = pickle.load(f) # 假设new_data是你的新输入数据,特征维度必须和训练时的data完全一致 new_data_clusters = loaded_kmeans.predict(new_data)
关键注意事项
- 新数据的特征数量、预处理逻辑必须和训练数据完全一致(比如训练前做了标准化/归一化,新数据也要用相同的均值、标准差做转换),否则预测结果会失效。
- 后续需要重新分析数据变化时,只需重新训练模型并覆盖保存的
kmeans_cluster_model.pkl文件即可。 - 如果要可视化新数据的聚类结果,直接复用你现有的可视化代码,把
data和y_kmeans替换成新数据和预测出的new_data_clusters即可。
内容的提问来源于stack exchange,提问作者Lleims
相关产品推荐
相关产品推荐

