2014-06-16 21 views
7

kullanarak listeyi vektörize edebilirsiniz:Nasıl ben sklearn dokümanlar sitesinde sonraki örnek bulundu sklearn DictVectorizer

>>> measurements = [ 
...  {'city': 'Dubai', 'temperature': 33.}, 
...  {'city': 'London', 'temperature': 12.}, 
...  {'city': 'San Fransisco', 'temperature': 18.}, 
... ] 

>>> from sklearn.feature_extraction import DictVectorizer 
>>> vec = DictVectorizer() 

>>> vec.fit_transform(measurements).toarray() 
array([[ 1., 0., 0., 33.], 
     [ 0., 1., 0., 12.], 
     [ 0., 0., 1., 18.]]) 

>>> vec.get_feature_names() 
['city=Dubai', 'city=London', 'city=San Fransisco', 'temperature'] 

Ve benziyor dicti vektörize gerekir:

>>> measurements = [ 
...  {'city': ['Dubai','London'], 'temperature': 33.}, 
...  {'city': ['London','San Fransisco'], 'temperature': 12.}, 
...  {'city': ['San Fransisco'], 'temperature': 18.}, 
... ] 

sonraki sonuç almak için:

array([[ 1., 1., 0., 33.], 
     [ 0., 1., 1., 12.], 
     [ 0., 0., 1., 18.]]) 

Dict değeri bir liste (veya tuple vb.) Olmalıdır.

Bunu DictVectorizer veya başka bir şekilde kullanabilir miyim?

+1

'DictVectorizer' dize değişkenleri için tek sıcak kodlama yapar ve aksi yüzer. Yani hayır, bunu DictVectorizer ile yapamazsınız. Bu senin durumundaysa, kendimle bir şeyler yazabilirim. – Korem

+1

@TalKremerman Mükemmel bir şekilde yapılabilir, cevabımı görün. –

cevap

17

Değişim

>>> measurements = [ 
...  {'city=Dubai': True, 'city=London': True, 'temperature': 33.}, 
...  {'city=London': True, 'city=San Fransisco': True, 'temperature': 12.}, 
...  {'city': 'San Fransisco', 'temperature': 18.}, 
... ] 

için temsili Sonra sonuç beklediğiniz gibi aynen geçerli:

>>> vec.fit_transform(measurements).toarray() 
array([[ 1., 1., 0., 33.], 
     [ 0., 1., 1., 12.], 
     [ 0., 0., 1., 18.]]) 
İlgili konular