gpt4 book ai didi

python - 我应该如何转换 scikit-learn 管道中的多个键/值列?

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:50 24 4
gpt4 key购买 nike

我想构建一个 sklearn 管道来转换包含多个键/值对的数据:

import pandas as pd
D = pd.DataFrame([ ['a', 1, 'b', 2], ['b', 2, 'c', 3]], columns = ['k1', 'v1', 'k2', 'v2'])
print(D)

输出:

  k1  v1 k2  v2
0 a 1 b 2
1 b 2 c 3

DictVectorizer似乎合适,但我正在努力将每行中存在的多个键/值列转换为适合处理的字典。

DictVectorizer 似乎可以像这样输入:

row1 = {'a':1, 'b':2}
row2 = {'b':2, 'c':3}
data = [row1, row2]
# This is the output structure that I need:
print(data)

产量:

[{'a': 1, 'b': 2}, {'c': 3, 'b': 2}]

然后它会转化成这样的数组:

DictVectorizer( sparse=False ).fit_transform(data)

最终输出:

array([[ 1.,  2.,  0.],
[ 0., 2., 3.]])

如上所示,什么是合适的自定义转换器来转换多个键/值对?

最佳答案

我不知道一个特殊的转换器,但你可以使用一个简单的列表理解:

>>> data = [{row['k1']:row['v1'], row['k2']:row['v2']} for index, row in D.iterrows()]
>>> data
[{'a': 1, 'b': 2}, {'c': 3, 'b': 2}]

从这里你可以使用像这样的 dict vectorizer:

>>> v = sklearn.feature_extraction.DictVectorizer(sparse=False)
>>> X = v.fit_transform(data)
>>> print X
[[ 1. 2. 0.]
[ 0. 2. 3.]]

关于python - 我应该如何转换 scikit-learn 管道中的多个键/值列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31749812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com