tfidfvectorizer tfidftransformer spanish idf python scikit-learn

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.]])