白石洲附近做网站公司网站建设进展情况汇报
2026/1/1 14:27:27 网站建设 项目流程
白石洲附近做网站公司,网站建设进展情况汇报,网站开发项目可行性,网站查询入口一、过拟合的判断 在机器学习中#xff0c;过拟合#xff08;Overfitting#xff09; 的核心定义是#xff1a;模型在训练集上表现极佳#xff08;损失极低、准确率极高#xff09;#xff0c;但在未见过的测试集 / 验证集上表现大幅下降#xff0c;本质是模型 “死记硬…一、过拟合的判断在机器学习中过拟合Overfitting 的核心定义是模型在训练集上表现极佳损失极低、准确率极高但在未见过的测试集 / 验证集上表现大幅下降本质是模型 “死记硬背” 了训练数据的噪声和细节而非学习到数据的通用规律。核心判断依据通过训练损失Train Loss 和测试损失Test Loss 的曲线对比是判断过拟合的核心手段。二、模型的保存和加载1.仅保存模型参数- 原理保存模型的权重参数不保存模型结构代码。加载时需提前定义与训练时一致的模型类。- 优点文件体积小仅含参数跨框架兼容性强需自行定义模型结构。# 保存模型参数 torch.save(model.state_dict(), model_weights.pth) # 加载参数需先定义模型结构 model MLP() # 初始化与训练时相同的模型结构 model.load_state_dict(torch.load(model_weights.pth)) # model.eval() # 切换至推理模式可选2.保存权重和模型- 原理保存模型结构及参数- 优点加载时无需提前定义模型类- 缺点文件体积大依赖训练时的代码环境如自定义层可能报错。# 保存整个模型 torch.save(model, full_model.pth) # 加载模型无需提前定义类但需确保环境一致 model torch.load(full_model.pth) model.eval() # 切换至推理模式可选3.保存全部信息checkpoint还包含训练状态- 原理保存模型参数、优化器状态学习率、动量、训练轮次、损失值等完整训练状态用于中断后继续训练。- 适用场景长时间训练任务如分布式训练、算力中断。# 保存训练状态 checkpoint { model_state_dict: model.state_dict(), optimizer_state_dict: optimizer.state_dict(), epoch: epoch, loss: best_loss, } torch.save(checkpoint, checkpoint.pth) # 加载并续训 model MLP() optimizer torch.optim.Adam(model.parameters()) checkpoint torch.load(checkpoint.pth) model.load_state_dict(checkpoint[model_state_dict]) optimizer.load_state_dict(checkpoint[optimizer_state_dict]) start_epoch checkpoint[epoch] 1 # 从下一轮开始训练 best_loss checkpoint[loss] # 继续训练循环 for epoch in range(start_epoch, num_epochs): train(model, optimizer, ...)三、早停法早停法是缓解过拟合最常用、最简洁的策略核心逻辑是训练过程中持续监控「验证集 / 测试集损失或准确率」当模型在未见过的数据上的性能不再提升甚至开始下降时提前终止训练避免模型过度拟合训练集的噪声同时保存训练过程中 “验证集表现最好” 的模型参数保证最终使用的是泛化能力最优的模型。早停法的核心要素要素作用监控指标优先选「验证集损失」损失越低越好也可选「验证集准确率」越高越好耐心值Patience允许 “验证集性能不提升” 的最大轮数比如 patience50连续 50 轮没提升就停最小改进值Min_delta忽略微小波动比如 min_delta0.0001损失下降小于这个值视为 “无提升”最优模型保存训练中实时保存 “验证集性能最好” 的模型参数避免停在最后一轮的差模型作业对信贷数据集训练后保存权重加载权重后继续训练50轮并采取早停策略import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import OneHotEncoder from sklearn.impute import SimpleImputer from sklearn.neural_network import MLPRegressor from sklearn.metrics import mean_squared_error import joblib # 1. 数据加载与预处理 df pd.read_csv(rD:\Study\PythonStudy\housing.csv) #信贷数据集路径 target_col median_house_value #目标变量名 # 缺失值填充 imputer SimpleImputer(strategymost_frequent) df_imputed pd.DataFrame(imputer.fit_transform(df), columnsdf.columns) # 独热编码 ocean_proximity 列唯一的类别型特征 categorical_col ocean_proximity ohe OneHotEncoder(sparse_outputFalse) cat_ohe ohe.fit_transform(df_imputed[[categorical_col]]) cat_df pd.DataFrame(cat_ohe, columnsohe.get_feature_names_out([categorical_col]), indexdf_imputed.index) # 拼接回去删掉原来的 ocean_proximity df_encoded pd.concat([df_imputed.drop(columns[categorical_col]), cat_df], axis1) # 分割数据 X df_encoded.drop(columns[target_col]) y df_encoded[target_col] X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) # 2. 初始训练、保存 mlp MLPRegressor(hidden_layer_sizes(64, 32), max_iter100, random_state42, warm_startTrue) mlp.fit(X_train, y_train) joblib.dump(mlp, mlp_credit_model.pkl) print(初始模型保存完毕。) # 3. 加载权重 mlp2 joblib.load(mlp_credit_model.pkl) # 4. 继续训练50轮早停 best_loss np.inf patience 5 wait 0 for i in range(50): mlp2.max_iter 1 # 每次多训练一轮 mlp2.fit(X_train, y_train) y_pred mlp2.predict(X_test) loss mean_squared_error(y_test, y_pred) print(f第{i1}轮测试集MSE: {loss:.4f}) if loss best_loss: best_loss loss wait 0 joblib.dump(mlp2, mlp_credit_model_best.pkl) else: wait 1 if wait patience: print(早停触发训练提前终止。) break # 5. 加载最优模型 best_model joblib.load(mlp_credit_model_best.pkl) print(最优模型已加载。)浙大疏锦行

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询