如何转换嵌套列表供sklearn使用?

2024-06-08 21:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个长嵌套列表,其中每个嵌入的列表可以有不同的长度或元素。我想把它展平,以便在模型中使用每个变量作为预测因子。嵌套列表如下所示:

  [[u'Burgers',u'Bars'],[u'Local Services', u'Dry Cleaning & Laundry'],[u'Shopping', u'Eyewear & Opticians'],[u'Restaurants'],...]

我想实现的是我可以在模型中用作预测因子的东西,特别是在sklearn机器学习中。列表中的元素应该用来预测感兴趣的变量,即分数。期望的转换结果如下

^{pr2}$

有人能帮我一把吗?我被困在这里了。非常感谢。在


Tags: 模型元素列表localsklearn因子dryshopping
2条回答

您可以首先展平列表,然后从平坦的列表为各种构建分数,并通过嵌套列表理解将1分配给给定子列表(称为category)中找到的值,如果找不到,则使用嵌套列表理解

Y是要预测的类的原始列表:

from itertools import chain

Y = [[u'Burgers',u'Bars'],[u'Local Services', u'Dry Cleaning & Laundry'],[u'Shopping', u'Eyewear & Opticians'],[u'Restaurants']]

classes = list(chain.from_iterable(Y))

scores = [[1 if c in category else 0 for c in classes] for category in Y]
print(scores)
# [[1, 1, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 1]]

熊猫的方法是:

import pandas as pd
L = [['Burgers', 'Bars'], ['Local Services', 'Dry Cleaning & Laundry'], ['Shopping', 'Eyewear & Opticians'], ['Restaurants']]

ser = pd.Series([';'.join(i) for i in L]).str.get_dummies(';')

enter image description here

可以使用.values获取数组:

^{pr2}$

这假设您在这些字符串中没有;,您可以用另一个分隔符来更改它。{但是通常情况下,使用scia2}进行预处理时,也需要先使用scia2}进行编码。在

相关问题 更多 >