[MSE, RMSE, MBE, MAE,MAPE ] =MSE_RMSE_MBE_MAE(output_test,y_pred);
时间: 2024-02-12 21:03:26 浏览: 148
这是一段 MATLAB 代码,用于计算回归模型的性能指标。其中,output_test 是测试集的真实输出值,y_pred 是回归模型的预测输出值。代码中的 MSE、RMSE、MBE、MAE 和 MAPE 分别代表均方误差、均方根误差、平均偏差、平均绝对误差和平均绝对百分比误差,它们是回归模型评估中常用的指标。
具体解释如下:
- MSE(Mean Squared Error,均方误差):是预测值误差的平方和的平均值,用于评估预测值和真实值之间的接近程度,MSE 越小表示预测结果越接近真实值。
- RMSE(Root Mean Squared Error,均方根误差):是 MSE 的平方根,用于度量预测值和真实值之间的差异,RMSE 越小表示预测结果越准确。
- MBE(Mean Bias Error,平均偏差):是预测值误差的平均值,用于评估预测值和真实值之间的偏差,MBE 越接近 0 表示预测结果越准确。
- MAE(Mean Absolute Error,平均绝对误差):是预测值误差的绝对值的平均值,用于评估预测值和真实值之间的偏差,MAE 越小表示预测结果越准确。
- MAPE(Mean Absolute Percentage Error,平均绝对百分比误差):是预测值误差的绝对值除以真实值再取平均值后乘以 100%,用于评估预测值和真实值之间的相对误差,MAPE 越小表示预测结果越准确。
相关问题
ef train(args, model, train_loader, test_loader, boardio, textio, checkpoint): #learnable_params = filter(lambda p: p.requires_grad, model.parameters()) #optimizer = torch.optim.Adam(learnable_params) optimizer = optim.Adam(model.parameters(), lr=args.lr, weight_decay=1e-4) scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[50, 100, 150], gamma=0.1) if checkpoint is not None: min_loss = checkpoint['min_loss'] optimizer.load_state_dict(checkpoint['optimizer']) best_test_loss = np.inf best_test_mse_ab = np.inf best_test_rmse_ab = np.inf best_test_mae_ab = np.inf best_test_r_mse_ab = np.inf best_test_r_rmse_ab = np.inf best_test_r_mae_ab = np.inf best_test_t_mse_ab = np.inf best_test_t_rmse_ab = np.inf best_test_t_mae_ab = np.inf for epoch in range(args.epochs): train_loss, train_mse_ab, train_mae_ab, train_rotations_ab, train_translations_ab, train_rotations_ab_pred, \ train_translations_ab_pred, train_eulers_ab, = train_one_epoch(args.device, model, train_loader, optimizer) test_loss, test_mse_ab, test_mae_ab, test_rotations_ab, test_translations_ab, test_rotations_ab_pred, \ test_translations_ab_pred, test_eulers_ab = test_one_epoch(args.device, model, test_loader)设置动态学习率
这段代码是用来设置动态学习率的。它使用了PyTorch中的lr_scheduler模块,具体来说,使用了MultiStepLR策略。这个策略会在训练过程中根据指定的milestones(里程碑)来调整学习率,每次乘以gamma(衰减因子)。在这个代码中,milestones被设置为[50, 100, 150],gamma被设置为0.1,表示当训练到第50、100、150个epoch时,学习率会分别乘以0.1。这样做可以让模型在训练初期使用较大的学习率,快速收敛,而在训练后期使用较小的学习率,细致调整,避免过拟合。
from sklearn.model_selection import train_test_split X=data.drop('检泵周期(d)_log',axis=1) #生成特征集 y=data['检泵周期(d)_log'] #生成labels集 X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3) #生成训练集和测试集 #建立回归模型 from sklearn.neural_network import MLPRegressor #model = MLPRegressor(solver='adam', hidden_layer_sizes=(30,30), random_state=1) model = MLPRegressor(solver='lbfgs', hidden_layer_sizes=(30,30), random_state=1) model.fit(X_train, y_train) from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error #训练集模型评估 y_train_pred=model.predict(X_train) mse=mean_squared_error(y_train,y_train_pred) mae=mean_absolute_error(y_train,y_train_pred) R2=r2_score(y_train,y_train_pred) print("-----训练集模型评价------") print('mse=',mse,'mae=',mae,'R2=',R2) #测试集模型评估 y_test_pred=model.predict(X_test) mse=mean_squared_error(y_test,y_test_pred) mae=mean_absolute_error(y_test,y_test_pred) R2=r2_score(y_test,y_test_pred) print("-----测试集模型评价------") print('mse=',mse,'mae=',mae,'R2=',R2)
这段代码是使用sklearn库中的神经网络回归模型MLPRegressor对数据进行训练和测试,并输出评估结果。
首先,将数据集中的特征和标签分别存储到变量X和y中;然后使用train_test_split函数将数据集分为训练集和测试集,其中test_size=0.3表示将30%的数据用作测试集。
接下来,定义MLPRegressor模型,其中solver='lbfgs'表示使用LBFGS算法进行优化;hidden_layer_sizes=(30,30)表示有两层隐藏层,每层有30个神经元;random_state=1表示设置随机种子以使结果可重复。然后使用fit函数对训练集进行训练。
最后,使用sklearn.metrics库中的r2_score、mean_squared_error和mean_absolute_error函数对训练集和测试集进行评估,并输出评估结果。其中,r2_score表示R方值,mse表示均方误差,mae表示平均绝对误差。
阅读全文