给别人做网站在那里接单wordpress自定义文章顺序
news/
2025/10/9 8:17:13/
文章来源:
给别人做网站在那里接单,wordpress自定义文章顺序,东莞网站建设方案推广,汉中建设工程在机器学习中#xff0c;模型的表现很大程度上取决于我们如何平衡“过拟合”和“欠拟合”。本文通过理论介绍和代码演示#xff0c;详细解析过拟合与欠拟合现象#xff0c;并提出应对策略。主要内容如下#xff1a;
什么是过拟合和欠拟合#xff1f; 如何防止过拟合和欠拟…在机器学习中模型的表现很大程度上取决于我们如何平衡“过拟合”和“欠拟合”。本文通过理论介绍和代码演示详细解析过拟合与欠拟合现象并提出应对策略。主要内容如下
什么是过拟合和欠拟合 如何防止过拟合和欠拟合 出现过拟合或欠拟合时怎么办 使用代码和图像辅助理解。 一、什么是过拟合和欠拟合
1.1过拟合Overfitting
定义过拟合就是模型“学得太多了”它不仅学会了数据中的规律还把噪声和细节当成规律记住了。这就好比一个学生在考试前死记硬背了答案但稍微换一道题就不会了。
过拟合的表现
训练集表现非常好训练数据上的准确率高误差低。 测试集表现很差新数据上的准确率低误差大。 模型太复杂比如使用了不必要的高阶多项式或过深的神经网络。
1.2 欠拟合Underfitting
欠拟合是什么
欠拟合就是模型“学得太少了”。它只掌握了最基本的规律无法捕获数据中的复杂模式。这就像一个学生只学到了皮毛考试的时候连最简单的题都答不对。
欠拟合的表现
训练集和测试集表现都很差无论新数据还是老数据模型都表现不好。 模型太简单比如使用了线性模型拟合非线性数据或者训练时间不足。
二、如何防止过拟合和欠拟合
2.1 防止过拟合的方法
获取更多数据
更多的数据可以帮助模型更好地学习数据的真实分布减少对训练数据细节的依赖。
正则化
正则化通过惩罚模型的复杂度让模型不容易“过拟合”。
from sklearn.linear_model import Ridge # L2正则化
model Ridge(alpha0.1) # alpha控制正则化强度降低模型复杂度
简化模型比如减少神经网络层数或多项式的阶数。
早停法Early Stopping
在模型训练时监控验证集的误差如果误差开始上升提前停止训练。
from keras.callbacks import EarlyStopping
early_stopping EarlyStopping(monitorval_loss, patience5)数据增强Data Augmentation
在图像分类任务中通过旋转、裁剪、翻转等方法增加数据的多样性提升模型的泛化能力。
2.2 防止欠拟合的方法
增加模型复杂度
增加模型的参数比如更多的神经元或更深的网络层。
延长训练时间
欠拟合可能是因为训练时间不够长模型没有学到足够的规律。
3。 优化特征工程
如果模型无法拟合数据可能是因为输入的特征不够好。尝试创建更多、更有意义的特征。
降低正则化强度
正则化强度过大可能限制了模型的学习能力适当减小正则化系数。
三、过拟合与欠拟合时怎么办 当你发现模型出现问题时可以通过以下策略调整
现象解决方法过拟合- 获取更多数据- 使用正则化- 降低模型复杂度- 使用早停法欠拟合- 增加模型复杂度- 延长训练时间- 改善特征质量- 减小正则化强度
四、代码与图像演示多项式拟合的例子
下面通过一个简单的例子用多项式拟合来直观感受过拟合与欠拟合。
4.1 数据生成 我们生成一个非线性数据集并可视化
import numpy as np
import matplotlib.pyplot as plt
import matplotlibmatplotlib.rcParams[font.sans-serif] [SimHei] # 设置字体为 SimHei显示中文
matplotlib.rcParams[axes.unicode_minus] False # 解决负号显示问题# 生成非线性数据
np.random.seed(42) # 设置随机种子保证结果可复现
X np.random.rand(100, 1) * 6 - 3 # X范围[-3, 3]
y 0.5 * X**3 - X**2 2 np.random.randn(100, 1) * 2 # 非线性关系并添加噪声# 可视化数据
plt.scatter(X, y, colorblue, alpha0.7, label数据) # 绘制散点图
plt.xlabel(X) # 设置X轴标签
plt.ylabel(y) # 设置Y轴标签
plt.title(生成的非线性数据) # 设置图表标题
plt.legend() # 显示图例
plt.show() # 显示图表 结果图 生成的数据呈现一个明显的非线性分布。
4.2 模型训练与可视化
我们训练三种模型 线性回归1阶欠拟合。 4阶多项式回归最佳拟合。 10阶多项式回归过拟合。
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split# 划分数据集
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 多项式拟合
degrees [1, 4, 20]
for degree in degrees:poly_features PolynomialFeatures(degreedegree) # 生成多项式特征X_poly_train poly_features.fit_transform(X_train)X_poly_test poly_features.transform(X_test)# 训练模型model LinearRegression()model.fit(X_poly_train, y_train)# 预测y_train_pred model.predict(X_poly_train)y_test_pred model.predict(X_poly_test)# 计算误差train_error mean_squared_error(y_train, y_train_pred)test_error mean_squared_error(y_test, y_test_pred)# 绘制拟合曲线X_plot np.linspace(-3, 3, 100).reshape(100, 1)X_poly_plot poly_features.transform(X_plot)y_plot model.predict(X_poly_plot)plt.scatter(X, y, colorblue, alpha0.7, labelData)plt.plot(X_plot, y_plot, colorred, labelfDegree {degree})plt.xlabel(X)plt.ylabel(y)plt.title(fDegree {degree}\nTrain Error: {train_error:.2f} | Test Error: {test_error:.2f})plt.legend()plt.show() 结果图
Degree 1欠拟合模型太简单无法捕获数据的非线性规律。 Degree 4最佳拟合模型复杂度适中能很好地拟合数据。 Degree 20过拟合模型过于复杂训练误差低但测试误差大。
4.3 误差趋势分析
绘制训练误差和测试误差随模型复杂度变化的曲线
train_errors []
test_errors []for degree in degrees:poly_features PolynomialFeatures(degreedegree)X_poly_train poly_features.fit_transform(X_train)X_poly_test poly_features.transform(X_test)model LinearRegression()model.fit(X_poly_train, y_train)y_train_pred model.predict(X_poly_train)y_test_pred model.predict(X_poly_test)train_errors.append(mean_squared_error(y_train, y_train_pred))test_errors.append(mean_squared_error(y_test, y_test_pred))# 绘制误差曲线
plt.plot(degrees, train_errors, markero, labelTrain Error)
plt.plot(degrees, test_errors, markero, labelTest Error)
plt.xlabel(Polynomial Degree)
plt.ylabel(Mean Squared Error)
plt.title(训练误差和测试误差随多项式阶数变化)
plt.legend()
plt.show() 结果分析
训练误差随着复杂度增加而降低。 测试误差先下降后上升呈现“U型趋势”。
五、总结
5.1 过拟合与欠拟合的核心区别
过拟合模型对训练数据“学得太死”测试数据表现很差。 欠拟合模型对数据“学得太少”训练和测试表现都不好。
5.2 防止方法
防止过拟合使用正则化、数据增强、早停等方法。 防止欠拟合增加模型复杂度、延长训练时间、优化特征。 希望这篇文章让你对过拟合与欠拟合有了更深入的理解如果还有疑问欢迎交流
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932297.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!