【发布时间】:2018-04-21 14:43:56
【问题描述】:
我一直在尝试解决多个热编码 nparray 的问题。
我正在使用一个数据帧,其中每个字符都是以 np_array 表示的 onehot 编码。
例如,X 特征应包含字符的所有编码,其中 y 是单个标签。
当我只对每个样本的第一个字符进行 OHE 编码并转换为列表而不是 nparray 时,我的 sklearn 拟合函数起作用。这是我用来完成此操作的代码示例:
X = df[['char_0']]
X_testing = X.values
empty_list = list()
for entry in X_testing:
empty_list.append(entry[0].tolist())
现在这会为所有示例返回 char_0 的 OHE np 数组的单个列表:
[ [example0_char0] , [example1_char0] , ... , [examplen_char0] ]
X 应该是这样的:
index, char_0, char_1, ... , char_n
0, [encoding_char0], [encoding_char1], ... , [encoding_charn]
1, [encoding_char0], [encoding_char1], ... , [encoding_charn]
etc.
其中每个 encoding_char 包含一个长度为 38 OHE 的 numpy 数组。
y 应该是这样的:
index, label
0, 1
1, 1
etc.
我的 y 没问题,但这是我的 X 的样子:
array([[ array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]),
...,
我很困惑,不知道该怎么办:
- 我应该将每个特征编码转换为列表(还是应该保留为 np 数组)?
- 我可以一次在多个编码上训练我的算法吗?还是只能适合单个 OHE,而不是同时适合所有字符?
我想说你可以给出 Feature1、Feature2、Feature3,其中每个特征都是一个完整的 OHE 数组。 但是,每次我尝试时都会收到类似于以下内容的错误:
- ValueError:使用序列设置数组元素。
- ValueError: 找到暗淡为 3 的数组。预计估计器
【问题讨论】:
标签: arrays numpy one-hot-encoding