【发布时间】:2013-10-02 12:56:06
【问题描述】:
我有一个包含 7265 个样本和 132 个特征的数据集。 我想使用 scikit learn 的 meanshift 算法,但我遇到了这个错误:
Traceback (most recent call last):
File "C:\Users\OJ\Dropbox\Dt\Code\visual\facetest\facetracker_video.py", line 130, in <module>
labels, centers = getClusters(data,clusters)
File "C:\Users\OJ\Dropbox\Dt\Code\visual\facetest\facetracker_video.py", line 34, in getClusters
ms.fit(np.array(dataarray))
File "C:\python2.7\lib\site-packages\sklearn\cluster\mean_shift_.py", line 280, in fit
cluster_all=self.cluster_all)
File "C:\python2.7\lib\site-packages\sklearn\cluster\mean_shift_.py", line 137, in mean_shift
nbrs = NearestNeighbors(radius=bandwidth).fit(sorted_centers)
File "C:\python2.7\lib\site-packages\sklearn\neighbors\base.py", line 642, in fit
return self._fit(X)
File "C:\python2.7\lib\site-packages\sklearn\neighbors\base.py", line 180, in _fit
raise ValueError("data type not understood")
ValueError: data type not understood
我的代码:
dataarray = np.array(data)
bandwidth = estimate_bandwidth(dataarray, quantile=0.2, n_samples=len(dataarray))
ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(dataarray)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
如果我检查我看到的数据变量的数据类型:
print isinstance( dataarray, np.ndarray )
>>> True
带宽为0.925538333061,dataarray.dtype为float64
我正在使用 scikit learn 0.14.1
我可以与 sci-kit 中的其他算法(尝试过 kmeans 和 dbscan)进行聚类。我做错了什么?
编辑:
数据可以在这里找到: (泡菜格式):http://ojtwist.be/datatocluster.p 和:http://ojtwist.be/datatocluster.npz
【问题讨论】:
-
什么是
dataarray.dtype? -
@larsmans 是 float64
-
我无法使用当前的 scikit-learn 或 0.13 重现此问题。你用的是哪个版本?
-
0.14,我看看能不能上传数据。
-
可以在这里找到pickle格式的数据:ojtwist.be/datatocluster.p
标签: python machine-learning scikit-learn