【发布时间】:2014-08-06 16:16:40
【问题描述】:
我在 sklearn 文档网站上找到了下一个示例:
>>> 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']
我需要对看起来像这样的 dict 进行矢量化:
>>> measurements = [
... {'city': ['Dubai','London'], 'temperature': 33.},
... {'city': ['London','San Fransisco'], 'temperature': 12.},
... {'city': ['San Fransisco'], 'temperature': 18.},
... ]
得到下一个结果:
array([[ 1., 1., 0., 33.],
[ 0., 1., 1., 12.],
[ 0., 0., 1., 18.]])
我的意思是 dict 的值应该是一个列表(或元组等)。
我可以使用 DictVectorizer 或以任何其他方式做到这一点吗?
【问题讨论】:
-
DictVectorizer对字符串变量进行一次热编码,否则浮动。所以不,你不能用 DictVectorizer 做到这一点。如果这是你的情况,我会自己写一些东西。 -
@TalKremerman 这是完全可行的,看我的回答。
标签: python scikit-learn