【问题标题】:What is the use of predict() method in kmeans implementation of scikit learn?scikit learn的kmeans实现中predict()方法的用途是什么?
【发布时间】:2019-06-27 22:07:52
【问题描述】:

有人能解释一下predict()方法在scikit learn的kmeans实现中有什么用吗? official documentation 声明其用途为:

预测 X 中每个样本所属的最近聚类。

但我也可以通过在fit_transform() 方法上训练模型来获得输入集 X 的每个样本的簇号/标签。那么predict()方法有什么用呢?是否应该为看不见的数据指出最近的集群?如果是,那么如果您执行 SVD 等降维措施,您将如何处理新数据点?

这是一个similar question,但我仍然认为它没有帮助。

【问题讨论】:

    标签: scikit-learn k-means


    【解决方案1】:

    predict() 方法有什么用?是否应该为看不见的数据指出最近的集群?

    是的,没错。

    那么如果你执行SVD等降维措施,你如何处理一个新的数据点?

    在将看不见的数据传递给.predict() 之前,您对它应用相同的降维方法。这是一个典型的工作流程:

    # prerequisites:
    #    x_train: training data
    #    x_test: "unseen" testing data
    #    km: initialized `KMeans()` instance
    #    dr: initialized dimensionality reduction instance (such as `TruncatedSVD()`)    
    
    # fitting
    x_dr = dr.fit_transform(x_train)
    y = km.fit_predict(x_dr)  
    
    # ...
    
    # working with unseen data (models have been fitted before)
    x_dr = dr.transform(x_test)
    y = km.predict(x_dr)
    
    # ...
    

    其实fit_transformfit_predict等方法是为了方便。 y = km.fit_predict(x) 等价于y = km.fit(x).predict(x)

    我认为,如果我们将拟合部分编写如下,更容易看出发生了什么:

    # fitting
    dr.fit(x_train)
    x_dr = dr.transform(x_train)
    
    km.fit(x_dr)
    y = km.predict(x_dr)
    

    除了对.fit() 的调用之外,模型在拟合过程中使用的模型和未见过的数据均相同。

    总结:

    • .fit() 的目的是用数据训练模型。
    • .predict().transform() 的目的是将经过训练的模型应用于数据。
    • 如果您想拟合模型并将其应用于训练期间的相同数据,则为方便起见,有.fit_predict().fit_transform()
    • 链接多个模型(例如降维和聚类)时,在拟合和测试期间以相同的顺序应用它们。

    【讨论】:

    • 假设我有一些文本数据,我在其 TDM 上执行 SVD 并拟合 kmeans 模型。我想在新的文本数据上使用这个模型。我可以获得具有相同词汇表的新数据的 TDM,但我想如果我应用 SVD 会出现问题。新特征虽然大小相同,但不一定与之前的分解相对应。如果我理解正确,predict() 方法通过测量具有聚类质心的欧几里德距离来确定聚类,那么如果特征在语义上不对应,即模型的特征和新数据的特征,那么测量距离就没有意义。
    • 如果您使用 SVD 的 transform 方法,它不会在未见过的数据上再次训练模型。它应用与训练期间相同的转换。但是,我以前从未处理过文本数据,不知道您放入 SVD 中的任何内容是否可以在数据集之间保持一致。
    猜你喜欢
    • 2016-11-22
    • 2020-04-30
    • 2015-02-14
    • 2020-10-20
    • 2020-10-24
    • 2014-05-11
    • 2015-02-20
    • 2021-11-22
    • 2021-05-29
    相关资源
    最近更新 更多