機器學習_學習筆記系列(47):k-鄰近演算法回歸(k-Nearest Neighbor Regression)

--

上一篇我們提到如何運用k-Nearest Neighbor來解決分類上的問題,而對於回歸上的問題,我們一樣也可以用kNN來做,而且想法跟做發也一樣相當簡單。

k-Nearest Neighbor Regression

對於kNN Regression的概念,其是和Classification一樣,我們會從訓練集找離我們選的數據點最近的k筆資料,然後將這個k筆資料的輸出資料y取平均,就是我們的預測值。

為了讓這篇內容有趣一點我們在這篇加一點東西進來,就是運用KNN畫股票趨勢圖。這裡我們選擇「群創光電」近1年的股票趨勢圖,作為我們的資料集,而資料來源來自台灣證券交易所。

首先我們先做一些資料前處理,把去年5月到今年4月整整六個月的資料(csv檔)讀取進來,然後我們這裡就把一些不重要的資訊剔除,處理好後我們可以看到我們的資料會顯示成這樣

而在股票分析圖裡面我們知道最重要的兩個東西一個是K線一個是均線,而我們要繪製K線,

紅色代表當天漲、綠色代表當天跌,細線的最高點和最低點分別代表最高價和最低價,粗線的最高點和最低點分別代表開盤價和收盤價。

而這裡我們可以用一個很好用的python套件

mplfinance

只要呼叫裡面其中一個方程式candlestick2_ochl,就可畫出美麗的K線圖。

其語法:

candlestick2_ochl(ax, All_data[‘開盤價’].values, All_data[‘收盤價’].values, All_data[‘最高價’].values, All_data[‘最低價’].values, width=0.6, colorup=”r”, colordown=”g”, alpha=0.75)

最後畫出來的結果為

接著就是畫出我們的均線,其實均線網路上有很多套件也可以下載使用,但是本人覺得均線本身概念很簡單,對於5日均線,就是前4天和今天收盤價的平均,10日均線就是前9天和今天收盤價的平均。所以我們劃出來就會長這樣

那接下來就是進入到用kNN做回歸,這裡我們用的方法,也相同就是選一個點,從訓練資料裡面找k個離他們最近的資料然後取平均值,就是那一個點的預測值。

所以概念上其實和均線還蠻相似的,都是取平均值。

Python Sample Code:

Github:

Reference:

[1] 台灣證券交易所, https://www.twse.com.tw/zh/

[2] Scikit-learn: Machine Learning in Python, Pedregosa et al., JMLR 12, pp. 2825–2830, 2011.

--

--

劉智皓 (Chih-Hao Liu)
劉智皓 (Chih-Hao Liu)

Written by 劉智皓 (Chih-Hao Liu)

豬屎屋AI RD,熱愛AI研究、LLM/SD模型、RAG應用、CUDA/HIP加速運算、訓練推論加速,同時也是5G技術愛好者,研讀過3GPP/ETSI/O-RAN Spec和O-RAN/ONAP/OAI開源軟體。

No responses yet