【问题标题】:DataConversionWarning fitting RandomForestRegressor in ScikitDataConversionWarning 在 Scikit 中拟合 RandomForestRegressor
【发布时间】:2015-05-29 13:30:13
【问题描述】:

我正在尝试将 RandomForestRegressor 拟合到我的训练集,

rfr.fit(train_X , train_y)

但不断收到以下警告:

/usr/local/lib/python2.7/dist-packages/IPython/kernel/ma​​in.py:1:DataConversionWarning:当需要一维数组时,传递了列向量 y .请将 y 的形状更改为 (n_samples, ),例如使用 ravel()。 如果 name == 'ma​​in':

我正在使用 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,但这并没有多大帮助。

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

【问题讨论】:

  • 那么你试过rfr.fit(train_X , train_y.values) 吗?
  • 感谢您的回答,.values 已经在 train_y = train[label].values 中(我尝试过您建议的格式,但结果相同)
  • 试试这个rfr.fit(train_X , train_y.values.ravel())

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


【解决方案1】:

正如警告所说,我们想将维度从 (N,1) 更改为 (N,)。 我们可以使用 numpy 的 ravel 函数。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      警告告诉你该怎么做,对吧? 问题是什么?尽管有警告,但结果是否正确?是的,它们是,因为您的意思是使用一维向量 y。

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

      【讨论】:

        猜你喜欢
        • 2021-06-15
        • 2013-12-19
        • 2013-04-13
        • 1970-01-01
        • 2015-07-31
        • 2015-03-25
        • 2017-06-17
        • 2013-07-29
        • 2019-04-30
        相关资源
        最近更新 更多