k-means上sklearn中的dtype不匹配
Posted
技术标签:
【中文标题】k-means上sklearn中的dtype不匹配【英文标题】:dtype mismatch in sklearn on k-means 【发布时间】:2014-02-08 19:17:56 【问题描述】:我正在尝试运行此问题的第一个答案 Python Relating k-means cluster to instance 但是我收到以下错误:
Traceback (most recent call last):
File "test.py", line 16, in <module>
model = sklearn.cluster.k_means(a, clust_centers)
File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.14.1-py2.7-linux-i686.egg/sklearn/cluster/k_means_.py", line 267, in k_means
x_squared_norms=x_squared_norms, random_state=random_state)
File "/usr/local/lib/python2.7/dist-packages/scikit_learn-0.14.1-py2.7-linux-i686.egg/sklearn/cluster/k_means_.py", line 386, in _kmeans_single
centers = _k_means._centers_dense(X, labels, n_clusters, distances)
File "_k_means.pyx", line 280, in sklearn.cluster._k_means._centers_dense (sklearn/cluster/_k_means.c:4268)
ValueError: Buffer dtype mismatch, expected 'DOUBLE' but got 'float'
当我第一次运行这个程序时,它就成功了。但随后的运行因该错误而失败。
系统规格:
Python 2.7.3 (default, Sep 26 2013, 20:08:41)
[GCC 4.6.3] on linux2
numpy.__version__
'1.8.0'
sklearn.__version__
'0.14.1'
ubuntu 12.04
【问题讨论】:
输入矩阵的dtype
是什么?
【参考方案1】:
我在尝试对自己的数据运行 k-means 时遇到了这个问题。创建一个数据类型为“double”的新数组解决了我的问题。
array_double = np.array(a, dtype=np.double)
我的数据以前存储为“float32”。
【讨论】:
以上是关于k-means上sklearn中的dtype不匹配的主要内容,如果未能解决你的问题,请参考以下文章
Tfidf 转换器(sklearn)导致:“类型不支持转换:(dtype('O'),)”
Sklearn k-means聚类(加权),确定每个特征的最佳样本权重?