我试图让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,但它没有多大帮助。
它确实输出了一个结果,但我不知道它是否是正确的结果。通过交叉验证,它会一遍又一遍地创建该警告。
答案 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,))。