用货币列表进行回归

时间:2019-10-30 10:33:53

标签: python scikit-learn statistics regression prediction

我正在使用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)

1 个答案:

答案 0 :(得分:0)

我是您的多维目标吗?如果没有,我想你想写

X = rates[:-n]
y = rates[-n:]

而不是

X = rates[:-n]
y = rates[n:]