DataConversionWarning在Scikit中拟合RandomForestRegressor

时间:2015-03-25 17:59:55

标签: python numpy pandas scikit-learn random-forest

我试图让RandomForestRegressor适合我的训练集,

rfr.fit(train_X , train_y)

但继续收到以下警告:

  

/usr/local/lib/python2.7/dist-packages/IPython/kernel/ main .py:1:DataConversionWarning:当预期有1d数组时,传递了列向量y 。请将y的形状更改为(n_samples,),例如使用ravel()。     如果名称 ==' 主要':

我正在使用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

返回:

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

不确定接下来该做什么,只找到this answer,但它没有多大帮助。

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

3 个答案:

答案 0 :(得分:2)

警告告诉你到底要做什么,对吧?  问题是什么?如果结果是正确的,尽管有警告?是的,他们是,因为你的意思是使用1d向量y。

如何摆脱警告?如果你的意思是你是1d向量而不是矩阵的列,请使用y.ravel()作为警告说。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如警告所述,我们想将尺寸从(N,1)更改为(N,)。 我们可以使用numpy的ravel函数。

使用np.ravel(train_y)代替train_y。

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