Blaze with Scikit学习K-Means

时间:2016-09-29 08:54:48

标签: python scikit-learn blaze

我正在尝试将Blaze数据对象设置为scikit kmeans函数。

from blaze import *
from sklearn.cluster import KMeans
data_numeric = Data('data.csv')
data_cluster = KMeans(n_clusters=5)
data_cluster.fit(data_numeric)

数据样本:

A  B  C
1  32 34
5  57 92
89 67 21

抛出错误:

enter image description here

我已经能够用Pandas Dataframe做到这一点。有没有办法将blaze对象提供给这个函数?

4 个答案:

答案 0 :(得分:5)

我认为您需要在适合之前将您的pandas数据帧转换为numpy数组。

from blaze import *
import numpy

from sklearn.cluster import KMeans
data_numeric = numpy.array(data('data.csv'))
data_cluster = KMeans(n_clusters=5)
data_cluster.fit(data_numeric)

答案 1 :(得分:2)

sklearn.cluster.KMeans不支持类型为blaze.interactive._Data的输入数据,这是您代码中data_numeric的类型。

您可以使用data_cluster.fit(data_numeric.peek())来填充DataFrame支持的sklearn.cluster.KMeans类型的已传输data_numeric。

答案 2 :(得分:1)

我建议您选择群集数量(K)远小于数据集中的训练样本数量。当您想要的簇数大于或等于训练样本数时,运行K-Means算法是不对的。 当您尝试将具有不良形状的闪耀对象传递给KMeans函数时,会发生此错误。 请检查 : https://blaze.readthedocs.io/en/latest/csv.html

答案 3 :(得分:0)

是的,在您适应之前,您必须将您的pandas数据帧转换为numpy数组,现在它的工作正常...我认为@aberger已经回答了。

谢谢你!