1. 程式人生 > >基於SVM的股票預測 Python實現 附Github

基於SVM的股票預測 Python實現 附Github

SVM 支援向量機

原理就不贅述了,其餘的文章有講過。SVM是一種十分優秀的分類演算法,使用SVM也能給股票進行一定程度上的預測。

核心

因為是分類演算法,因此不像ARIMA一樣預測的是時序。分類就要有東西可分,因此將當日漲記為1,跌記為0,作為分類的依據。使用歷史資料作為訓練資料。

處理資料:

1.股票歷史資料來源於yahoo_finance api,獲取其中Open,Close,Low,High,Volume作為基礎。因為除去Volume以外,其餘資料都是Price,基於Price並不能很好的表達股票的特性,或者說並不太適用於SVM分類演算法的特性。基於SVM演算法的特性,股票並不是到達一個價格範圍就有大概率漲或跌(不知道我這個表達大家能不能看懂)。

2.基於上述原因,我決定將Price轉換成另一種形式的資料。例如:High-Low=全天最大價格差,Open-YesterdayOpen=當天Open價格變動,Open-YesterdayClose=開盤價格變動。(我也並不太懂經濟學,僅僅是為了尋找另一種更好的方案)

3.單純地基於歷史資料是完全不夠的,因此還使用了R語言和tm.plugin.sentiment包,進行語義分析,進行新聞正面負面的判定。這塊不是我做的,瞭解的並不多。新聞並不是每天都有的,這樣的話新聞資料就顯得有些雞肋,無法在分類演算法中起到作用,但是我們能在多個站點中提取,或是直接將關鍵字定為Debt(判斷大眾反應)。

4.這裡僅僅是進行了兩個站點的新聞挖掘,然後可通過rpy2包在Python中執行R語言,或是R語言得到的資料匯出成Json,Python再讀取。至此,資料處理告一段落。

SVM演算法:

股票資料不能完全基於歷史資料,因此需要一定數量的歷史資料推出預測資料,例如這邊使用了70天的資料訓練,來推出後一天的股票漲跌,而不是所有的歷史資料。

最後的成績是53.74%的正確率,對於一個基本使用歷史資料來預測股市的方法而言已經是個不錯的結局了。

Github

https://github.com/jerry81333/StockProdiction/