Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 神经网络输出的两个误差_Python_Python 3.x_Python 2.7_Keras_Scikit Learn - Fatal编程技术网

Python 神经网络输出的两个误差

Python 神经网络输出的两个误差,python,python-3.x,python-2.7,keras,scikit-learn,Python,Python 3.x,Python 2.7,Keras,Scikit Learn,大家好 我建立了一个神经网络模型来预测柱标签 我将执行以下步骤 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

大家好 我建立了一个神经网络模型来预测柱标签

我将执行以下步骤

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),所以它在计算任何度量时给我错误>>现在任何一个为什么会出现这些错误
任何帮助都将不胜感激

1-使用
loss=model.history.history
,在此命令中,通过
loss.keys()
检查键是否存在val_acc

2-您的最后一层是一个sigmoid函数,sigmoid函数的输出概率介于0和1之间。要使其成为二进制,您可以选择两种方式: -
model.predict\u类(X\u测试)

-
predictions=y_pred>threshold
这将为您提供一个可以在度量中使用的真-假向量。阈值是可选的,取决于上下文,但您可以使用.5作为通用阈值。

1-我使用您建议的,但它只是输出dict_keys([])2-对于第一个建议操作,它会引发以下错误AttributeError:“Functional”对象对于第二个建议没有属性“predict_classes”,它是有效的,但它能将预测转化为真假