python機器學習及實踐 第二章的2.1.2.1線性迴歸器程式報錯Reshape your data either using array.reshap(-1,1)的原因及解決方法
阿新 • • 發佈:2019-01-25
最近在看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)語句。
這兩個方法都可以。