python机器学习及实践 第二章的2.1.2.1线性回归器程序报错Reshape your data either using array.reshap(-1,1)的原因及解决方法

最近在看Python机器学习及实践(从零开始kaggle竞赛之路)这本书,到了第二章的线性回归器的GradientBoostingRegressor模型照着敲代码的时候

出现了以下的错误

于是乎在网上查找了一下 看到了这位兄弟的解决方法https://blog.csdn.net/GrinAndBearIt/article/details/79286027 照着改过了之后虽然可以输出结果,可是依旧有warning,所以就继续看了看.

出错的问题在于标准化函数这里。

可见fit_transform的第一个参数必须时有两个维度的。我们再来看y_train的维度: 只有一个维度。

所以会出现上述的报错。之前那个兄弟提到过的方法,就是将y_train reshape(-1,1),变成(379L,1L)。

修改如下:

至此虽然能够输出结果,但是还是会有wraning:

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().

  y = column_or_1d(y, warn=True)

这是因为fit函数的第二个参数要求只有一个维度

刚才把y_train转化成了(379L,1L),就会出现warning,不过对结果没有影响。

解决方法:

1.改为fit(X_train,y_train.ravel()),将y_train变成正确的形式。

2.一开始标准化处理的时候不要管y_train,删掉y_train=ss_y.fit_transform(y_train)语句。

这两个方法都可以。

原创文章 5 获赞 7 访问量 1729

猜你喜欢

转载自blog.csdn.net/Boooooil/article/details/81942550