【问题标题】:How to recognize Overfitting and underfitting in Python如何识别 Python 中的过拟合和欠拟合
【发布时间】:2019-02-08 17:39:03
【问题描述】:

我有一个回归模型。我写了这个算法的代码:

将训练数据随机分成 10 个,分成训练数据和验证数据。从以下集合中选择最佳 alpha 值:{0.1, 1, 3, 10, 33, 100, 333, 1000, 3333, 10000, 33333}。

要选择最佳的 alpha 超参数值,您必须执行以下操作:

• 对于每个超参数值,如上所述,将训练数据随机拆分为训练和验证数据 10 次。

• 对于超参数的每个值,使用其 10 次随机分割并找到平均训练和验证准确度。

• 在图表上,绘制平均训练准确度(红色)和平均验证准确度(蓝色)w.r.t。每个超参数设置。通过识别过度拟合和欠拟合的区域来评论此图。

• 打印 alpha 超参数的最佳值。

2- 评估测试数据的预测性能并报告以下内容: • 最终模型中非零特征的总数。 • 混淆矩阵 • 每个类别的精确度、召回率和准确度。

最后,通过适当的推理讨论是否存在欠拟合或过拟合的迹象

我写了这段代码:

print('Accuracy of logistic regression classifier on test set: {:.2f}'.format(Newclassifier.score(X_test, y_test)))
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))        

我的问题是: 1-为什么每次迭代的准确性都会降低? 2- 我的模型是过拟合还是欠拟合? 3- 我的模型工作正常吗?

【问题讨论】:

    标签: python machine-learning


    【解决方案1】:

    没有官方/绝对的指标来决定你是欠拟合还是过拟合。在实践中

    • 欠拟合:你的模型太简单了。训练集和验证集之间没有太大区别,但是它们的准确率会很低
    • 过拟合:你的模型太复杂了。它不是学习底层模式,而是记住你的训练集。因此,训练误差会减少,但验证误差会在某个时间点后开始增加

    在你的情况下,你的训练和测试错误似乎是并行的,所以你似乎没有过度拟合的问题。您的模型可能欠拟合,因此您可以尝试使用更复杂的模型。然而,这可能是这个算法在这个特定的训练集上的表现。在大多数实际问题中,没有算法可以达到零误差。

    至于你的错误增加的原因,我不知道这个特定的算法是如何工作的,但由于它似乎依赖于随机方法,它似乎是合理的行为。它有点上升和下降,但它并没有稳步增加,所以它似乎没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2013-12-19
      • 2019-02-10
      • 2021-11-03
      相关资源
      最近更新 更多