假设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
估计了,因为你只会得到标签,而不是聚类中心。因此,实际上,由您来设计集群中心取决于您的良好标准。