scikit-learn 聚类:predict(X) 与 fit_predict(X)

问题描述 投票:0回答:4

在 scikit-learn 中,一些聚类算法同时具有

predict(X)
fit_predict(X)
方法,例如 KMeansMeanShift,而其他聚类算法仅具有后者,例如 SpectralClustering。根据医生的说法:

fit_predict(X[, y]):    Performs clustering on X and returns cluster labels.
predict(X): Predict the closest cluster each sample in X belongs to.

我不太明白两者之间的区别,它们似乎对我来说是等同的。

python-3.x machine-learning scikit-learn
4个回答
24
投票

为了使用“预测”,您必须首先使用“拟合”方法。因此,使用“fit()”然后使用“predict()”与使用“fit_predict()”绝对相同。但是,在需要知道模型的初始化参数的情况下,仅使用“fit()”可能会受益,而不是使用“fit_predict()”,在这种情况下,您将仅获得运行模型的标记结果。数据模型。


8
投票

fit_predict
通常用于无监督机器学习转导估计器。

基本上,

fit_predict(x)
相当于
fit(x).predict(x)


2
投票

在这里添加答案可能已经很晚了,只是将来有人可能会受益

我可以在 kmeans 中进行预测而在 dbscan 中只进行 fit_predict 的原因是

  • 在 kmeans 中,您根据考虑的簇数量获得质心。因此,一旦您使用

    fit()
    训练了数据点,您就可以使用它来
    predict()
    一个新的单个数据点以分配给特定的集群。

  • 在 dbscan 中,您没有质心,根据您定义的

    min_samples
    eps
    (被视为邻居的两点之间的最小距离),形成簇。该算法返回所有数据点的聚类标签。这种行为解释了为什么没有 Predict() 方法来预测单个数据点。 fit() 和 fit_predict() 之间的区别已由其他用户解释 -

在另一种空间聚类算法中,hdbscan 为我们提供了使用

approximate_predict()
进行预测的选项。值得探索。

这又是我根据我探索的源代码的理解。任何专家都可以强调任何差异。


0
投票

KMeans这样的方法可以在拟合后预测任何数据的目标。其他方法如SpectralClustering不知道未知数据可能属于哪里。仅当数据是拟合的一部分时,它们才能预测数据。这就是为什么只有一个方法fit_predict(data)

示例:dbscan 查找聚类和异常值。如果测试新的数据点,则该数据点可能会将集群桥接在一起。 dbscan 必须重复拟合过程才能找出答案,预测 是不够的。

© www.soinside.com 2019 - 2024. All rights reserved.