如何比较未缩放的随机森林和缩放后的LSTM的RMSE和MAE性能指标

我刚开始学习机器学习,正在尝试使用多个模型(如随机森林、简单线性回归和神经网络LSTM)来预测比特币价格。

据我所知,随机森林和线性回归不需要对输入特征进行缩放,而LSTM则需要对输入特征进行缩放。

如果我们比较两种算法(缩放前后)的MAE和RMSE,结果肯定会有所不同,我无法比较哪个模型表现更好。

那么,我现在应该如何比较这些模型的性能呢?


更新 – 添加我的代码

数据

bitcoinData = pd.DataFrame([[('2013-04-01 00:07:00'),93.25,93.30,93.30,93.25,93.300000], [('2013-04-01 00:08:00'),100.00,100.00,100.00,100.00,93.300000], [('2013-04-01 00:09:00'),93.30,93.30,93.30,93.30,33.676862]], columns=['time','open', 'close', 'high','low','volume'])bitcoinData.time = pd.to_datetime(bitcoinData.time)bitcoinData = bitcoinData.set_index(['time'])
x_train = train_data[['high','low','open','volume']]y_train = train_data[['close']]x_test = test_data[['high','low','open','volume']]y_test = test_data[['close']]

最小-最大缩放器

from sklearn.preprocessing import MinMaxScalerscaler = MinMaxScaler(feature_range=(0, 1))scaler1 = MinMaxScaler(feature_range=(0, 1))x_train = scaler.fit_transform(x_train)y_train = scaler1.fit_transform(y_train)x_test = scaler.transform(x_test)y_test = scaler1.transform(y_test)

MSE计算

from math import sqrtfrom sklearn.metrics import r2_scorefrom sklearn.metrics import mean_absolute_errorprint("Root Mean Squared Error(RMSE) : ", sqrt(mean_squared_error(y_test,preds)))print("Mean Absolute Error(MAE) : ", mean_absolute_error(y_test,preds))r2 =  r2_score(y_test, preds)print("R Squared (R2) : ",r2)

回答:

你应该缩放输入数据,而不是输出数据。输入数据与你的误差计算无关。

如果你真的想缩放LSTM的输出数据,只需以相同的方式对其他分类器的输出数据进行缩放即可。

编辑:

根据你的评论:

我只对LSTM的输入数据进行了缩放

不,你没有。你确实对输出数据进行了转换。根据我所读到的,我认为你只对神经网络进行了转换。

所以你的LSTM的y数据大约缩小了100倍 ——> 平方误差,因此你得到100*100 = 10,000,这大致是你神经网络表现“更好”于随机森林的倍数。

选项1:

删除以下三行代码:

scaler1 = MinMaxScaler(feature_range=(0, 1))y_train = scaler1.fit_transform(y_train)y_test = scaler1.transform(y_test)

别忘了使用一个可以输出到+无穷大的最后一层

选项2:

同样对其他分类器的数据进行缩放,然后比较缩放后的值。

选项3:

对你的预测使用MinMaxScaler()inverse_transform(pred)方法,并使用inverse_transform()后的预测和未转换的y_test数据来计算你的误差。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注