python - Keras CNN 中的标签预处理
问题描述
我有一个 600 行和 271 列的数据集(最后一列包含类)。每行包含恶意软件特征及其类别标签。我正在编写卷积神经网络代码来预测这些类。共有9个班。下面是我的代码:
dataset = pd.read_csv('train.csv')
X = dataset.iloc[:, 0:270].values
y = dataset.iloc[:, 270].values
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
model = Sequential()
model.add(Convolution1D(64, 10, input_shape=(643,270)))
model.add(Activation('relu'))
model.add(MaxPooling1D(1))
model.add(Flatten())
model.add(Dense(100))
model.add(Dropout(0.5))
model.add(Dense(9))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer = 'adam', metrics = ['accuracy'])
X_train = np.reshape(X_train, (1, X_train.shape[0], X_train.shape[1]))
X_test = np.reshape(X_test, (1, X_test.shape[0], X_test.shape[1]))
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
model.fit(X_train,y_train,validation_data=(X_test,y_test))
print(str(model.evaluate(x_test,y_test)))
在这里,我在此行出现错误:
model.fit(X_train,y_train,validation_data=(X_test,y_test))
Error: Error when checking target: expected activation_2 to have shape (None, 9)
but got array with shape (643, 10)
因为“y_train”的形状不适合训练。有人可以解释我如何解决这个问题并重塑 y_train 以进行成功的培训吗?
编辑:
更改input_shape
为第二和第三维形状后,错误现在更改为:
fValueError: Error when checking target: expected activation_2 to have shape (None, 1)
but got array with shape (643, 10)
请问这个问题有什么解决办法吗?谢谢!
解决方案
推荐阅读
- python - Python程序为输入数字打印菱形图案?
- xcode - Xcode 12:分发内容页面仅显示 2 个选项
- python - 对齐菜单栏中的条目
- python - Python - 通过解包以太网帧获取 0xc0a8 期望 0x800 的类型不期望数据
- android - 当应用程序目标为(Android 11 / API 30)或更高版本时,如何将文件保存在android的根文件夹中?
- sympy - 为什么 sympy.solve 不适用于这 12 个变量的非线性方程系统?
- html - 如何将最后一个div放在页面的最后
- javascript - 使用 D3-tip,如何在一个元素上触发工具提示并将其显示在另一个元素上
- vba - 设置电子邮件类别
- javascript - Web 音频 API 缓冲区回调?