python股票交易模型_python随机森林模型简单股票涨跌预测
import numpy as np
import pandas as pd
import tushare as ts
import matplotlib.pyplot as plt
from pylab import mpl
from datetime import datetime
import talib
from sklearn.ensemble import RandomForestClassifier #分类决策树模型
from sklearn.metrics import accuracy_score #预测准确度评分函数
import warnings
warnings.filterwarnings("ignore")
#pd.set_option()就是pycharm输出控制显示的设置
pd.set_option('expand_frame_repr', False)#True就是可以换行显示。设置成False的时候不允许换行
pd.set_option('display.max_columns', None)# 显示所有列
#pd.set_option('display.max_rows', None)# 显示所有行
pd.set_option('colheader_justify', 'centre')# 显示居中
pro = ts.pro_api('要到tushare官网注册个账户然后将token复制到这里,可以的话请帮个忙用文章末我分享的链接注册,谢谢')
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
#1.数据准备
df = pro.daily(ts_code='002505.SZ', start_date='20200101', end_date='20200818')
df.set_index('trade_date', inplace=True) #设置date列为索引,覆盖原来索引,这个时候索引还是 object 类型,就是字符串类型。
df.index = pd.DatetimeIndex(df.index) #将object类型转化成 DateIndex 类型,pd.DatetimeIndex 是把某一列进行转换,同时把该列的数据设置为索引 index。
df = df.sort_index(ascending=True) #将时间顺序升序,符合时间序列
print(df)
df['close-open'] = (df['close']-df['open'])/df['open']
df['high-low'] = (df['high']-df['low'])/df['low']
df['pre_close'] = df['close'].shift(1) #昨日收盘价
df['price_change'] = df['close']-df['pre_close']
df['p_change'] = (df['close']-df['pre_close'])/df['pre_close']*100
df['MA5'] = df['close'].rolling(5).mean()
df['MA10'] = df['close'].rolling(10).mean()
df.dropna(inplace=True)
df['RSI'] = talib.RSI(df['close'], timeperiod=12)
df['MOM'] = talib.MOM(df['close'], timeperiod=5)
df['EMA12'] = talib.EMA(df['close'], timeperiod=12)
df['EMA26'] = talib.EMA(df['close'], timeperiod=26)
df['MACD'], df['MACDsignal'], df['MACDhist'] = talib.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
df.dropna(inplace=True)
#2.提取特征变量和目标变量,用当天收盘后获取完整的数据为特征变量,下一天的涨跌情况为目标变量这样来训练分类决策树模型
X = df[['close', 'vol', 'close-open', 'MA5', 'MA10', 'high-low', 'RSI', 'MOM', 'EMA12', 'EMA26', 'MACD', 'MACDsignal', 'MACDhist']]
y = np.where(df['price_change'].shift(-1)>0, 1, -1) #下一天股价涨,赋值1,下跌或平,赋值-1
#3设置训练集跟测试集
X_length = X.shape[0] #获取X的行数和列数,shape[0]为行数
split = int(X_length * 0.8)
X_train, X_test = X[:split], X[split:]
y_train, y_test = y[:split], y[split:]
#4设置模型
model = RandomForestClassifier(max_depth=4, n_estimators=10, min_samples_leaf=5, random_state=1)
model.fit(X_train, y_train)
#5预测股价涨跌,根据X_test给出的'close', 'vol', 'close-open', 'MA5'等数据进行预测第二天股价的涨跌情况
y_pred = model.predict(X_test)
#print(y_pred)
a = pd.DataFrame()
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
print(a)
#6预测属于各个分类的概率
y_pred_proba = model.predict_proba(X_test)
b = pd.DataFrame(y_pred_proba, columns=['分类为-1的概率', '分类为1的概率'])
print(b)
#7整体模型的预测准确度
from sklearn.metrics import accuracy_score
score = accuracy_score(y_pred, y_test)
print('准确率: ' + str(round(score*100, 2)) + '%')
#8分析特征变量的特征重要性
features = X.columns
importances = model.feature_importances_
b = pd.DataFrame()
b['特征'] = features
b['特征重要性'] = importances
b = b.sort_values('特征重要性', ascending=False)
print(b)
#参数调优
from sklearn.model_selection import GridSearchCV
parameters = {'n_estimators':[5, 10, 20], 'max_depth':[2, 3, 4, 5], 'min_samples_leaf':[5, 10, 20, 30]}
new_model = RandomForestClassifier(random_state=1)
grid_search = GridSearchCV(new_model, parameters, cv=6, scoring='accuracy')
grid_search.fit(X_train, y_train)
grid_search.best_params_
print('最优模型参数: ' + str(grid_search.best_params_))
python股票交易模型_python随机森林模型简单股票涨跌预测相关推荐
- python房价预测模型_python随机森林房价预测
Kaggle房价预测 作为Kaggle竞赛中的经典入门题目,我主要在kernels中学习其他人分析和处理数据的流程,首先是通过各类plt的图表,分析数据特征和房价之间的相关性 载入数据集 df_tra ...
- python随机森林模型简单股票涨跌预测
前言: 学了差不多10多天的入门机器学习,突然发现学好数学是多么的重要,以前上学时还觉得数学只要学会加减乘除就可以了,什么导数,回归方程都没什么用,这段时间真后悔死,看了好多模型原理推导,有好多的数学 ...
- 随机森林模型构建--在凯斯西储(CWRU)数据上的简单测试(1)
随机森林模型构建测试–在凯斯西储(CWRU)数据上的简单测试(1) 文章目录 随机森林模型构建测试--在凯斯西储(CWRU)数据上的简单测试(1) 1. 实验数据集说明 2. 测试数据说明 3. 随机 ...
- Python使用随机森林模型进行电影评分预测
目录 数据处理 数据划分 数据建模 模型评估 结果预测 综合运用数据分析与数据挖掘课程中的数据探索.数据预处理.分析建模等理论知识,能够根据不同的业务的场景,选定不同的数据分析与数据挖掘模型,并能够通 ...
- Python计算树模型(随机森林、xgboost等)的特征重要度及其波动程度:基于熵减的特征重要度计算及可视化、基于特征排列的特征重要性(feature permutation)计算及可视化
Python计算树模型(随机森林.xgboost等)的特征重要度及其波动程度:基于熵减的特征重要度计算及可视化.基于特征排列的特征重要性(feature permutation)计算及可视化 目录
- python基于随机森林模型的预测概率和标签信息可视化ROC曲线
python基于随机森林模型的预测概率和标签信息可视化ROC曲线 目录 python基于随机森林模型的预测概率和标签信息可视化ROC曲线
- 【信用评分预测模型(四)】Python随机森林模型
文章目录 前言 一.随机森林介绍 一.定义函数 二.模型建立 1.模型参数设置 2.模型训练集和测试集拆分 3.模型训练 4.特征值 总结 前言 在https://blog.csdn.net/m0_6 ...
- kaggle项目:基于随机森林模型的心脏病患者预测分类!
公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 新年的第一个项目实践~给大家分享一个新的kaggle案例:基于随机森林模型(RandomForest)的心脏病人预测分类 ...
- ArcGIS Pro随机森林模型深度机器学习预测海草栖息地【教程】
开始之前,总体梳理一下项目流程,大致了解一下我们是怎么一步一步得到最终结果的 1.创建训练数据集 下载数据(链接:https://pan.baidu.com/s/1tM4ZXplEP2MC787OKS ...
最新文章
- 被忽视的Web安全漏洞:如何识别和解决?
- ABAP,Java, nodejs和go语言的web server编程 1
- OpenShift 4 - 提权运行容器
- Neo4j HA环境配置
- Spring MVC中ModelAndView
- php larval开发规范,Laravel 开发规范摘要
- 使用Spider提取数据(爬取起点中文网)
- python3 接口获取数据
- 冰冻三尺,非一日之寒
- 迅为4418/6818开发板 Yocto 系统烧写
- win10亮度调节变为灰色无法调节
- 智能电话机器人介绍(AI语音机器人)
- 计算机组成原理 习题+知识点
- 2022年大厂招聘Java程序员的技术标准,你有什么看法?
- Graphics.FromImage报错“Graphics object cannot be created from an image that has an indexed pixel ...”
- 如何策划新闻稿,低成本实现品牌影响力增长
- 论文翻译 SGCN:Sparse Graph Convolution Network for Pedestrian Trajectory Prediction 用于行人轨迹预测的稀疏图卷积网络
- Ubuntu显示连上网络却上不了网
- prometheus+grafana对数据库mysql监控
- SpringBoot的宠物医院管理系统(有文档)
热门文章
- 游戏策划笔记:系统数值分析
- 大幅修改!《涉密信息系统集成资质管理办法》 现行有效管理办法与征求意见稿变化汇总(附对照表)...
- AR8161网卡驱动安装
- Math Problem(等差数列求和)
- visual pushing grasping 模型部分 Q值怎么来的
- python可以这样学豆瓣_豆瓣程序员如何利用Python开发出这么成功的社区?
- 「永恒之塔私服」- 区块链基础设施之跨链通信协议层-Aionsf详解
- 二、YUV420图像的水平拼接
- 深信服防火墙AF8.0配置
- 推荐几本经典的计算机视觉和OpenCV书籍