火车数据与测试数据的均方误差之间的差异非常大

时间:2019-10-16 09:18:05

标签: python tensorflow regression tensor

我使用线性回归建立了ML模型,但遇到了问题。 这是我的结果值

Model1训练均方误差:154.96

Model1测试均方误差:72018955075415565139968.00

培训分数:0.48

测试成绩:-236446352571492139008.00

我不知道为什么打印这些值 因为过拟合?

我正在使用tensorflow 1.13.1python 3.7

1 个答案:

答案 0 :(得分:0)

Overfitting就是这种情况。

您可以

  • 确保您正在执行数据预处理步骤,例如1. Missing Value Imputation 2. Fixing the Outliers 3. ScalingNormalizing功能
  • 确保您正在执行Feature Engineering(删除不需要的功能,添加有意义的功能)
  • 通过使用Shuffle中的shuffle=True
  • model.fit数据。代码如下所示:

history = cnn_model.fit(x = X_train_reshaped, y = y_train, batch_size = 512, epochs = epochs, callbacks=[callback], verbose = 1, validation_data = (X_test_reshaped, y_test), validation_steps = 10, steps_per_epoch=steps_per_epoch, shuffle = True)

  • 使用Early Stopping。代码如下所示

    callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=15)

  • 使用Dropout

  • 使用RegularizationRegularization的代码如下所示(您也可以尝试l1 Regularizationl1_l2 Regularization):

`
从tensorflow.keras.regularizers导入l2

Regularizer = l2(0.001)

model.add(tf.keras.layers.Dense(
    units = 64, activation='relu', kernel_regularizer=Regularizer, bias_regularizer=Regularizer,
    activity_regularizer=Regularizer))

tf.keras.layers(Dropout(0.4))

model.add(Dense(units = 10, activation = 'sigmoid', 
                        activity_regularizer=Regularizer, kernel_regularizer=Regularizer))`
  • 最后但并非最不重要的,请尝试删除一些Layers,因为它会减少可训练参数的数量

尽管遵循上述说明,您的Test AccuracyTesting Score仍然没有改善,请共享完整的代码,以便我们为您提供帮助。

希望这会有所帮助。学习愉快!