为什么我得到不同的输出行
print ms.fit_predict(val), p_all[idx]
ms.fit_predict(val)的输出都是0。
<>之前导入numpy为np从sklearn。cluster import MeanShift, estimate_bandwidthX = 100*np.random.random_sample((500,15))-100X = np。阵列(X, dtype = np.float)bandwidth = estimate_bandwidth(X, quantile=0.01)ms = MeanShift(bandwidth=bandwidth, bin_播播=True)ms.fit (X)p_all = ms.fit_predict(X)对于idx, val在enumerate(X)中:打印瓦尔打印X [idx]打印ms.fit_predict(val), p_all[idx]您正在重新拟合循环内的单个数据点。p_all
是X
中所有数据拟合的聚类分配。循环运行后,如果打印出ms.cluster_centers_
,它将与val
相同,因为它只适合到val
。因此,将只有一个集群,其索引为0
。
我猜你对MeanShift
的接口感到困惑。它不能在线改装。每次调用fit()
或fit_predict()
时,它只适合您传递给它的数据,而忽略旧的解决方案。
我建议看一下sklearn的MeanShift文档