我正在尝试将RandomForestProgsor安装到我的训练集中
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数组中,也就是所谓的.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)
不知道下一步该怎么办,只找到了这个答案,但没有多大帮助。
它确实输出了一个结果,但我不知道它是否是正确的。通过交叉验证,它一次又一次地创建警告。
警告告诉你该怎么做,对吗?问题是什么?尽管有警告,结果是否正确?是的,他们是,因为你的意思是使用一维向量y.
如何摆脱警告?如果你的意思是y是一个1d向量,而不是矩阵的一列,那么使用y.ravel()作为警告。
正如警告所说,我们希望将维度从(N,1)更改为(N,)。我们可以使用numpy的ravel函数。
使用np.ravel(train_y)而不是train_y。
你也可以试试train_y.resume((-1,))。
你可以像y.shape=y.shape[0]
一样尝试,因为你应该让y.shape
像(20457,)
,而不是(20457,1)