亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
578
2025-03-31
前陣子報名參加了「數據游戲」比賽,題目是預測5月15號(星期三)招商銀行的股價,截止時間是在5月12號(星期天)。在本次預測中,我用到的是嶺回歸。
嶺回歸
嶺回歸是回歸的一種,它解決回歸中重大疑難問題:排除多重共線性,進行變量的選擇,在存在共線性問題和病態數據偏多的研究中有較大的實用價值。按照度娘百科的解釋:嶺回歸是一種專用于共線性數據分析的有偏估計回歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分信息、降低精度為代價獲得回歸系數更為符合實際、更可靠的回歸方法,對病態數據的擬合要強于最小二乘法。
多重共線性指線性回歸模型中的解釋變量之間由于存在精確相關關系或高度相關關系而使模型估計失真或難以估計準確。
由于嶺回歸涉及的數學知識比較復雜,且文章篇幅有限,這里不過多展開。
數據獲取
本次數據是通過 Tushare 的 get_hist_data() 獲取的。Tushare 是一個免費、開源的 python 財經數據接口包。python 安裝 tushare 直接通過?pip install tushare?即可安裝。
運行之后可以查看它的前后幾行數據。按照 tushare 官方的說明,get_hist_data() 只能獲取近3年的日線數據,而他的返回值的說明是這樣的:
date:日期;
open:開盤價;
high:最高價;
close:收盤價;
low:最低價;
volume:成交量;
price_change:價格變動;
p_change:漲跌幅;
ma5:5日均價;
ma10:10日均價;
ma20:20日均價;
v_ma5:5日均量;
v_ma10:10日均量;
v_ma20:20日均量
均價的意思大概就是股票 n 天的成交價格或指數的平均值。均量則跟成交量有關。至于其他的返回值,應該是一下子就能明白的吧。在獲得數據之后,我們查看一下描述性統計,通過data.describe()查看是否存在什么異常值或者缺失值。
這樣看來似乎除了由于周末以及節假日不開盤導致的當天的數據缺失以外,并沒有其他的缺失和異常。但是這里我們不考慮節假日的缺失值。
數據預處理
由于獲取的數據是按日期降序排序,但本次預測跟時間序列有關,因此我們需要把順序轉一下,讓它按照日期升序排序。
處理完順序之后,我們要做一下特征值的選擇。由于 volume 以及均量的值很大,如果不進行處理的話,很可能對整體的預測造成不良影響。由于時間有限,而且考慮到運算的復雜度,這里我沒有對這些特征進行處理,而是直接將它們去掉了。至于均價,我是按照自己的理解,和10日均價、20日均價相比,5日均價的范圍沒那么大,對近期的預測會比另外兩個要好,因此保留5日均價。接著,我用 sklearn.model_selection 的 cross_val_score,分別查看除 'open', 'close', 'high', 'low', 'ma5' 以外的其他剩余屬性對預測值的影響。發現 、 'p_change'、'price_change'這兩個屬性對預測結果的影響不大,為了節省內存,增加運算速度,提高預測的準確性,也直接把它們去掉了。完了之后,查看前后三行數據。
建模預測
由于提交截止日期是周日,預測的是周三,因此需要先對周一周二的信息進行預測。在這里我突然想到一個問題,是用前一天的所有數據來訓練模型以預測當天的 close 比較準確,還是用當天除了 close 以外的其他數據來訓練模型以訓練當天的 close 比較準呢?為了驗證這個問題,我分別對這兩種方法做了實驗。
為了減少代碼量,定義了一個函數用以評估模型的錯誤率。
用前一天的所有數據來當訓練集
輸出結果大約為0.469,這個錯誤率就比較大了,不太合理,更何況還要預測其他特征值作為測試數據。
用當天除了 close 以外的其他數據來當訓練集
輸出結果大約為0.183,跟第一個相比簡直好多了。所以,就決定是你了!
接下來建模并把模型保存下來:
在預測之前呢,我們先拿訓練集的后8組數據做一下測試,做個圖看看:
看到這樣子我還是相對比較放心的,不過,這個模型的訓練值除了 close 以外的屬性都是已知的,要預測三天后的還得預測前兩天的測試值。
接下來預測三天的股價:
輸出結果為:
[33.46370029] [33.4532047] [33.43836721]
5月15日招商銀行關盤時的股價為:33.44
總結
雖然預測結果是這樣子,但感覺這樣預測似乎很菜啊。畢竟預測的每個值都會有偏差,多個偏差累加起來就很多了,這讓我有點害怕。不知道存不存在不預測其他值直接預測close的方法,或者說直接預測5月15號的而不用先預測13、14號的方法。雖然我知道有種算法是時間序列算法,但不是很懂。希望哪位大神看了能給我一些建議,指點迷津。
對于一個自學數據分析的在校學生,苦于沒有項目經驗,正好趕上這次的「數據游戲」,能利用此次機會操作一波真的很不錯。既能學到東西,獲勝的話還能得到獎品。
Ad Time
參與數據科學活動請加 QQ 群:759677734
本文轉載自異步社區。
5G游戲 Python 金融專區 https
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。