【问题标题】:KMeans Clustering Can it predict unseen data?KMeans Clustering 它可以预测看不见的数据吗?
【发布时间】:2022-01-22 23:00:45
【问题描述】:

我一直在尝试将我的训练集拟合到 KMeans 集群中,并将其预测到测试测试中,但是它至少在我尝试了一周后都没有奏效。我很好奇我是否在解释 KMeans 的使用方式?我被告知它是无人监督的。这是否意味着如果它知道训练数据是如何聚类的,它就不能用于预测聚类?

谢谢。

【问题讨论】:

    标签: classification cluster-analysis k-means


    【解决方案1】:

    KMeans 集群是无监督的机器学习模型。这意味着也不会有任何标记数据用于训练和预测。它获取训练数据并根据模型调整尝试对训练数据进行聚类并为每个聚类分配聚类标签。

    在这个训练有素的模型上,您可以传递值,以便它预测给定输入的最佳集群标签。这是示例python代码sn-p。

    import numpy as np
    import matplotlib.pyplot as pyplot
    from sklearn.cluster import KMeans
    from sklearn.preprocessing import scale
    
    model = KMeans(n_clusters=2)
    
    model = model.fit(scale(data)) # data is your training data
    
    print(model.labels_) # prints labels for clusters. you can map to meaningful labels
    
    model.predict(scale(test)) # test is your data to predict the cluster
    

    【讨论】:

    • 如果我正在聚类以获取已经在我的数据集的一列中的标签,我应该从“数据”和“测试”中删除它吗?它们是字符串,数据中的其他所有内容都是浮点数。我一直在做 model.fit(data,data_labels) 和 model.predict(test) ,其中标签只是我希望它们如何聚类的数据集中的那一列。我还将它们的数据标签映射到数字中,但仍然无法正常工作。谢谢你顺便说一句
    • 如果我理解正确,您的数据集在其中一列中有标签。然后你的数据适合监督学习。分类或回归(监督学习)。不是 KMeans 集群(无监督)。根据您的要求,尝试使用 KNN 模型或其他监督学习模型。
    【解决方案2】:

    是的,您可以使用 k-means 来预测集群。对训练数据进行聚类后,您将收到所选聚类数量的聚类中心。例如,如果您选择了 k=3,您的数据集将分为 3 个集群,因此您将收到 3 个集群中心。

    因此,现在您可以获取测试数据,并且对于每个测试数据点,您可以找到三个聚类中心之间的欧几里德距离。距离最小的那个将是您的预测集群。

    如果您使用的是 scikit-learn,还有一个使用 K-Means 的预测方法,它基本上应该做到以上。

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2018-07-29
      • 2021-07-10
      • 1970-01-01
      • 2017-08-20
      • 2021-02-21
      • 2019-07-12
      • 2020-06-21
      相关资源
      最近更新 更多