基于K-Means算法,探索股票趋势的数据可视化
公司举办编程大赛,想到最近股票跌宕起伏,然后无心睡眠,所以跟我叔叔聊聊股市,叔叔操盘经常是选择A股票后,会购买B这只股票,但是A跟B之间单单从业务角度和股权分配都没有任何关系,至少从表面上是这么让人觉得。后来遵从他的劝解,我选择A\B两股,但是万万没想到的是跌得我想死,漫漫长夜,无心睡眠,起来骗点钱,看了些论文,着手把实现完成,主要使用到动态规划、排序和K-means算法结合下,进行归类那些不靠谱的股票,纪念下我那损失的万把块钱。(确切地说,损失非常严重,悟出一个真理中国股市没有任何依据可言),参考的论文是国外的课题,在附件中请查收(英文)
基于K-Means算法,探索股票趋势的数据可视化
采用欧氏距离
数据采样
股票号码、每天的股价(统计一周的股价情况)
数据集进行[0,1]规格化
K-Means算法进行聚类算法
输出结果
ID NAME VALUE
股票号码、股票名称、股票增值幅度
SOURCE TARGET VALUE
非K股票 K的股票 关联幅度
工作日 | 周一 | 周二 | 周三 | 周四 | 周五 | |
股票代码 | ||||||
工大高新 | 600701 | 10 | 16 | 23 | 1 | 60 |
江苏有线 | 600959 | 22 | 33 | 44 | 6 | 50 |
青岛碱业 | 600229 | 33 | 2 | 5 | 7 | 51 |
物产中大 | 600704 | 4 | 34 | 33 | 45 | 53 |
维科精华 | 600152 | 23 | 41 | 12 | 32 | 53 |
信雅达 | 600571 | 45 | 4 | 22 | 23 | 53 |
600119 | 4 | 2 | 10 | 4 | 4 | |
603703 | 5 | 32 | 11 | 13 | 13 | |
600446 | 6 | 33 | 32 | 13 | 50 | |
603128 | 23 | 32 | 4 | 33 | 14 | |
600833 | 12 | 12 | 6 | 22 | 23 | |
恒生电子 | 600570 | 13 | 13 | 8 | 33 | 12 |
600647 | 7 | 32 | 23 | 1 | 42 | |
601519 | 8 | 14 | 45 | 2 | 9 | |
600789 | 12 | 15 | 33 | 13 | 4 | |
601106 | 31 | 42 | 12 | 45 | 22 |
其实这几种算法没啥新意,个人感觉比较好玩的是数据的可视化,这里使用到浙大竺可桢学院数据可视化的同学们提供的组件,非常佩服他们。http://datavlab.org/
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>k-means股票数据可视化</title> <script src="../deps/compatible.js"></script> <script type="text/javascript" src="../deps/d3.min.js"></script> <script type="text/javascript" src="../deps/d3.layout.min.js"></script> <script type="text/javascript" src="../deps/d3.geom.min.js"></script> <script type="text/javascript" src="../deps/d3.csv.js"></script> <script src="../deps/raphael.min.js"></script> <!-- force --> <script type="text/javascript" src="../deps/seajs/sea.js"></script> <script type="text/javascript"> var dir = window.location.href.replace(/\\/g,'/').replace(/\/[^\/]*$/, ''); seajs.config({ alias: { 'datav': dir + '/../datav.js', 'force': dir + '/../libs/force.js' } }); </script> <STYLE type="text/css"> #chart { border-top: 1px dashed #F00; border-bottom: 1px dashed #F00; padding-left: 20px; } .textArea { border: 2px solid black; color: black; font-family: monospace; height: 3in; overflow: auto; padding: 0.5em; width: 750px; } </STYLE> </head> <body> <div class="body"> <h1 id="forcedirected_graph">基于K-Means股票关联的数据可视化</h1> <div class="gallery" id="chart"></div> </div> <script type="text/javascript"> seajs.use(["force", "datav"], function (Force, DataV) { // DataV.changeTheme("datav"); var net = new Force("chart", { width: 800, height: 600, tag: true }); DataV.csv("test3.csv", function (source) { net.setSource(source); net.render(); }); }); </script> </body> </html>