CNN用于对CSV文件中的数字数据集进行分类

时间:2020-10-05 11:49:53

标签: python machine-learning classification conv-neural-network

我正在尝试从CSV文件的数字数据集中应用CNN,但是尺寸存在问题。我的数据集包含26个要素/列和1200行/样本。数据集有3个标签。

Dataset = pd.read_csv("...", header=0)
features = ['...']
x = Dataset [features]
y = Dataset .Classifier
sc = PowerTransformer()
x = sc.fit_transform(x)

x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.75)

y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

model = Sequential()
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=4))
model.add(LSTM(64))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=100, batch_size=8, verbose=1)

accuracy = model.evaluate(x_test, y_test)
print(accuracy)

我收到以下错误: ValueError:检查输入时出错:预期conv1d_1_input具有3维,但数组的形状为(900,26)

我不确定如何重塑数据。据我所知,我只需要一个向量。

1 个答案:

答案 0 :(得分:0)

您部分正确。您确实需要一个向量,但是它必须具有不同的尺寸。
Conv1D图层作为输入:
输入形状: 具有形状的3 + D张量:batch_shape +(steps,input_dim)

在model.fit函数中,将批次大小设置为8。这意味着每步必须提供8个样本的集合(step =迭代,然后更新网络权重)。
您要做的是生成8个样本的集合(或批次),然后将它们提供给您的网络。

相关问题