为什么我从行
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]
答案 0 :(得分:1)
您将在循环内重新拟合到单个数据点。 p_all
是适合X
中所有数据的群集分配。循环运行后,如果您打印ms.cluster_centers_
,它将与val
相同,因为它只适用于 到val
。因此,只有一个集群,其索引为0
。
我猜你对MeanShift
的界面感到困惑。它不会在线改装。每次拨打fit()
或fit_predict()
时,它只适用于您传递的数据,并忽略旧的解决方案。