gpt4 book ai didi

python - 如何根据 python 中最近的集群质心逻辑将新观察分配给现有的 Kmeans 集群?

转载 作者:行者123 更新时间:2023-12-01 22:17:51 25 4
gpt4 key购买 nike

我使用以下代码使用 Scikit learn 创建 k-means 集群。

kmean = KMeans(n_clusters=nclusters,n_jobs=-1,random_state=2376,max_iter=1000,n_init=1000,algorithm='full',init='k-means++')

kmean_fit = kmean.fit(clus_data)

我还使用 kmean_fit.cluster_centers_ 保存了质心

然后我腌制了 K 表示对象。

filename = pickle_path+'\\'+'_kmean_fit.sav'
pickle.dump(kmean_fit, open(filename, 'wb'))

这样我就可以使用 kmean_fit.predict() 加载相同的 kmeans pickle 对象并将其应用于新数据。

问题:

  1. 加载 kmeans pickle 对象和应用的方法是否会kmean_fit.predict() 允许我将新观察分配给existing clusters 基于现有集群的质心?这种方法是否只是从头开始重新聚类新数据?

  2. 如果此方法不起作用如何将新观察值分配给 现有集群,因为我已经保存了集群 使用高效 python 代码的质心?

PS:我知道使用现有集群作为因变量构建分类器是另一种方法,但我不想这样做,因为时间紧迫。

最佳答案

是的。 sklearn.cluster.KMeans 对象是否被腌制(如果你正确地取消腌制,你将处理“相同的”原始对象)影响您可以使用 predict 方法对新观察进行聚类。

一个例子:

from sklearn.cluster import KMeans
from sklearn.externals import joblib

model = KMeans(n_clusters = 2, random_state = 100)
X = [[0,0,1,0], [1,0,0,1], [0,0,0,1],[1,1,1,0],[0,0,0,0]]
model.fit(X)

输出:

KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=2, n_init=10,
n_jobs=1, precompute_distances='auto', random_state=100, tol=0.0001,
verbose=0)

继续:

joblib.dump(model, 'model.pkl')  
model_loaded = joblib.load('model.pkl')

model_loaded

输出:

KMeans(copy_x=True, init='k-means++', max_iter=300, n_clusters=2, n_init=10,
n_jobs=1, precompute_distances='auto', random_state=100, tol=0.0001,
verbose=0)

看看 n_clustersrandom_state 参数在 modelmodel_new 对象之间如何相同?你可以开始了。

用"new"模型预测:

model_loaded.predict([0,0,0,0])

Out[64]: array([0])

关于python - 如何根据 python 中最近的集群质心逻辑将新观察分配给现有的 Kmeans 集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com