如何在Python中识别过拟合和欠拟合

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

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

要选择最佳的alpha超参数值,你需要执行以下操作:

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

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

• 在图表上,绘制平均训练准确度(红色)和平均验证准确度(蓝色)与每个超参数设置的关系。通过识别过拟合和欠拟合区域来对该图进行评论。

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

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

最后,讨论是否有欠拟合或过拟合的迹象,并提供适当的理由

我编写了以下代码:

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

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


回答:

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

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

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

至于为什么你的误差增加,我不知道这个特定算法是如何工作的,但由于它似乎依赖于随机方法,这种行为似乎是合理的。它会有所起伏,但并未持续增加,所以看起来并不成问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注