Блейз с помощью Scikit изучает K-средства

#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
  

Его ошибка выброса :

введите описание изображения здесь

Я смог сделать это с помощью фрейма данных Pandas. Есть ли способ передать объект blaze в эту функцию?

Комментарии:

1. Дважды проверьте, чтобы увидеть размер массива, который вы передаете в k-means. Обычно эта ошибка возникает при передаче одномерного массива.

2. Сколько образцов у вас есть в вашем объекте 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

Комментарии:

1. Я передаю в функцию около 30000 строк данных, здесь я вставил только пример 3 строк.

2. Вам нужно использовать функцию reshape в data_cluster.fit(data_numeric) команде и преобразовать ваш массив в форму 2D-массива, которую примет K-Means scikit.

Ответ №4:

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

Спасибо!

Комментарии:

1. преобразование в dataframe — дорогостоящий процесс, но, похоже, другого способа сделать это нет.