Python SVR:预测值与实际值相差甚远,尽管r平方较高,MSE较低

Python SVR:预测值与实际值相差甚远,尽管r平方较高,MSE较低,python,machine-learning,scikit-learn,regression,svm,Python,Machine Learning,Scikit Learn,Regression,Svm,我使用scikit learn训练了一个SVR模型,该模型通过使用比特币在以前日期的收盘价预测比特币的未来价格。我已使用以下功能将日期从第一个可用日期转换为增量: btc['Date'] = pd.to_datetime(btc['Date']) btc['date_delta'] = (btc['Date'] - btc['Date'].min()) / np.timedelta64(1,'D') 我的数据帧的头部看起来像这样: 三角洲日期 接近 1654 7144.38 1

我使用scikit learn训练了一个SVR模型,该模型通过使用比特币在以前日期的收盘价预测比特币的未来价格。我已使用以下功能将日期从第一个可用日期转换为增量:

btc['Date'] = pd.to_datetime(btc['Date'])     
btc['date_delta'] = (btc['Date'] - btc['Date'].min())  / np.timedelta64(1,'D')
我的数据帧的头部看起来像这样:


三角洲日期
接近
1654
7144.38
1653
7022.76
有很多话要说:

  • 我真的不明白你的目标是什么:基本上,你试着将一个起始日期起的天数与btc的价格相匹配,而btc的价格实际上是不相关的(增量的数值是完全独立的)。您最好尝试将某一天的btc价格与前几天的btc价格相匹配

  • 您可以通过随机选取80%进行培训来分割培训/测试数据。为什么不把前80%的分数用于学习,最后20%用于预测?在您当前的配置中,数据的采样方式会导致偏差

  • 现在想象一下你的模型过拟合(它学习到一个非常复杂的日期/价格曲线),它非常适合你的训练点。测试数据的预测很可能与事实相去甚远。尝试改变支持向量回归的参数


  • 然而,你的结果离它应该达到的程度太远了。我可能会问你从哪里得到1654.0的值?你看过线性模型的结果了吗

    谢谢你的回复。我相信SVR并不是这种分析的最佳模型,因为即使我将日期分为年、日、月,结果仍然是错误的。1654是日期偏移量的随机值,我输入它来检查结果。关于随机拆分,我同意我们可以按顺序拆分。我正在考虑尝试LSTM进行同样的分析。我的意思是,如果你的训练增量在0到1000之间,你最终给你的模型提供1600,你不能期望它给出一个好的预测,因为你没有用正确的方法解决问题。无论如何,你不应该尝试拟合日期,除非你只是想看看拟合曲线的形状。