python - 训练数据和测试数据的均方误差差异很大
问题描述
我使用线性回归来制作 ML 模型,但遇到了问题。这是我的结果值
Model1 训练均方误差:154.96
Model1 测试均方误差:72018955075415565139968.00
训练成绩:0.48
测试成绩:-236446352571492139008.00
我不知道为什么会因为过度拟合而打印这些值?
我正在使用tensorflow 1.13.1
和python 3.7
解决方案
这似乎是 的情况Overfitting
。
你可以
- 确保您遵循数据预处理步骤,如 1.
Missing Value Imputation
2.Fixing the Outliers
3.Scaling
或Normalizing
功能 - 确保您正在执行
Feature Engineering
(删除不需要的功能,添加有意义的功能) Shuffle
数据,通过使用shuffle=True
inmodel.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
- 使用
Regularization
. 代码Regularization
如下所示(您可以尝试l1 Regularization
或l1_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 Accuracy
后Testing Score
仍然没有改进,请分享完整的代码,以便我们为您提供帮助。
希望这可以帮助。快乐学习!
推荐阅读
- c# - 在 System.NullReferenceException 中解析 Google Map Directions API Json 结果
- c++ - 通过预填充 ifstream 缓冲区来加速多次查找
- eclipse - Eclipse CHE 自己使用多少 RAM?
- javascript - simple-peer webrtc 一个连接中的多个流
- react-data-grid - 使用全局过滤器字段而不是每列过滤器
- python - 从 python gevent 输出中删除堆栈跟踪
- php - 在 777 我的整个应用程序之后“无法打开流:权限被拒绝”
- maven - `maven compile` 安装在 ~/.m2 时找不到包
- ffmpeg - 如何在 ffmpeg 输出中包含流?(输出文件#0 不包含任何流)
- ios - Swift WKWebView 填充隐藏对象