[Python] 從零到線性迴歸

Rick
4 min readJun 30, 2018

--

簡單紀錄Python學習筆記,使用台灣1986-2017年水泥產銷年度資料及相關工業生產指數,從零到線性迴歸模型。

1.載入套件

2.匯入資料 及 檢視資料訊息

匯入CSV檔案
依資料查看相關訊息

3.變數選擇

選擇單一變數
用 list 標註變數名稱可以將變數從資料框中選出,實踐 SQL 查詢中的select()的功能

SQL 查詢的相關函數 點我

篩選多變數組成新的資料集
從df31選擇單一變數時,class變為pandas.core.series.Series(如CementPeople),透過pd.DataFrame( ) 可以把CementPeople的class轉為pandas.core.frame.DataFrame

4.初探變數分布-探索資料

distplot(Index_cp) 工業生產指數-水泥相關製品業
相關係數以熱區圖(heatmap)視覺化

5.訓練模型

使用sklearn.feature_selection套件中的LinearRegression函數建立線性迴歸,lm.fit( )擬合X, y
顯示迴歸截距、係數、P-value
顯示MAE、MSE、RMSE、判定係數
Mean Absolute Error(MAE):平均絕對誤差
Mean Squared Error(MSE):平均平方誤差
Root Mean Squared Error(RMSE):均方根誤差
模型解釋力有94%

6.預測

新的資料集X_test透過lm.predict( ) 函數得到預測Y結果
考量未來不確定因素(外銷率管制)的預測結果

題外話

線性迴歸模型如何估計水泥需求彈性? 經濟學告訴我們,價格需求彈性Ep=ln(Q)/ln(P),表示價格變動1單位,需求量會變動多少單位。因為水泥是營建必需品,直觀來說,價格大漲的話,蓋房子還是需要水泥,並不會減少太多(當然不考慮偷工減料的情況...),反之亦然,水泥便宜到隨處都撿得到的話,你家也不會用兩倍的水泥蓋房子吧,也就是說價格變動不太會影響水泥需求量變化,因此價格需求彈性會小於1,本範例Ep算出來是0.9388,雖然小於1,但比我預想的還要高...。

ln(水泥價格) 對 ln(水泥需求量) 跑線性迴歸,ln(水泥價格) 的係數剛好是需求價格彈性

參考資料:

CSDN-PANDAS 数据合并与重塑(concat篇)

【pandas】[3] DataFrame 数据合并,连接(merge,join,concat)

<化讚為賞> 若你喜歡這篇文章,請點擊 Like 5 下! 支持創作與內容分享,筆者將獲得 LikeCoin官方回饋 !!

--

--

Rick

理解、分解、再構成,我是說鍊金術