使用随机森林和BP神经网络回归预测对比时,RFR测试集的数据趋势线总是小于1,有办法可以让效果得以改进吗

 问题遇到的现象和发生背景:

img


上图是我使用随机森林做回归训练时训练集上的表现,另外还有4个指标的训练,他们的共同点都是在训练集上表现很好的相关性但是趋势线斜率都在0.6,0.7左右,始终不能接近1。
我尝试了对同样的数据集使用BP神经网络计算,得出下面的结果

img


有没有办法让随机森林的结果做做出相应的修正,很有可能对测试集上的效果也会产生影响,希望有会的人帮忙解答一下!

 问题相关代码:

df_train = pd.read_excel(r'E:\资料\伽马\标定相关性(更新).xlsx', sheet_name='Sheet3')

X = df_train.iloc[:, 3:6].values
Y = df_train.iloc[:, 2:3].values
X = X.astype('float32')
Y = Y.astype('float32')

x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=4825)
ss_x = StandardScaler()
x_train = ss_x.fit_transform(x_train)
x_test = ss_x.fit_transform(x_test)

rfr = RandomForestRegressor(random_state=1)
rfr.fit(x_train, y_train.ravel())
rfr_y_predict = rfr.predict(x_test).reshape(-1, 1)
rfr_y_train = rfr.predict(x_train).reshape(-1, 1)

R2_train = r2_score(y_train, rfr_y_train)
RME_train = np.mean(abs((y_train - rfr_y_train) / y_train))#导师要求的评价指标平均相对误差

R2_test = r2_score(y_test, rfr_y_predict)
RME_test = np.mean(abs((y_test - rfr_y_predict) / y_test))#导师要求的评价指标平均相对误差

我想要达到的结果:

保证模型训练效果的情况下,使得测试集的趋势斜率尽可能的趋于1