我正在使用sklearn预测货币价值。我有一个数据框,其中有38列是不同货币的汇率,而2761行是每日观察值。当我使用基本线性回归时,一切工作都很好(我认为)。但是,当我尝试使用GradientBoostingRegressor时,无论尝试如何,都无法获得有效的形状。
这是怎么回事?为什么一个还好而另一个坏了?我已经挠头好几天了。
from sklearn.linear_model import LinearRegression
n = 1
X = rates[:-n]
y = rates[n:]
reg = LinearRegression().fit(X,y)
^^^这个预测很好。
from sklearn.ensemble import GradientBoostingRegressor
n = 1
X = rates[:-n]
y = rates[n:]
reg = GradientBoostingRegressor(loss="lad").fit(X,y)
^^^这是一个“不良形状”。形状相同:(2761、38)。
供参考:
rates.tail()
Out[2]:
AUD BDT BND BRL ... THB USD VND ZAR
2019-10-21 1054.5 18.109 1126.9 373.00 ... 50.692 1533.7 6.6086 103.81
2019-10-22 1053.6 18.127 1127.1 371.89 ... 50.645 1535.3 6.6170 104.43
2019-10-23 1050.3 18.126 1126.3 376.28 ... 50.658 1535.2 6.6154 104.67
2019-10-24 1047.5 18.107 1125.3 380.14 ... 50.672 1533.6 6.6092 104.93
2019-10-25 1046.1 18.080 1123.6 379.01 ... 50.734 1531.4 6.6007 104.54
[5 rows x 38 columns]
reg = GradientBoostingRegressor(loss="lad").fit(X,y)
Traceback (most recent call last):
File "<ipython-input-4-21ee59fafac1>", line 1, in <module>
reg = GradientBoostingRegressor(loss="lad").fit(X,y)
File "/home/s/.local/lib/python3.6/site-packages/sklearn/ensemble/gradient_boosting.py", line 1450, in fit
y = column_or_1d(y, warn=True)
File "/home/s/.local/lib/python3.6/site-packages/sklearn/utils/validation.py", line 760, in column_or_1d
raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (2671, 38)
答案 0 :(得分:0)
我是您的多维目标吗?如果没有,我想你想写
X = rates[:-n]
y = rates[-n:]
而不是
X = rates[:-n]
y = rates[n:]