Python Scikit中的DataConversionWarning回归器

Python Scikit中的DataConversionWarning回归器,python,numpy,pandas,scikit-learn,random-forest,Python,Numpy,Pandas,Scikit Learn,Random Forest,我在试着给我的训练设置一个随机回归器 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()。 如果name='main': 我使用的是Pandas,因此假设训练集可能需要在numpy数组中,即所谓的。值

我在试着给我的训练设置一个随机回归器

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()。 如果name='main':

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

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)
(20457,44)
(20457, 1)
不太确定下一步该怎么办,只是发现没什么帮助


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

警告会准确地告诉您该做什么,对吗? 问题是什么?尽管有警告,结果是否正确?是的,因为你的意思是使用一维向量y


如何摆脱警告?如果你想让y成为一维向量而不是矩阵的列,那么就用y.ravel()作为警告。

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

像警告说的那样,我们想把维度从(N,1)改为(N,)。 我们可以使用numpy的ravel函数

使用np.ravel(trainuy)代替trainuy


你也可以试试train_y.重塑(-1,)。

那么你试过
rfr.fit(train_X,train_y.values)
?谢谢你的回答。值已经在train_y=train[标签]中了。值(我试过你建议的格式,但结果相同)试一下
rfr.fit(train_X,train_y.values.ravel())