MeanShift `fit` vs `fit_predict` scikitlearn



假设X是典型形式的数组。 给定代码。

from sklearn.cluster import MeanShift
ms = MeanShift(bin_seeding=True,cluster_all=False)
ms.fit(X)

一旦我这样做,ms有两个属性:labels_cluster_centers_所以我的第一个问题是....ms.fit_predict(X)ms.predict(X)有什么意义,因为我们已经有了可以从labels_中读取的 X 分类?

主要区别在于,当你说ms.fit(X) 时,X是你的标记数据集/训练数据集。 说ms.fit_predict(X')X'是你的未标记/测试数据集。 即,您正在使用 fit_predict 对未标记的数据集进行预测。即,fit(X)执行聚类,而fit_predict ,为您提供聚类标签。ms.predict(X),在sklearn.cluster.mean_shift_.MeanShift物体上没有什么比这更好的了。另请参阅下面的dir(ms)

>>> help(ms.fit)
Help on method fit in module sklearn.cluster.mean_shift_:
fit(self, X) method of sklearn.cluster.mean_shift_.MeanShift instance
    Perform clustering.
    Parameters
    -----------
    X : array-like, shape=[n_samples, n_features]
        Samples to cluster.
>>> help(ms.fit_predict)
Help on method fit_predict in module sklearn.base:
fit_predict(self, X, y=None) method of sklearn.cluster.mean_shift_.MeanShift instance
    Performs clustering on X and returns cluster labels.
    Parameters
    ----------
    X : ndarray, shape (n_samples, n_features)
        Input data.
    Returns
    -------
    y : ndarray, shape (n_samples,)
        cluster labels

dir(ms)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_param_names', 'bandwidth', 'bin_seeding', 'cluster_all', 'fit', 'fit_predict', 'get_params', 'min_bin_freq', 'seeds', 'set_params']

使用ms具有_labels_cluster_centers的属性,使用X数据,您可以使用标准错误分类惩罚技术估计模型的优度。 你不能再用fit_predict估计了,因为你只会得到标签,而不是聚类中心。因此,实际上,由您来设计集群中心取决于您的良好标准。

相关内容

  • 没有找到相关文章