我有一个带有字符串值的嵌套列表,我用它来创建一个包含二进制值的列表。我在我的模型中使用了转换后的列表作为预测变量。
包含字符串值的列表 -
D = [["An", "Cn"], ["Bs", "Gt"], ["Cd", "El"], ["Cd", "Cn", "En"]]
用
D_tran = pd.Series([';'.join(i) for i in D]).str.get_dummies(';')
我获得了D_tran
An Bs Cd Cn El En Gt
0 1 0 0 1 0 0 0
1 0 1 0 0 0 0 1
2 0 0 1 0 1 0 0
3 0 0 1 1 0 1 0
用
D_list = D_tran.values.tolist()
我获得了D_list:
[[1, 0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 0, 1], [0, 0, 1, 0, 1, 0, 0], [0, 0, 1, 1, 0, 1, 0]]
我用它来创建一个线性回归模型。但是,要测试我的模型,我需要将测试数据中的字符串值转换为二进制。测试数据看起来像 -
R = [["Bs"], ["Cd", "El"], ["An"]]
我的问题是如何将R
映射到D_list
的框架中以获取
R = [[0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0]]
请注意,在测试数据中,只显示部分预测变量。
非常感谢您的协助。
答案 0 :(得分:1)
您基本上可以执行与之前相同的步骤,只需进行一次小修改:创建虚拟数据框后,使用D_tran
列R_tran = pd.Series([';'.join(i) for i in R]).str.get_dummies(';')
R_tran = R_tran.reindex(columns=D_tran.columns, fill_value=0)
R_list = R_tran.values.tolist()
:
No route matches [POST] "/"