DataConversionWarning 在 Scikit 中拟合 RandomForestRegressor

DataConversionWarning fitting RandomForestRegressor in Scikit

我正在尝试将 RandomForestRegressor 拟合到我的训练集,

rfr.fit(train_X , train_y)

但不断收到以下警告:

/usr/local/lib/python2.7/dist-packages/IPython/kernel/main.py:1: 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(). if name == 'main':

我正在使用 Pandas,因此假设训练集可能需要在 numpy 数组中,即所谓的 .values:

train_y = train[label].values
train_X = train[features].values

查看类型和形状:

print type(train_X), train_X.shape
print type(train_y), train_y.shape

Returns:

<type 'numpy.ndarray'> (20457, 44)  
<type 'numpy.ndarray'> (20457, 1)

不太确定下一步该怎么做,只找到了 this answer,但没有太大帮助。

它确实输出了一个结果,但我不知道它是否正确。通过交叉验证,它会一遍又一遍地创建该警告。

警告会告诉您确切的操作,对吗? 问题是什么?尽管有警告,结果是否正确?是的,它们是,因为你的意思是使用一维向量 y。

如何消除警告?如果您的意思是 y 是一维向量而不是矩阵的列,请按照警告所述使用 y.ravel()。

你可以试试y.shape=y.shape[0],因为你应该让y.shape(20457,),而不是(20457,1)

正如警告所说,我们想将维度从 (N,1) 更改为 (N,)。 我们可以使用 numpy 的 ravel 函数。

使用 np.ravel(train_y) 而不是 train_y。

你也可以尝试 train_y.reshape((-1,))。