【发布时间】:2020-02-25 15:15:38
【问题描述】:
我正在使用 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)
【问题讨论】:
-
您能提供确切的错误信息吗?你确定你的 X 和 y 是一样的吗?我不熟悉 sklearn 中的 GradientBoostingRegressor,但在快速浏览文档后,看不出它不能像任何估算器一样工作的明显原因。
-
您的
rates究竟是什么?给我一张rates。 -
谢谢你们...我同意应该没有区别!我真的很惊讶。我的最终目标是生成这些带有间隔的预测,这样用户就不会将数字视为法律。
标签: python scikit-learn statistics regression prediction