【发布时间】:2014-01-08 06:36:47
【问题描述】:
我通过 DictVectorizer (0.14) 运行的字典列表具有已编码为整数的特定分类值:
> dictionary_list[0:2]
输出:
[{u'Life': 3377, u'SerumX': 1015, u'duration': 3, u'gene_name': 37},
{u'Life': 11655, u'SerumX': 1913, u'duration': 3, u'gene_name': 1}]
vec = DictVectorizer(sparse=False)
X = vec.fit_transform(dictionary_list)
例如基因 APC、AXIN1、BLM 可能通过某种任意方法编码为 37、1、15。也就是说这些数字不是字符/ngrams等的一些NLP表达。
我目前正在更新此列表中的字典,以将键“gene_name”的值从 int 转换为 str:
for dicts in dictionary_list:
dicts.update((k, str(v)) for k, v in dicts.iteritems() if k == 'gene_name')
> dictionary_list[0:2]
输出:
[{u'Life': 3377, u'SerumX': 1015, u'duration': 3, u'gene_name': '37'},
{u'Life': 11655, u'SerumX': 1913, u'duration': 3, u'gene_name': '1'}]
我希望优化速度并避免在通过 DictVectorizer 之前更新 dict。我很好奇是否有办法以某种方式将我的列表传递给 DictVectorizer,我可以让它强制将“gene_name”的值作为字符串来利用内置编码。
非常感谢 scikit-learn 团队的出色工作。
【问题讨论】:
-
我不确定你的意思。数据最初是什么样的?
-
谢谢@larsmans,我刚刚编辑了问题。
标签: python dictionary numpy scikit-learn