10

我正在尝试使 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

它的抛出错误:

在此处输入图像描述

我已经能够使用 Pandas Dataframe 做到这一点。有什么方法可以将 blaze 对象提供给这个函数?

4

4 回答 4

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)
于 2016-10-07T14:53:30.090 回答
2

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

您可以使用支持的data_cluster.fit(data_numeric.peek())类型来匹配传输的 data_numeric 。DataFramesklearn.cluster.KMeans

于 2016-10-10T06:22:19.677 回答
1

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

于 2016-10-06T09:14:55.600 回答
0

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

谢谢你!

于 2016-10-12T06:30:07.377 回答