Pandas 在将数据帧列传递给scikit学习回归器之前,是否应以某种方式对其进行转换?
我有一个熊猫数据帧,并将Pandas 在将数据帧列传递给scikit学习回归器之前,是否应以某种方式对其进行转换?,pandas,scikit-learn,Pandas,Scikit Learn,我有一个熊猫数据帧,并将df[列列表]作为X和df[[单列]]作为Y传递给一个随机森林回归器 以下警告是什么意思?应该采取什么措施来解决 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(). probas = cfr.fit(trains
df[列列表]
作为X和df[[单列]]
作为Y
传递给一个随机森林回归器
以下警告是什么意思?应该采取什么措施来解决
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(). probas = cfr.fit(trainset_X, trainset_Y).predict(testset_X)
只需检查
Y
变量的形状,它应该是一个一维对象,并且可能传递的是更多(可能是微不足道)维度的对象。将其重塑为列表/1d数组的形式。您可以使用df.single\u column.values
或df['single\u column'].values
来获取序列的基本numpy数组(在这种情况下,该数组也应该具有lejlot提到的正确的1d形状)。实际上,警告会准确地告诉您问题所在:
您传递了一个2d数组,该数组的格式恰好是(X,1)
,但该方法需要一个1d数组,并且必须是(X,)
此外,警告还告诉您如何转换为所需的格式:
y.values.ravel()
使用y=df[[single\u column]].values.ravel()
为我解决了数据转换警告问题。为什么在single\u column
周围有双方括号?'single\u column'有目标列名,“熊猫”列选择需要一个列表,因此列名用方括号括起来。否,不需要。如果您忽略了它们,您就不会得到警告。AttributeError:“DataFrame”对象没有属性“ravel”
@mehaase它并不是真的打算盲目复制粘贴的。这更多的是解释发生了什么以及为什么。对于盲复制粘贴,请使用以下命令:y.values.ravel()