gpt4 book ai didi

python - 如何使用距离矩阵和 kmedoids 将新观测值分配给聚类?

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

我有一个数据框,用于保存数据框中每个文档之间的 Word Mover 距离。我正在运行 kmediods 来生成集群。

       1      2     3      4      5   
1 0.00 0.05 0.07 0.04 0.05
2 0.05 0.00 0.06 0.04 0.05
3. 0.07 0.06 0.00 0.06 0.06
4 0.04 0.04. 0.06 0.00 0.04
5 0.05 0.05 0.06 0.04 0.00

kmed = KMedoids(n_clusters= 3, random_state=123, method ='pam').fit(distance)
在这个初始矩阵上运行并生成集群后,我想添加要集群的新点。在向距离矩阵添加新文档后,我最终得到:
       1      2     3      4      5      6
1 0.00 0.05 0.07 0.04 0.05 0.12
2 0.05 0.00 0.06 0.04 0.05 0.21
3. 0.07 0.06 0.00 0.06 0.06 0.01
4 0.04 0.04. 0.06 0.00 0.04 0.05
5 0.05 0.05 0.06 0.04 0.00 0.12
6. 0.12 0.21 0.01 0.05 0.12 0.00
我尝试在新行上使用 kmed.predict。
kmed.predict(new_distance.loc[-1: ])
但是,这给了我尺寸不兼容的错误 X.shape[1] == 6Y.shape[1] == 5 .
如何使用新文档的这个距离来确定它应该属于哪个集群?这甚至可能吗,还是我每次都必须重新计算集群?谢谢!

最佳答案

source code对于 k-medoids 说如下:

def transform(self, X):
"""Transforms X to cluster-distance space.

Parameters
----------
X : {array-like, sparse matrix}, shape (n_query, n_features), \
or (n_query, n_indexed) if metric == 'precomputed'
Data to transform.
"""
我假设您使用 precomputed metric(因为您计算分类器外的距离),所以在您的情况下 n_query是新文档的数量, n_indexedfit 的文档数方法被调用。
在您的特定情况下,当您将模型拟合到 5 个文档然后想要对第 6 个文档进行分类时, X用于分类应具有形状 (1,5) ,可以计算为
kmed.predict(new_distance.loc[-1: , :-1])

关于python - 如何使用距离矩阵和 kmedoids 将新观测值分配给聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69408535/

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