我正在制作一个用于回归的序列神经网络,其中包含 3 个密集层,这些层将在一个简单的数据集上进行训练。但在我开始执行模型的那部分代码之前,我得到的特征形状与数据集中的列不同。数据集的列包括:
- 一个分类的“名称”列,它是单热编码的
2)其他 20 列是整数/浮点数
我的数据集中有 21 个特征。ValueError 告诉我它期待 36 但只有 21 当我使用 X.shape 检查我的数据集的形状时,它告诉我形状是 (98,36)。我的数据集有 98 行 x 21 列。我的数据集中只有 21 个特征。它是如何变成 36 的形状的?
因此,当我尝试运行我的 Keras 模型时,我当然会收到此错误
错误 ValueError:层序贯_1 的输入 0 与层不兼容:输入形状的预期轴 -1 具有值 21,但接收到形状的输入(无,36)
这是我导入和清理数据集时的代码
导入数据集
N_df_1 = pd.read_csv('/', error_bad_lines=False) #I can't show dataset paths
N_df_2 = pd.read_csv('/', error_bad_lines=False)
N_df_3 = pd.read_csv('/', error_bad_lines=False)
N_df_4 = pd.read_csv('/', error_bad_lines=False)
N_df_5 = pd.read_csv('/', error_bad_lines=False)
N_df_6 = pd.read_csv('/', error_bad_lines=False)
N_df_7 = pd.read_csv('/', error_bad_lines=False)
N_df_8 = pd.read_csv('/', error_bad_lines=False)
N_df_9 = pd.read_csv('/', error_bad_lines=False)
N_df_10 = pd.read_csv('/', error_bad_lines=False)
清理数据
#Had to combine datasets through concatenation
N_df = pd.concat([N_df_1, N_df_2, N_df_3, N_df_4,N_df_5 ,N_df_6, N_df_7,N_df_8, N_df_9, N_df_10 ignore_index=False, axis=0)
#Getting rid of all NaN values
N_df.dropna(axis = 0, how = 'all', inplace = True)
编码分类数据
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [0])], remainder='passthrough')
X = np.array(ct.fit_transform(N_df))