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 уже ответил.
Благодарю вас!