python3+matlab机器学习预测上证指数

爬虫爬去数据后,使用matlab的神经网络框架和径向基网络框架,通过前五天股市的开盘价预测后一天的收盘价。

配置python3环境,通过python爬虫爬取数据

pip3安装baostock pandas xlwt
爬取选定时期的股票当天开盘价、收盘价、当天收盘价等参数
并生成训练集及测试集

import baostock as bs
import pandas as pd
import systry:stock = sys.argv[1]print(stock)
except:stock='sh.000001' #可选择股票
#if(sys.argv[1] == 1){#   stock = 'sh.' + str(stock2)#  }
#else{stock = 'sz.' + str(stock2)}# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)# 获取股票信息
#rs = bs.query_hs300_stocks()
#rs = bs.query_all_stock('2020-12-04')
rs = bs.query_history_k_data_plus(stock,"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg",start_date='2019-01-01', end_date='2019-12-20',frequency="d", adjustflag="3")
print('query_hs300 error_code:'+rs.error_code)
print('query_hs300  error_msg:'+rs.error_msg)# 打印结果集
hs300_stocks = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起hs300_stocks.append(rs.get_row_data())
result = pd.DataFrame(hs300_stocks, columns=rs.fields)
# 结果集输出到csv文件
result.to_csv("./stock_info_train.csv", encoding="gbk", index=False)
result.to_excel("./stock_info_train.xls")
print(result)# 获取股票信息
#rs = bs.query_hs300_stocks()
#rs = bs.query_all_stock('2020-12-04')
#601857
rs = bs.query_history_k_data_plus(stock,"date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg",start_date='2020-06-01', end_date='2029-7-20',frequency="d", adjustflag="3")#超过会自动截止到最新日期
print('query_hs300 error_code:'+rs.error_code)
print('query_hs300  error_msg:'+rs.error_msg)# 打印结果集
hs300_stocks = []
while (rs.error_code == '0') & rs.next():# 获取一条记录,将记录合并在一起hs300_stocks.append(rs.get_row_data())
result = pd.DataFrame(hs300_stocks, columns=rs.fields)
# 结果集输出到csv文件
result.to_csv("./stock_info_test.csv", encoding="gbk", index=False)
result.to_excel("./stock_info_test.xls")
print(result)# 登出系统
bs.logout()

将xls数据导入matlab

clear all;%stock = 'sh.002415';
%stock=inputdlg('input the code of stock');
system('conda activate tushare')
system('python get_stock_info.py sz.608891')    %[~, numdata]=xlsread('stock_info_train.xls',1,'D2:N200');%读取历史数据
numdata1=csvread('stock_info_train.csv',1,2,[1 2 199 6])%读取历史数据
%numdata2=csvread('stock_info_train.csv',1,7,[1 7 199 8])%读取历史数据
numdata3=csvread('stock_info_train.csv',1,10,[1 10 199 12])%读取历史数据
numdata=[numdata1 numdata3];
numdata;
[~, date]=xlsread('stock_info_train.xls',1,'B2:B200');%读取日期

数据处理

for i=1:1:193P(i,:)=numdata(i+5,4);
endT = 1:1:40
for i=1:1:194ram = []for j=1:1:5ram = [ram numdata(i+j-1,:)]endT = [T ; ram]
end
T=T((2:1:194),:);
T=T';
P=P'[Tn,minT,maxT,Pn,minP,maxP] = premnmx(T,P); %数据归一化处理

建立神经网络


%建立神经网络
net=newff(minmax(Tn),[150,1],{'purelin','purelin'},'trainlm');
net.trainparam.show=50;    %显示迭代过程
net.trainparam.lr=0.005;    %学习率
net.trainparam.epochs=3000; %最大训练次数
net.trainparam.min_grad=1e-14; %最大训练次数
net.trainparam.goal=1e-12;  %训练要求精度
net.trainparam.mc=0;     %动量因子
[net,tr]=train(net ,Tn,Pn); %训练bp网络

或建立径向基网络

net = newrb(Tn,Pn,0,1,100);  %建立径向基网络

导入测试数据

%read the test data
numdata_test1=csvread('stock_info_test.csv',1,2,[1 2 199 6]);%读取历史数据
numdata_test2=csvread('stock_info_test.csv',1,10,[1 10 199 12]);%读取历史数据
numdata_test=[numdata_test1 numdata_test2];
[~, date_test]=xlsread('stock_info_test.xls',1,'B2:B200');%读取日期for i=1:1:193P_test(i,:)=numdata_test(i+5,4);
endT_test = 1:1:40;
for i=1:1:194ram = [];for j=1:1:5ram = [ram numdata_test(i+j-1,:)];endT_test = [T_test ; ram];
end
T_test=T_test((2:1:194),:);
T_test=T_test';
P_test=P_test'
% numdataT_test = numdata_test';
% P_test = numdataT_test(4,:);%目标值
% T_test = numdataT_test;
% P_test = P_test(2:99);
% T_test = T_test(:,(1:1:98));[Tn_test,minT_test,maxT_test,Pn_test,minP_test,maxP_test] = premnmx(T_test,P_test); %数据归一化处理

预测并绘图

Out2 = sim(net, Tn_test);%a1 = (1:1:93);
a1 = (1:1:193);
a2=postmnmx(Out2,minP_test,maxP_test);
plot(a1,P_test,'b-',a1,a2,'r-');
%plot(a1,P_test,'.');
title('预测每股价格','FontSize',12);
xlabel('统计时间2014.9.1-2015.11.10','FontSize',10);
ylabel('每股股价','FontSize',10);%hold on
%plot(a1,a2,'r--');
legend('实际值','预测值');
clc

对原数据的拟合情况

预测结果


对是否进行归一化的训练效果进行了比较

  1. 对于未进行归一化的数据,在导入训练网络后,在相同的训练目标下,迭代了98层,运行了2:35后梯度已无法下降,于是提前结束训练。进行归一化的数据在导入网络后,网络迭代了十层,运行了1:07后,达到了更小的梯度。
    综上,验证了数据归一化可使不同量纲下的数据归一化到合理的范围,有利于模型的泛化性,不易造成梯度爆炸,同时标准化减少了计算量,帮助模型更快收敛。
    归一化,真是个好东西,之前不应该嫌弃她的。

简单总结

  1. 数据的归一化还是非常有必要的,他可使不同量纲下的数据归一化到合理的范围,有利于模型的泛化性,不易造成梯度爆炸,同时标显著减少了计算量,帮助模型更快收敛。
  2. 径向基网络和BP网络相比较,径向基网络在创建时更加快速,但BP网络在后续数据预测方面更有优势。
  3. 股市有风险,投资需谨慎。

数据的归一化还是非常有必要的,他可使不同量纲下的数据归一化到合理的范围,有利于模型的泛化性,不易造成梯度爆炸,同时标显著减少了计算量,帮助模型更快收敛。
12.径向基网络和BP网络相比较,径向基网络在创建时更加快速,但BP网络在后续数据预测方面更有优势。
13.股市有风险,投资需谨慎。

matlab机器学习预测股价+python爬虫相关推荐

  1. 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)

    最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...

  2. 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价

    最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,在其中用股票范例讲述Python爬虫.数据分析和机器学习的技术,大家看了我的书,不仅能很快用比较热门的案例学好P ...

  3. 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)(转载)

    最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...

  4. 神经网络预测股价python talib_用机器学习来预测股价(代码+文档)——2018年iNTUtion决赛大作!...

    原标题:用机器学习来预测股价(代码+文档)--2018年iNTUtion决赛大作! 本期作者:Roman Moser 本期翻译:deigozhao 未经授权,严禁转载 机器学习和深度学习在时间序列数据 ...

  5. 星座运势预测,python爬虫

    from bs4 import BeautifulSoup import requests from translate import Translator import json import re ...

  6. python爬虫教程下载-Python爬虫视频教程全集下载

    原标题:Python爬虫视频教程全集下载 Python作为一门高级编程语言,在编程中应用得非常广泛.随着人工智能的发展,python人才的需求更大.当然,这也吸引了很多同学选择自学Python爬虫.P ...

  7. MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测

    MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...

  8. 统计语言类教程:R语言贝叶斯统计学、Copula、SEM、极值统计学、混合效应模型、R\Python\matlab机器学习、科研数据可视化、线性回归、分位数回归、GAMS、meta分析、近红外光谱等.

    查看原文>>>统计语言类教程:贝叶斯统计学.Copula.SEM.极值统计学.混合效应模型.PyTorch深度学习.科研数据可视化 以下给大家整理了一些常用的统计学内容和python ...

  9. python机器学习预测_使用Python和机器学习预测未来的股市趋势

    python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...

  10. python预测股票价格_使用机器学习预测股票价格的愚蠢简便方法

    在这篇文章中,我展示了使用H2o.ai框架的机器学习,使用R语言进行股票价格预测的分步方法. 该框架也可以在Python中使用,但是,由于我对R更加熟悉,因此我将以该语言展示该教程. 您可能已经问过自 ...

最新文章

  1. python字典去最值_python 比较字典value的最大值的几种方法
  2. 微信小游戏「跳一跳」技术手段高分秘籍实现
  3. android应用可以访问/dev下设备节点
  4. 再战FGM!Tensorflow2.0 自定义模型训练实现NLP中的FGM对抗训练 代码实现
  5. FP-growth算法高效发现频繁项集
  6. 矽谷真假U盘测试软件,要闻回顾_科技时代_新浪网
  7. android wifi连接手机,Android手机无线连接利器-AirDroid
  8. 基于JAVA+Spring+MYSQL的办公自动化系统
  9. java中为什么同步_如何在Java中同步工作
  10. php中fread用法,php fread函数与fread函数用法
  11. markdown在Windows10下安装后启动出现的错误以及一些解决方案
  12. Js页面截取小数点后两位
  13. 傅里叶光学随机散斑原理 matlab仿真实现随机散斑
  14. arcgis海岸带_需科学划定海岸带基准地理边界
  15. 12帧跑步动画分解图_跑步动画原理讲解
  16. 学经济学有必要学python吗_重读《1844年经济学哲学手稿》还有必要吗?
  17. 逆天且实用,Python这些神操作你都会了嘛?
  18. 机器学习中几种常见的乘积(product)
  19. Redis锁,悲观锁和乐观锁
  20. AmapUtil--高德地图工具类

热门文章

  1. 「微信小程序」有哪些冲击与机会?
  2. USB接线引脚定义图
  3. 烽火HG680-R-MSO9280-河南电信_湖北联通免费刷机固件及说明
  4. c语言悔棋用栈,中国象棋人机博弈程序(扁平化棋局) C语言实现
  5. WRF-ChemV4.0安装
  6. 按周显示的日历和按月显示的日历,你需要吗
  7. 防火墙之ASDM配置虚拟专用网络实践
  8. 520 miix 小兵 黑苹果,Hackintosh黑苹果长期维护机型整理清单
  9. Jacoco 实现 Android 端手工测试覆盖率统计
  10. J2EE框架(四)核心设计模式