Matlab的FIG信息粒化SVM对于上证指数的预测-FIG_SVM_sh.rar
Matlab的FIG信息粒化SVM对于上证指数的预测-FIG_SVM_sh.rar 秉承着这个帖子: 利用libsvm做回归分析的一个小例子 https://www.ilovematlab.cn/thread-47453-1-1.html对于上证指数的预测我又做了一些探究,这次我要做的是从20号开始对于未来五天内(20,21,24,25,26)[22,23两天关闭],上证指数的每日开盘数的变化空间(五日内的变化范围的预测,以及与前五日相比的趋势). 所采用的方法是FIG+SVM[信息粒化 支持向量机]. 这回也加大了数据量,为上证指数从1990.12.19开盘以来到2009.8.19,4579个交易日内每日的开盘数. 原始数据如下: ========上证指数1990.12.19-2009.8.19每日开盘数 sh_8_19.jpg ======== 我把每五日,放在一起对原始数据进行模糊信息粒化.[有关模糊信息粒化相关的代码我就不贴出来了,其他的代码可以共享] 得到原始数据的信息粒化图,三幅,分别是模糊数的三个部分: 最低,代表,最高.看图: 图的意义与那个帖子类似: 红色是原始数据,绿色是用SVM拟合的数据,下面的是归一化的数据,调试用的. =====low========= low.jpg mse = 18.7764 r = 0.9960 =====R========== | R.jpg | mse = 9.1019 r = 0.9980 =====up========= up.jpg | mse = 8.4657 r = 0.9982 ============================= 利用上面训练得到的模型 对于从20号开始对于未来五天内(20,21,24,25,26)开盘指数的变化范围的预测是: [2505.6,2951.8,3204.8] 所表示的意义是: 20,21,24,25,26这五天内开盘数的变化范围为 2505.6到3204.8,且五日内平均水平大概为2951.8. 由于20号的开盘指数已知为:20号的实际开盘是2798.4 验证一下是在上面的范围内的. 21,24,25,26可以每天验证一下看看这个模型预测的怎么样... [不一定准哈,我就是做了个小探索.hehe.OO,要是准了.咱完后就靠这个模型天天预测大盘.炒股就成.了.so.......] 且20号往前五日[13,14,17,18,19]的变化范围是[2796.3 3138.2 3380.2] 这样比较起来说明:[2505.6,2951.8,3204.8] vs [2796.3 3138.2 3380.2] 趋势预测: 20号后面五日内的开盘数整体会比前五日有所降低.down.. 代码如下:[信息粒化的我没贴出来,但接口给了,其他的我都贴上] ====FIG_SVM_sh.m=====%FIG SVM script by faruto to predict trend of the index of Shanghai 09.8.21 %Email:farutoliyang@gmail.com QQ:516667408 http://blog.sina.com.cn/faruto %www.ilovematlab.cn load sh_8_19; TS = sh_open'; figure; plot; legend'); grid on; len = length; win_num = floor; [low,R,up]=FIG_D; % figure; % plot; % legend; % grid on; % figure; % plot; % legend; % grid on; % figure; % plot; % legend; % grid on; [pre_low,acc_low,model_low,ps_low] = SVM_regression; [pre_up,acc_up,model_up,ps_up] = SVM_regression; [pre_R,acc_R,model_R,ps_R] = SVM_regression; prlow = svmpredict; prlow = mapminmax prup = svmpredict; prup = mapminmax prR = svmpredict; prR = mapminmax 复制代码==========SVM_regression.m========================function [predict,accuracy,model,ps] = SVM_regression %by faruto 09.8.21 %Email:farutoliyang@gmail.com QQ:516667408 http://blog.sina.com.cn/faruto %www.ilovematlab.cn if nargin < 4 cmax = 10; gmax = 10; end ts = TS'; [n,m] = size; figure; hold on; grid on; plot; time = 1:n; time = time'; [tsy,ps] = mapminmax; ps.ymin = ymin; ps.ymax = ymax; [tsy,ps] = mapminmax; ts_again = mapminmax; tsy = tsy'; ts_again = ts_again'; plot; plot; mse = 10^7; for log2c = -cmax:cmax, for log2g = -gmax:gmax, cmd = ['-v 3 -c ', num2str, ' -g ', num2str , ' -s 3 -p 0.4 -n 0.1']; cv = svmtrain; if , mse = cv; bestc = 2^log2c; bestg = 2^log2g; end end end fprintf\n',bestc, bestg, mse); cmd = ['-c ', num2str, ' -g ', num2str , ' -s 3 -p 0.4 -n 0.1']; model = svmtrain; % model = svmtrain; [predict,accuracy] = svmpredict; predict = mapminmax; plot; 复制代码测试数据,代码打包.要的拿去[信息粒化的代码没有]: FIG_SVM_sh.rar
- 1
- 粉丝: 491
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助