我一直试图找出多个热编码nparray的问题。
我正在使用一个数据框,其中每个字符都是np_array中表示的单一编码。
例如,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.
我可以,但这就是我的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.]),
...,
我很困惑,不知道该怎么做:
我想说你可以给出Feature1,Feature2,Feature3,其中每个特征都是整个OHE数组。 但是,每次我尝试它时都会出现类似于:
的错误答案 0 :(得分:0)
毕竟我找到了解决自己问题的方法。我通过执行以下操作来修复它。
X = df.loc[:, 'char_0':'char_n']
X = X.values
X = np.array(X)
print(X.shape)
It turned out it was an array of dimensions:
(nsamples * ncolumns * OHElength)
nsamples, nx, ny = X.shape
X = X.reshape((nsamples,nx*ny))
所以这只是返回一个带尺寸的df(nsamples * ncols列表乘以一个热编码中的字符数)。
Sklearn(和Tensorflow)显然知道如何处理这个问题。