使用 Scikit Learn K-Means 大放异彩

Blaze with Scikit Learn K-Means

我正在尝试使 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 对象提供给此函数?

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

我认为您需要先将 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._Data 类型的输入数据,这是您代码中 data_numeric 的类型。

您可以使用 data_cluster.fit(data_numeric.peek()) 将传输的 data_numeric 与 sklearn.cluster.KMeans 支持的类型 DataFrame 相匹配。

是的,在你适合之前,你必须需要将你的 pandas 数据帧转换成一个 numpy 数组,现在它工作正常......我想 @aberger 已经回答了。

谢谢!