Sklearn 随机森林回归器出错
Posted
技术标签:
【中文标题】Sklearn 随机森林回归器出错【英文标题】:Error with Sklearn Random Forest Regressor 【发布时间】:2015-11-18 19:46:58 【问题描述】:当尝试使用如下所示的 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.shape
和y.shape
吗?
打印 X.shape, y.shape:(600,) (600,)
【参考方案1】:
X
的形状应该是[n_samples, n_features]
,你可以把X
变换成
X = X[:, None]
【讨论】:
你也可以使用X = X[:, np.newaxis]
@M.Massias 是的,实际上newaxis
是None
的别名
嗨@yangjie,我是机器学习的新手。你能告诉我为什么我们需要转换X吗?背后的原因是什么。!提前致谢!【参考方案2】:
它将您的样本列表 X 视为 1 个样本作为向量,因此以下工作
rgr = regressor.fit(map(lambda x: [x],X),y)
在 numpy 中使用 vstack 可能有更有效的方法。
【讨论】:
以上是关于Sklearn 随机森林回归器出错的主要内容,如果未能解决你的问题,请参考以下文章
sklearn库学习----随机森林(RandomForestClassifier,RandomForestRegressor)