Python Scipy Kmeans以TypeError退出

Python Scipy Kmeans以TypeError退出,python,scipy,runtime-error,k-means,Python,Scipy,Runtime Error,K Means,运行下面的代码时,我得到一个TypeError,它说: scipy.cluster中第342行的“文件”\u vq.pyx.\u vq.update\u cluster的意思是 TypeError:不支持浮点或双精度以外的类型“ 我不知道如何解决这个问题 更新: 完全回溯: 回溯(最近一次呼叫最后一次): 文件“…\temp.py”,第110行,在 代码,dist=scipy.cluster.vq.kmeans2(ar,NUM_CLUSTERS) 文件“…\site packages\scipy

运行下面的代码时,我得到一个TypeError,它说:

scipy.cluster中第342行的“文件”\u vq.pyx.\u vq.update\u cluster的意思是 TypeError:不支持浮点或双精度以外的类型“

我不知道如何解决这个问题

更新:

完全回溯:

回溯(最近一次呼叫最后一次):
文件“…\temp.py”,第110行,在
代码,dist=scipy.cluster.vq.kmeans2(ar,NUM_CLUSTERS)
文件“…\site packages\scipy\cluster\vq.py”,第642行,kmeans2格式
新的代码书,有成员=\u vq.update\u cluster\u means(数据、标签、nc)
文件“_vq.pyx”,第342行,在scipy.cluster中
类型错误:不支持浮点或双精度以外的类型执行以下操作:

ar = ar.reshape(scipy.product(shape[:2]), shape[2])
print(ar.dtype)
您将看到,您使用类型为uint8的数据调用kmeans

由于kmeans在理论上是在d维实向量上定义的,所以scipy也不喜欢它(如错误中给出的)

所以,只要做:

ar = ar.reshape(scipy.product(shape[:2]), shape[2]).astype(float)

这样的强制转换会使我的示例一直运行到打印,打印也需要更改以反映给定的类型。

此错误消息不完整(可能会确切地告诉您哪一行代码不起作用,尽管我们可以猜测),并且在识别这一行时,打印出输入的类型,例如uint8。使用一个图像示例也会有所帮助,我们可以访问。(顺便说一下:大多数人更喜欢sklearn的kmeans)。所有图片都会出现这种情况。非常感谢!那就行了:)那会让我永远找不到的!
ar = ar.reshape(scipy.product(shape[:2]), shape[2]).astype(float)