matlab机器学习预测股价+python爬虫
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
对原数据的拟合情况
预测结果
对是否进行归一化的训练效果进行了比较
- 对于未进行归一化的数据,在导入训练网络后,在相同的训练目标下,迭代了98层,运行了2:35后梯度已无法下降,于是提前结束训练。进行归一化的数据在导入网络后,网络迭代了十层,运行了1:07后,达到了更小的梯度。
综上,验证了数据归一化可使不同量纲下的数据归一化到合理的范围,有利于模型的泛化性,不易造成梯度爆炸,同时标准化减少了计算量,帮助模型更快收敛。
归一化,真是个好东西,之前不应该嫌弃她的。
简单总结
- 数据的归一化还是非常有必要的,他可使不同量纲下的数据归一化到合理的范围,有利于模型的泛化性,不易造成梯度爆炸,同时标显著减少了计算量,帮助模型更快收敛。
- 径向基网络和BP网络相比较,径向基网络在创建时更加快速,但BP网络在后续数据预测方面更有优势。
- 股市有风险,投资需谨慎。
数据的归一化还是非常有必要的,他可使不同量纲下的数据归一化到合理的范围,有利于模型的泛化性,不易造成梯度爆炸,同时标显著减少了计算量,帮助模型更快收敛。
12.径向基网络和BP网络相比较,径向基网络在创建时更加快速,但BP网络在后续数据预测方面更有优势。
13.股市有风险,投资需谨慎。
matlab机器学习预测股价+python爬虫相关推荐
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,在其中用股票范例讲述Python爬虫.数据分析和机器学习的技术,大家看了我的书,不仅能很快用比较热门的案例学好P ...
- 用Python爬取股票数据,绘制K线和均线并用机器学习预测股价(来自我出的书)(转载)
最近我出了一本书,<基于股票大数据分析的Python入门实战 视频教学版>,京东链接:https://item.jd.com/69241653952.html,在其中用股票范例讲述Pyth ...
- 神经网络预测股价python talib_用机器学习来预测股价(代码+文档)——2018年iNTUtion决赛大作!...
原标题:用机器学习来预测股价(代码+文档)--2018年iNTUtion决赛大作! 本期作者:Roman Moser 本期翻译:deigozhao 未经授权,严禁转载 机器学习和深度学习在时间序列数据 ...
- 星座运势预测,python爬虫
from bs4 import BeautifulSoup import requests from translate import Translator import json import re ...
- python爬虫教程下载-Python爬虫视频教程全集下载
原标题:Python爬虫视频教程全集下载 Python作为一门高级编程语言,在编程中应用得非常广泛.随着人工智能的发展,python人才的需求更大.当然,这也吸引了很多同学选择自学Python爬虫.P ...
- MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测
MATLAB-基于长短期记忆网络(LSTM)的SP500的股票价格预测 股价预测 matlab实战 数据分析 数据可视化 时序数据预测 变种RNN 股票预测 摘要 近些年,随着计算机技术的不断发展,神 ...
- 统计语言类教程:R语言贝叶斯统计学、Copula、SEM、极值统计学、混合效应模型、R\Python\matlab机器学习、科研数据可视化、线性回归、分位数回归、GAMS、meta分析、近红外光谱等.
查看原文>>>统计语言类教程:贝叶斯统计学.Copula.SEM.极值统计学.混合效应模型.PyTorch深度学习.科研数据可视化 以下给大家整理了一些常用的统计学内容和python ...
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
python机器学习预测 Note from Towards Data Science's editors: While we allow independent authors to publish ...
- python预测股票价格_使用机器学习预测股票价格的愚蠢简便方法
在这篇文章中,我展示了使用H2o.ai框架的机器学习,使用R语言进行股票价格预测的分步方法. 该框架也可以在Python中使用,但是,由于我对R更加熟悉,因此我将以该语言展示该教程. 您可能已经问过自 ...
最新文章
- python字典去最值_python 比较字典value的最大值的几种方法
- 微信小游戏「跳一跳」技术手段高分秘籍实现
- android应用可以访问/dev下设备节点
- 再战FGM!Tensorflow2.0 自定义模型训练实现NLP中的FGM对抗训练 代码实现
- FP-growth算法高效发现频繁项集
- 矽谷真假U盘测试软件,要闻回顾_科技时代_新浪网
- android wifi连接手机,Android手机无线连接利器-AirDroid
- 基于JAVA+Spring+MYSQL的办公自动化系统
- java中为什么同步_如何在Java中同步工作
- php中fread用法,php fread函数与fread函数用法
- markdown在Windows10下安装后启动出现的错误以及一些解决方案
- Js页面截取小数点后两位
- 傅里叶光学随机散斑原理 matlab仿真实现随机散斑
- arcgis海岸带_需科学划定海岸带基准地理边界
- 12帧跑步动画分解图_跑步动画原理讲解
- 学经济学有必要学python吗_重读《1844年经济学哲学手稿》还有必要吗?
- 逆天且实用,Python这些神操作你都会了嘛?
- 机器学习中几种常见的乘积(product)
- Redis锁,悲观锁和乐观锁
- AmapUtil--高德地图工具类