如何使用 sklearn DictVectorizer 向量化列表 [英] How can i vectorize list using sklearn DictVectorizer

查看:41
本文介绍了如何使用 sklearn DictVectorizer 向量化列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 sklearn 文档站点上找到了下一个示例:

<预><代码>>>>测量值 = [... {'city': '迪拜', '温度': 33.},... {'城市':'伦敦','温度':12.},... {'城市':'旧金山','温度':18.},...]>>>从 sklearn.feature_extraction 导入 DictVectorizer>>>vec = DictVectorizer()>>>vec.fit_transform(measurements).toarray()数组([[ 1., 0., 0., 33.],[0., 1., 0., 12.],[ 0., 0., 1., 18.]])>>>vec.get_feature_names()['城市=迪拜','城市=伦敦','城市=旧金山','温度']

而且我需要对看起来像这样的字典进行矢量化:

<预><代码>>>>测量值 = [... {'city': ['Dubai','London'], '温度': 33.},... {'city': ['London','San Fransisco'], '温度': 12.},... {'城市':['旧金山'],'温度':18.},...]

获取下一个结果:

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

我的意思是 dict 的值应该是一个列表(或元组等).

我可以使用 DictVectorizer 或任何其他方式来做到这一点吗?

解决方案

将表示更改为

<预><代码>>>>测量值 = [... {'city=Dubai': True, 'city=London': True, 'temperature': 33.},... {'city=London': True, 'city=San Fransisco': True, '温度': 12.},... {'城市':'旧金山','温度':18.},...]

那么结果就如你所料:

<预><代码>>>>vec.fit_transform(measurements).toarray()数组([[ 1., 1., 0., 33.],[0., 1., 1., 12.],[ 0., 0., 1., 18.]])

I found next example on sklearn docs site:

>>> 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']

And i need to vectorize dict that looks like:

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

to get next result:

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

I mean the value of dict should be a list (or tuple etc).

Can i do this using DictVectorizer or in any other way?

解决方案

Change the representation to

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

Then the result is exactly as you expect:

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

这篇关于如何使用 sklearn DictVectorizer 向量化列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆