错误:设置具有keras序列的数组元素

2024-05-05 23:43:32 发布

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

我正在构建一个CNN,在尝试执行以下操作时遇到此错误:

from tensorflow.keras import utils
trainY=utils.to_categorical(trainY)

ValueError: setting an array element with a sequence.

我的列车实际上是标签,它看起来像这样:

labels
array([list(['noise']), list(['noise']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise']),
       list(['noise', 'point_source']), list(['noise']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise']),

有什么建议可以解决这个问题吗? 非常感谢


1条回答
网友
1楼 · 发布于 2024-05-05 23:43:32

你可以用sklearn.preprocessing.MultiLabelBinarizer来做这件事

import numpy as np

labels = np.array([list(['noise']), list(['noise']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise']),
       list(['noise', 'point_source']), list(['noise']),
       list(['noise', 'point_source']), list(['noise', 'point_source']),
       list(['noise']), list(['noise', 'point_source']),
       list(['noise', 'point_source']), list(['noise']), list(['noise'])])

那就是你所拥有的。现在,您需要执行以下操作:

from sklearn.preprocessing import MultiLabelBinarizer

as_list = [list(i) for i in labels]

mlb = MultiLabelBinarizer()
ohe = mlb.fit_transform(as_list) # you might need to add .astype(float)

这就是您将得到的结果:

array([[1, 0],
       [1, 0],
       [1, 1],
       [1, 0],
       [1, 1],
       [1, 1],
       [1, 1],
       [1, 1], ...

相关问题 更多 >