【发布时间】:2020-11-14 20:14:22
【问题描述】:
大家好 我制作了一个神经网络模型来预测列标签
我做了以下步骤
df=pd.read_csv('fortest.csv',low_memory=False, error_bad_lines = False)
dataset = df.values
X = dataset[:,1:8]
X.shape
min_max_scaler =MinMaxScaler()
X_scale= min_max_scaler.fit_transform(X)
X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X_scale, Y, test_size=0.3)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)
# then make the neural using functional API
model = keras.Sequential()
model.add(layers.Dense(6, input_dim=6, activation='relu'))
model.add(layers.Dense(3, activation='relu',kernel_regularizer=regularizers.l2(0.01)))
model.add(layers.Dense(3, activation='relu'))
model.add(layers.Dropout(0.1))
model.add(layers.Dense(1, activation='sigmoid', name='class'))
model.compile(loss='categorical_crossentropy',loss_weights={'class':0.5}, optimizer='adam', metrics=['accuracy'])
hist = model.fit(X_train, Y_train, batch_size=3, epochs=100, validation_data=(X_val, Y_val))
plt.plot(hist.history['accuracy'])
plt.plot(hist.history['val_acc'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Val'], loc='lower right')
plt.show()
plt.plot(hist.history['loss'])
plt.plot(hist.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Val'], loc='upper right')
plt.show()
model.evaluate(X_test, Y_test)[1]
y_pred = model.predict(X_test)
这段代码有两个问题 首先当我运行这部分时
plt.plot(hist.history['accuracy'])
plt.plot(hist.history['val_acc'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Val'], loc='lower right')
plt.show()
它引发错误,因为它没有识别 Val_acc 但它看到 val_loss > 为什么会这样?
当我尝试让 Y_pred 计算精度、召回率等时 使用以下代码
y_pred = model.predict(X_test)
它给我 y_pred 作为一个连续变量,比如 (0.093,0.933) 而不是 (0 和 1) 所以它在计算任何指标时给我错误 >> 现在任何一个为什么会出现这些错误 任何帮助将不胜感激
【问题讨论】:
标签: python python-3.x python-2.7 keras scikit-learn