mae = statistics.mae((test_y + shifted_value) * 1000, (predicted_values + shifted_value) * 1000)表示什么?
时间: 2024-03-29 13:40:22 浏览: 16
这行代码表示在测试集上使用预测值和真实值计算平均绝对误差(Mean Absolute Error,MAE)。其中,test_y是测试集的真实值,predicted_values是模型在测试集上的预测值。shifted_value是一个偏移量,它可以用来对真实值和预测值进行调整,以便更好地匹配数据集的特征。在这里,将真实值和预测值都乘以1000,是为了将它们转换成与数据集相同的数量级。MAE是衡量模型预测误差的一种常用指标,它表示预测值和真实值之间的平均绝对差。
相关问题
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.datasets import load_boston import numpy as np import pandas as pd data=pd.read_csv('./data_picture/chapter1/boston_house_prices.csv') data.head() from sklearn.model_selection import train_test_split X=data.drop('MEDV',axis=1) y=data['MEDV'] X=X.values y=y.values X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=33,test_size=0.25) from sklearn.preprocessing import StandardScaler ss_X=StandardScaler() scaler_X=ss_X.fit(X_train) X_train=scaler_X.transform(X_train) X_test=scaler_X.transform(X_test) from sklearn.neural_network import MLPRegressor model = MLPRegressor(solver='lbfgs', hidden_layer_sizes=(15,15), random_state=1) model.fit(X_train, y_train) from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error print('训练集回归评估指标:') model_score1=model.score(X_train,y_train) print('The accuracy of train data is',model_score1) print('测试集回归评估指标:') model_score2=model.score(X_test,y_test) print('The accuracy of test data is',model_score2) y_test_predict=model.predict(X_test) mse=mean_squared_error(y_test,y_test_predict) print('The value of mean_squared_error:',mse) mae=mean_absolute_error(y_test,y_test_predict) print('The value of mean_absolute_error:',mae)解析一下这段代码
这段代码是一个机器学习模型的训练和评估过程,具体步骤如下:
1. 从sklearn.datasets模块中导入boston数据集。
2. 使用pandas模块读取boston房价数据集,将其存储在data变量中,并显示前5行数据。
3. 从sklearn.model_selection模块中导入train_test_split函数,将数据集划分为训练集和测试集,其中训练集占75%,测试集占25%。
4. 从sklearn.preprocessing模块中导入StandardScaler类,用于对数据进行标准化处理。
5. 对训练集和测试集中的特征数据X进行标准化处理,使用fit()函数对scaler_X进行训练,再使用transform()函数对X_train和X_test进行标准化处理。
6. 从sklearn.neural_network模块中导入MLPRegressor类,用于创建多层感知机回归模型。
7. 创建MLPRegressor对象,并指定模型参数:solver='lbfgs', hidden_layer_sizes=(15, 15), random_state=1。其中,solver参数指定优化算法为拟牛顿法L-BFGS,hidden_layer_sizes参数指定模型中隐藏层的节点数为15,random_state参数指定随机种子。
8. 使用fit()函数对模型进行训练,输入训练集的特征数据X_train和目标数据y_train。
9. 从sklearn.metrics模块中导入r2_score、mean_squared_error和mean_absolute_error函数,用于评估模型的性能。
10. 分别使用score()函数计算训练集和测试集的R2得分,并输出结果。
11. 使用predict()函数对测试集进行预测,计算预测结果与实际结果之间的均方误差和平均绝对误差,并输出结果。