1. 程式人生 > >python機器學習及實踐 第二章的2.1.2.1線性迴歸器程式報錯Reshape your data either using array.reshap(-1,1)的原因及解決方法

python機器學習及實踐 第二章的2.1.2.1線性迴歸器程式報錯Reshape your data either using array.reshap(-1,1)的原因及解決方法

最近在看Python機器學習及實踐(從零開始kaggle競賽之路)這本書,到了第二章的線性迴歸器的GradientBoostingRegressor模型照著敲程式碼的時候

出現了以下的錯誤

出錯的問題在於標準化函式這裡。

可見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)語句。

這兩個方法都可以。