【问题标题】:How to calculate the distance between a document and each centroid (k-means)?如何计算文档与每个质心(k-means)之间的距离?
【发布时间】:2017-03-13 03:15:12
【问题描述】:

我执行了 scikit-learn k-means 算法并得到了生成的质心。我有一个新文档(不在初始集合中),我想计算每个质心与新文档之间的距离,以了解它应该放在哪个集群中。

是否有内置函数可以实现这一点,还是我应该手动编写相似函数?

【问题讨论】:

    标签: python machine-learning scikit-learn cluster-analysis k-means


    【解决方案1】:

    您可以使用方法predict 获取矩阵X 中每个样本的最近聚类:

    from sklearn.cluster import KMeans
    
    model = KMeans(n_clusters=K)
    model.fit(X_train)
    label = model.predict(X_test)
    

    【讨论】:

    • 我还有一个问题,X_test 稀疏矩阵应该和X_train 有相同的维度?我问这个,因为我使用的是TF-IDF归一化,所以我必须考虑到X_train特征来生成X_test矩阵
    • 它应该具有相同数量的特征,但不一定具有相同数量的样本。
    • 我明白了。所以我必须将新样本添加到初始字典中,再次使用 vectorizer.fit_transform() ,然后只将所需的行传递给 predict 方法,对吗?
    • 我认为您只需要使用矢量化器的变换方法即可。否则,您将更改变换并调整输入空间,并且您的聚类将关闭。因此,您可以在使用KMeansfit 方法之前在X_train+X_test 上使用vectorizer,或者避免仅在X_train 上安装vectorizer
    • 是的,我认为第二个选项更好,因为如果我在 X_train + X_test 上使用矢量化器,则会在考虑我要预测的文档的情况下执行聚类。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 2018-10-22
    • 2021-01-14
    • 2013-02-02
    • 1970-01-01
    • 2018-04-06
    • 2013-09-12
    • 2021-09-23
    相关资源
    最近更新 更多