Python:KNN(K Nearest Neighbor)近鄰演算法 | 運用TSE資料| K & Score 


資料如下

figure-1

檔案↓

Python_TSE.xlsx


開高低收資料應該不難理解
G欄位是=E3/E2-1
F欄位是=IF(G3>0,1,0) #簡單的來說就是在衡量是否上漲,若是則為1,否則為0
因為原始資料會需要犧牲一列資料,所以我才新增sheet TSE2 把原始資料純值得貼上。


因為我主要不是要介紹KNN的理論,也不要教學code,只是單純分享code,所以KNN簡單介紹帶過。希望當有人嘗試要在做這類事情遇到困難時可以找到這篇文章而得到解答。

簡單介紹KNN(wiki提供)
k近鄰演算法例子。測試樣本(綠色圓形)應歸入要麼是第一類的藍色方形或是第二類的紅色三角形。如果k=3(實線圓圈)它被分配給第二類,因為有2個三角形和只有1個正方形在內側圓圈之內。如果k=5(虛線圓圈)它被分配到第一類(3個正方形與2個三角形在外側圓圈之內)。

figure-1

圖片來源:wiki


你可以透過第35列直接更改50這個值,圖表就可以重新畫了,看你想測試到幾個K

我在寫的過程遇到一些奇怪的問題,但問題真的太多了,所以我也沒全記起來,但我可以說明大概在哪幾個撰寫的部分會很常出現問題,首先是第13-20列,我嘗試過一些其他方法,要命名這些資料,可是卻出現一些奇怪的Bug,所以當你在跑KNN跑不出來時可以重新檢視你在這部分的內容。

留意第19列的X必須是大寫,第28列的大小寫也不能搞錯

最後我用for迴圈測試K跟準確率的關係,在K等於1~50的條件下,得到K等於3、準確率=0.72。


figure-2


figure-3


程式碼下載
KNN.docx

figure-2



拍手 拍手
7 次拍手
拍手 拍手
追蹤

推薦文章

您需要 後才能開始留言
RayWang66
05/24

看起來K值過高就overfitting了,想請問回測數據是用同一時期還是有參雜不同年份呢

回覆
聲音節目
沒有描述
--:--
--:--
1.0x
播放速度
2.0x
1.75x
1.5x
1.25x
1.0x
0.75x
收藏節目
播放清單
沒有播放清單
沒有待播放的清單
返回播放器
接著播放
清除全部
沒有待播放的清單