使用Sklearn的随机森林回归器出现错误

17

尝试使用随机森林回归模型来拟合这样的y数据:

[  0.00000000e+00   1.36094276e+02   4.46608221e+03   8.72660888e+03
   1.31375786e+04   1.73580193e+04   2.29420671e+04   3.12216341e+04
   4.11395711e+04   5.07972062e+04   6.14904935e+04   7.34275322e+04
   7.87333933e+04   8.46302456e+04   9.71074959e+04   1.07146672e+05
   1.17187952e+05   1.26953374e+05   1.37736003e+05   1.47239359e+05
   1.53943242e+05   1.78806710e+05   1.92657725e+05   2.08912711e+05
   2.22855152e+05   2.34532982e+05   2.41391255e+05   2.48699216e+05
   2.62421197e+05   2.79544300e+05   2.95550971e+05   3.13524275e+05
   3.23365158e+05   3.24069067e+05   3.24472999e+05   3.24804951e+05

以及长成这样的X数据:

[ 735233.27082176  735234.27082176  735235.27082176  735236.27082176
  735237.27082176  735238.27082176  735239.27082176  735240.27082176
  735241.27082176  735242.27082176  735243.27082176  735244.27082176
  735245.27082176  735246.27082176  735247.27082176  735248.27082176

以下是代码:

regressor = RandomForestRegressor(n_estimators=150, min_samples_split=1)
rgr = regressor.fit(X,y) 

我遇到了这个错误:

ValueError: Number of labels=600 does not match number of samples=1

我认为我的一组值的格式有问题,但从文档中并不太清楚。


你可以打印X.shapey.shape吗? - yangjie
打印 X.shape, y.shape:(600,) (600,) - BLL27
2个回答

27

请确保 X 的形状为 [n_samples, n_features],你可以通过以下方式转换 X

X = X[:, None]

2
你也可以使用 X = X[:, np.newaxis] - P. Camilleri
2
@M.Massias 是的,实际上 newaxisNone 的别名。 - yangjie
嗨@yangjie,我是机器学习的新手..你能告诉我为什么我们需要转换X吗?背后的原因是什么!提前致谢! - Shivali Patel

2
将样本列表X视为一个向量,使下面的操作得以实现。
rgr = regressor.fit(map(lambda x: [x],X),y)

使用numpy中的vstack可能会有更高效的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接