我正在尝试将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对象提供给这个函数?
答案 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已经回答了。
谢谢你!