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,))。
我正在尝试将 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,))。