2016-09-29 19 views
10

Blaci veri nesnesini scikit kmeans işlevine sığdırmaya çalışıyorum.Scikit ile Bilgelik Öğrenin K-Means'ı Öğrenin

from blaze import * 
from sklearn.cluster import KMeans 
data_numeric = Data('data.csv') 
data_cluster = KMeans(n_clusters=5) 
data_cluster.fit(data_numeric) 

Veri Örnek:

A B C 
1 32 34 
5 57 92 
89 67 21 

Onun atma hatası: Ben Pandalar Dataframe ile yapmak mümkün olmuştur

enter image description here

. Alev nesnesini bu işleve beslemenin herhangi bir yolu var mı?

+0

K-aracına geçirdiğiniz dizinin boyutunu görmek için çift denetleyin. Genellikle 1-D dizisi geçtiğinde bu hata atılır. – jonplaca

+0

Alev nesnesinde kaç adet var? – MMF

cevap

5

Ben size uyacak önce numpy diziye içine pandalar dataframe dönüştürmek gerek.

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) 
1

Veri kümenizdeki eğitim örneklerinden daha küçük olacak şekilde kümelerin sayısını (K) seçmenizi öneririm. İstediğiniz küme sayısı eğitim örneklerinin sayısına eşit veya daha büyük olduğunda K-Means algoritmasını çalıştırmak doğru değildir. Hata, istenmeyen nesne ile alev nesnesini KMeans işlevine iletmeye çalıştığınızda oluşur. kontrol edin: https://blaze.readthedocs.io/en/latest/csv.html

+0

Fonksiyon için yaklaşık 30000 veri satırı geçiyorum, burada sadece örnek 3 satır yapıştırdım. –

+0

Yeniden biçimlendirme işlevini 'data_cluster.fit (data_numeric)' komutunda kullanmanız ve dizininin 2D dizisi biçiminde yeniden şekillendirmeniz gerekir, bu scikit'in K-Means'i kabul eder. Veri çerçevesine dönüştürülen – PJay

2

sklearn.cluster.KMeans kodunuzda data_numeric türünü olan tip blaze.interactive._Data ile giriş verilerini desteklemez.

sklearn.cluster.KMeans tarafından desteklenen DataFrame türüyle aktarılan data_numeric'e sığdırmak için data_cluster.fit(data_numeric.peek()) kullanabilirsiniz.

0

Evet, pandas dataframe'inizi bir numpy dizisine dönüştürmeniz gerekiyorsa, şimdi iyi çalışıyor ... bence @aberger zaten yanıtladı.

Teşekkürler!

+1

, bir açıklayıcı işlemdir, ancak bunu yapmanın başka bir yolu yoktur. –