Blaze с 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 этой функции?

Ответ 1

Я думаю, вам нужно преобразовать ваш фреймворк 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)

Ответ 2

sklearn.cluster.KMeans не поддерживают входные данные с типом blaze.interactive._Data, который является типом data_numeric в вашем коде.

Вы можете использовать data_cluster.fit(data_numeric.peek()) для установки переданного data_numeric с типом DataFrame, поддерживаемым sklearn.cluster.KMeans.

Ответ 3

Я бы предположил, что вы выбрали количество кластеров (K) намного меньше, чем количество примеров обучения, которые у вас есть в вашем наборе данных. Неправильно запускать алгоритм K-Means, когда количество желаемых кластеров больше или равно количеству примеров обучения. Ошибка возникает, когда вы пытаетесь передать объект blaze с нежелательной формой, в функцию KMeans. Пожалуйста, проверьте: https://blaze.readthedocs.io/en/latest/csv.html

Ответ 4

Да, прежде чем вы подойдете, вам нужно будет преобразовать ваш фреймворк pandas в массив numpy, теперь его работы прекрасны... я думаю, что @aberger уже ответил.

Благодарю вас!