Python 用Scikit闪耀学习K-Means
我正在尝试将Blaze数据对象与scikit kmeans函数相匹配Python 用Scikit闪耀学习K-Means,python,scikit-learn,blaze,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 它的抛出错误: 我已经能够用熊猫数
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
它的抛出错误:
我已经能够用熊猫数据框来做了。有没有办法将blaze对象提供给此函数?我建议您选择的簇数(K)要比数据集中的训练示例数小得多。当所需的簇数大于或等于训练示例数时,运行K-Means算法是不对的。 当您试图将形状不理想的blaze对象传递给KMeans函数时,会发生此错误。 请检查:
我认为您需要先将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)
sklearn.cluster.KMeans
不支持类型为blaze.interactive.\u data
的输入数据,这是代码中的数字数据类型
您可以使用
data\u cluster.fit(data\u numeric.peek())
将传输的数据\u numeric与sklearn.cluster.KMeans
支持的类型DataFrame
匹配。是的,在匹配之前,您必须将pandas数据帧转换为numpy数组,现在它工作正常了……我想@aberger已经回答了
谢谢大家! 仔细检查要传递到k-means的数组的大小。通常,在传递一维数组时会引发此错误。blaze对象中有多少个样本?我正在向函数传递大约30000行数据,这里仅粘贴了3行样本。您需要使用
data_cluster.fit(data_numeric)
命令中的重塑函数,并将数组重塑为二维数组形式,scikit的K-Means可以接受。转换为数据帧是一个非常昂贵的过程,但似乎没有其他方法可以做到这一点。