python - tfidftransformer - ¿Cómo puedo vectorizar la lista usando sklearn DictVectorizer?
tfidfvectorizer (1)
Encontré el siguiente ejemplo en el sitio de sklearn docs:
>>> 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'']
Y necesito vectorizar el dict que se ve así:
>>> measurements = [
... {''city'': [''Dubai'',''London''], ''temperature'': 33.},
... {''city'': [''London'',''San Fransisco''], ''temperature'': 12.},
... {''city'': [''San Fransisco''], ''temperature'': 18.},
... ]
para obtener el siguiente resultado:
array([[ 1., 1., 0., 33.],
[ 0., 1., 1., 12.],
[ 0., 0., 1., 18.]])
Quiero decir que el valor de dict debe ser una lista (o tupla, etc.).
¿Puedo hacer esto usando DictVectorizer o de otra manera?
Cambiar la representación a
>>> measurements = [
... {''city=Dubai'': True, ''city=London'': True, ''temperature'': 33.},
... {''city=London'': True, ''city=San Fransisco'': True, ''temperature'': 12.},
... {''city'': ''San Fransisco'', ''temperature'': 18.},
... ]
Entonces el resultado es exactamente como esperabas:
>>> vec.fit_transform(measurements).toarray()
array([[ 1., 1., 0., 33.],
[ 0., 1., 1., 12.],
[ 0., 0., 1., 18.]])