【发布时间】:2016-03-13 22:53:56
【问题描述】:
我需要从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()。
model = 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]
知道如何解决这个问题吗?
【问题讨论】:
-
train_fold.shape和train_y.shape是什么? -
@Alexander: train_fold: tuple (749904,24)... train:y.ravel(): tuple (749904,)
-
看起来不错。您是否尝试过训练 100 行数据以确保其正常工作(因为您说它从未完成)?此外,您是否检查了
train_y数据的内容以确保预处理没有损坏它? -
请为我们打印
RF_tuned_parameters。 -
@imaluengo: {'n_estimators': 40, 'max_features': 0.8, 'n_jobs': 2, 'verbose': True, 'min_samples_split': 6, 'random_state': 123}跨度>
标签: python pandas numpy scikit-learn