深度學習模型速成,三分鐘解決經典線性迴歸模型(附完整代碼)

每天給小編五分鐘,小編用自己的代碼,帶你輕鬆學習人工智能!本文將會帶你做完一個深度學習進階項目,讓你熟練掌握線性迴歸這一深度學習經典模型,然後在此基礎上,小編將在下篇文章帶你通過此模型實現對股票漲幅的預測。野蠻智能,小白也能看懂的人工智能。

深度學習模型速成,三分鐘解決經典線性迴歸模型(附完整代碼)

線性迴歸

乾貨快遞點:

  • 線性迴歸是什麼?假如給定數據集{[x1,y1],[x2,y2][x3,y3]……},線性迴歸希望用一個近似函數來描述這組數據,這個數據集裡y的影響因素只有一個就是x,那描述的結果應該就是y = wx + b這樣一條直線。這時就把這個解題模型叫做一維線性迴歸。以此類推,當我們給定一組數據集{[x11,x12,x13,x14,y1],[x21,x22,x23,x24,y2],[x31,x32,x33,x34,y3]……},可以看到這組數據有4個自變量,一個因變量,就可以把它稱為多維線性迴歸,對應產生的直線也是更高維度的,所以總結一下:線性迴歸目的是創造一條線,使這條線儘可能多的經過我們的數據點,從而顯現出數據的一般規律,進而預測出更多的規律。
  • 線性迴歸的優勢:也許你看完上邊的解釋,你會覺得線性迴歸技術含量太低,但是,越簡單越實用,這確實人工智能領域經久不衰的數學模型之一,面對比較複雜的現實問題,我們只要用更高的維度來描述,就可以把這組數據的規律描述清楚。而且這個模型的可解釋性好,所有的參數和對應的權重,我們都可以清晰地看到對應的含義。所以當前很多應用問題,我們都是用的這個模型的基礎上變化出很多版本來使用。都獲得了很好的效果。
  • 線性迴歸的應用:既然線性迴歸創造的這條線擬合了過去的數據,那麼數據的規律就蘊藏在這條線中,可以用它來實現未來的預測,所以在下篇文章中,小編將帶著大家做一個真正的,股票市場的漲幅預測模型。
  • 另一個應用是描述權重,通過線性迴歸,可以得到不同屬性對最後結果的影響大小。進而幫助為我們選擇其他數學模型提供信息支持。

代碼配送站:

如果你還沒有搭建好自己的深度學習模型。參考小編的 ,快速搭建你的深度學習環境。下面進入實戰。

以下是小編的代碼,為了幫助大家多多練習,特意印成了圖片格式。

深度學習模型速成,三分鐘解決經典線性迴歸模型(附完整代碼)

在這段代碼中,首先是導入必要的包,其中第一二行的matplotlib.pyplot和numpy是用來畫圖的,torch.nn是神經網絡模組,用來進行神經網絡的相關處理。Variable是將張量轉換為變量的函數。

然後構建數據想x_train和y_train,一共12組,即為12個點。然後用matplotlib工具的scatter和show將這12個點畫出來。運行結果如下圖所示:

深度學習模型速成,三分鐘解決經典線性迴歸模型(附完整代碼)

class內的部分,定義了這個訓練的模型,也就是線性迴歸,先用super初始化,然後調用nn.linear創建一層神經元。然後使用前向傳播並返回執行結果。if_else部分是這個線性迴歸模型放在GPU或者CPU上的選擇。優先放在GPU上,沒有GPU就使用CPU。

criterion = nn.MSELoss()定義了損失函數。optimizer定義了優化器,選擇使用的是SGD(梯度下降)。最後就是進行訓練了,我們設定迭代1000次,然後把數據放在GPU上(或者CPU上),然後將輸入數據裝入模型,保存模型運行出來的結果out。然後算出loss值,在進行梯度優化前進行歸零,對loss值求導後進行梯度優化。等待三到五秒,模型訓練完畢。中間輸出以下結果。

深度學習模型速成,三分鐘解決經典線性迴歸模型(附完整代碼)

然後進行模型測試,首先需要將模型的狀態轉為測試,通過eval()完成。然後將原來的訓練集傳入測試,觀察輸出的預測值。中間需要注意下述部分:

predict = model(Variable(x_train).cuda())#如果你是cpu模式的,就不用輸入".cuda()"了,這部分代碼功能是將數據放到GPU上。

predict = predict.data.cpu().numpy()#同樣的道理,如果你是CPU模式,也不用輸入".cpu()"部分了,這部分功能是將GPU數轉換為CPU數,因為numpy只能運行在cpu上。最後依舊利用plot畫圖工具,得到如下測試結果。

深度學習模型速成,三分鐘解決經典線性迴歸模型(附完整代碼)

整體效果,還不錯,那麼自己也去敲一遍代碼吧。出現問題,可以在評論區留言,小編看到就會回的。野蠻智能,小白也能看懂的人工智能,歡迎大家跟小編一起來學習。


分享到:


相關文章: