在将pandas dataframe列传递给scikit learn regressor之前,是否应该以某种方式对其进行转换?

use*_*117 13 pandas scikit-learn

我有一个熊猫数据帧和传球df[list_of_columns]为X,df[[single_column]]作为Y一个随机森林回归.

以下警告意味着什么,应该采取什么措施来解决它?

DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().   probas = cfr.fit(trainset_X, trainset_Y).predict(testset_X)
Run Code Online (Sandbox Code Playgroud)

lej*_*lot 10

只需检查Y变量的形状,它应该是一维对象,并且您可能正在传递具有更多(可能是微不足道的)维度的东西.将其重塑为list/1d数组的形式.


Mat*_*att 8

您可以使用df.single_column.valuesdf['single_column'].values获取系列的基础numpy数组(在这种情况下,也应该具有lejlot提到的正确的1D形状).


Sal*_*ali 5

实际上,警告会确切地告诉您问题是什么:

您传递了一个 2d 数组,该数组碰巧在 form 中(X, 1),但该方法需要一个 1d 数组并且必须在 form 中(X, )

此外,警告会告诉您如何转换为您需要的形式:y.values.ravel().