【发布时间】:2021-04-22 02:34:20
【问题描述】:
我有这样的分类数据集:
| Name | Color (Category) |
|---|---|
| Car | Red |
| Grass | Green |
| Sky | Blue |
| Apple | Red,Green |
| Photo | Black,White |
所以一行可以有一个或几个类别。
我也在使用 OneHotEncoder 分类:
data = asarray([['red'], ['green'], ['blue']])
print(data)
encoder = OneHotEncoder(sparse=False)
onehot = encoder.fit_transform(data)
print(onehot)
输出将是
[['red']
['green']
['blue']]
[[0. 0. 1.]
[0. 1. 0.]
[1. 0. 0.]]
是否可以对两个或更多类别使用 OneHotEncoding?
喜欢Red,Green 转换为[0. 1. 1.]?
我正在阅读 OneHotEncoder 和 tensorflow.keras.utils.to_categorical 文档,但找不到这样的解决方案。
另一种解决方案
我在某个地方遇到了意见,我需要将我的逻辑更改为:
| Name | Color (Category) (Remove) | Red | Green | Blue | Black | White |
|---|---|---|---|---|---|---|
| Car | //Red | True | False | False | False | False |
| Grass | //Green | False | True | False | False | False |
| Sky | //Blue | False | False | True | False | False |
| Apple | //Red,Green | True | True | False | False | False |
| Photo | //Black,White | False | False | False | True | True |
因此,只需忽略 Color 列,并为 Sequential 模型制作少量输出。
但是这不是和将Red,Green 转换成[0. 1. 1.] 完全一样吗?
我感觉我错过了一些明显的东西,如果我的问题很愚蠢,对不起。
【问题讨论】:
标签: python neural-network one-hot-encoding