【问题标题】:Using sklearn with multiple one hot encoded columns将 sklearn 与多个一热编码列一起使用
【发布时间】: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


    【解决方案1】:

    毕竟,我找到了自己问题的解决方案。我通过执行以下操作修复了它。

    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)显然知道如何处理这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 2017-11-05
      • 2020-06-02
      • 2019-05-02
      • 2023-03-18
      • 2020-10-28
      • 2017-04-27
      • 2013-12-11
      相关资源
      最近更新 更多