sklearn MeanShift 不同的预测输出

sklearn MeanShift different prediction output

为什么我从第

print ms.fit_predict(val), p_all[idx]

行得到不同的输出

ms.fit_predict(val) 的输出都是 0。

import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth

X = 100*np.random.random_sample((500,15))-100
X = np.array(X, dtype=np.float)
bandwidth = estimate_bandwidth(X, quantile=0.01)
ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
p_all = ms.fit_predict(X)
for idx, val in enumerate(X):
    print val
    print X[idx]
    print ms.fit_predict(val), p_all[idx]

您正在循环内重新拟合到单个数据点。 p_all是对X中所有数据的拟合聚类分配。循环运行后,如果你打印出ms.cluster_centers_,它会和val一样,因为它适合onlyval。因此,将只有一个集群,其索引为 0.

我猜您对 MeanShift 的界面感到困惑。它不在线改装。每次你调用 fit()fit_predict(),它只适合你传递给它的数据,而忽略旧的解决方案。

我建议看看 sklearn MeanShift documentation