考虑到我已经使用 OneHotEncoder 对数据进行了预处理,当我在 ANN 中添加输入层时,输入形状编号应该是多少?
Posted
技术标签:
【中文标题】考虑到我已经使用 OneHotEncoder 对数据进行了预处理,当我在 ANN 中添加输入层时,输入形状编号应该是多少?【英文标题】:What should be the input-shape number when i am adding the input layer in my ANN, considering that I have preprocessed the data with OneHotEncoder? 【发布时间】:2020-12-13 13:05:22 【问题描述】:我的数据集具有分类和数字特征。数据集有 7 个自变量和 1 个因变量(称为产品)。数据集如下所示:
一般来说,有3个分类变量,其中7个不同的类别对应变量p1,2个对应p2,2个对应p3。从 p4-p7 和产品都是数字。
对于分类变量(第 0、1 和 2 列),需要使用 OneHotEncoder 对数据进行预处理。
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct= ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0,1,2])], remainder = 'passthrough')
X = np.array(ct.fit_transform(X))
从该编码的结果来看,列数增加了。我们可以在下一张图片中看到这种变化。
如我们所见,每个类别都有自己的代码,并且列数增加了。现在我在数据集中得到了“15 列”(11 + 4)。
那么,当我构建 ANN 时,在输入层中,我应该在输入形状中添加什么值,7 还是 15?
ann.add(tf.keras.Input(shape=(??,)))
【问题讨论】:
请重新阅读 How to ask,因为您第一次阅读时似乎错过了一些关键点,即“DO NOT发布代码、数据、错误消息等的图像。 - 将文本复制或输入到问题中”(强调原文)。看看为什么an image of your code is not helpful。 【参考方案1】:在我的代码中运行拟合线后,我意识到输入形状数必须等于数据预处理后获得的列数。否则会报错。
【讨论】:
以上是关于考虑到我已经使用 OneHotEncoder 对数据进行了预处理,当我在 ANN 中添加输入层时,输入形状编号应该是多少?的主要内容,如果未能解决你的问题,请参考以下文章
在 Pandas 中加入一个数据集和 OneHotEncoder 的结果
如何在 sklearn 中使用 OneHotEncoder 的输出?
如何改进此代码以使用 OneHotEncoder? [复制]
sklearn中的LabelEncoder和OneHotEncoder的区别