在上一節中咱們介紹了線性迴歸的原理,而後分別用python和sklearn實現了不一樣變量個數的線性迴歸的幾個例子。線性迴歸模型形式簡單,有很好的可解釋性,可是它只適用於X和y之間存在線性關係的數據集。對於非線性關係的數據集,線性迴歸不能很好的工做。所以本文介紹線性迴歸模型的擴展——「多項式迴歸」,咱們能夠用它來擬合非線性關係的數據集。python
假設咱們有一個單變量數據集,以下圖。 機器學習
爲了觀察它們之間的關係,咱們用 matplotlib 畫出散點圖。 從圖中看,它們有點像在一條直線上,但仔細看更像是在一個拋物線上。首先咱們假設它們知足線性關係,使用線性迴歸模型獲得的結果以下圖中黃線所示。 post
看起來彷佛還能夠,可是來看看偏差,太大了。 下面咱們試試用拋物線擬合它們。線性迴歸能夠經過從係數構造多項式的特徵來擴展。爲了使推導過程更具備表明性,咱們先以一個雙變量的爲例,而後再看咱們上面的單變量的例子。學習
雙變量線性迴歸模型形以下面式子: 3d
經過結合二階多項式的特徵,添加二次方項,將它從平面轉換爲拋物面: 用z替換x: 因此,咱們的式子能夠寫成: 這樣就變爲線性迴歸模型。同理,咱們的數據集是單變量的,轉換後的式子爲: cdn
計算結果如圖。 線性迴歸獲得的模型爲: 多項式迴歸獲得的模型爲: 兩個模型以下圖所示。 能夠看出多項式迴歸模型的效果(綠線)要明顯好於線性迴歸模型(黃線)。更高階的同理。blog