sklearn MeanShift不同的预测输出

时间:2015-10-08 13:19:03

标签: python scikit-learn

为什么我从行

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]

1 个答案:

答案 0 :(得分:1)

您将在循环内重新拟合到单个数据点。 p_all是适合X中所有数据的群集分配。循环运行后,如果您打印ms.cluster_centers_,它将与val相同,因为它只适用于 val。因此,只有一个集群,其索引为0

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

我建议您查看sklearn MeanShift documentation