当需要一维数组时传递了列向量 y

新手上路,请多包涵

我需要从 sklearn.ensemble 安装 RandomForestRegressor

 forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)

这段代码一直有效,直到我对数据进行了一些预处理( train_y )。错误消息说:

DataConversionWarning:在需要一维数组时传递了列向量 y。请将 y 的形状更改为 (n_samples,),例如使用 ravel()。

模型 = forest.fit(train_fold, train_y)

以前 train_y 是一个系列,现在是 numpy 数组(它是一个列向量)。如果我申请 train_y.ravel() ,那么它变成一个行向量并且没有错误消息出现,通过预测步骤需要很长时间(实际上它永远不会完成……)。

RandomForestRegressor 的文档中,我发现 train_y 应该定义为 y : array-like, shape = [n_samples] or [n_samples, n_outputs] 知道如何解决这个问题吗?

原文由 Klausos Klausos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 288
1 个回答

更改此行:

 model = forest.fit(train_fold, train_y)

到:

 model = forest.fit(train_fold, train_y.values.ravel())

解释:

.values 将给出 numpy 数组(形状:(n,1))中的值

.ravel 将该数组形状转换为 (n, )(即展平)

原文由 Linda MacPhee-Cobb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题