python线性回归预测股票走势

提前说明:虽然最后预测股价和真实价之间有差距,但涨跌的趋势大致相同。而且在预测时没有考虑到涨跌停的因素,所以预测结果的涨跌幅度比真实数据要大。

本人上传只作学习练习笔记作用,并不打算用在实操的

直接上代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
import math
#线性回归
from sklearn.linear_model import LinearRegression
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
#使用如下方式下载某个公司的股票交易历史数据
#比如 000001 平安银行
#使用pip install tushare 安装tushare python包
import tushare as ts

data =ts.get_hist_data('600519')
data.to_csv('./600519.csv')
#导入数据,输出前几行看一下情况
data=pd.read_csv('./600519.csv')

df = data[['open','high','low','volume','close']]
# 划分特征值和目标值
featureDatas = df[['open','high','low','volume']]
feature = featureDatas.values
target = np.array(df['close'])

# 划分训练集和测试集
feature_train, feature_test, target_train, target_test = train_test_split(feature,target,test_size = 0.05)

lrtoot = LinearRegression() # 创建线性回归对象
lrtoot.fit(feature_train,target_train)  # 训练

# 用测试集预测结果
predictByTest = lrtoot.predict(feature_test)

predictDays = int(math.ceil(0.05 * len(df)))  # 预测的天数

# 在前95%的交易日中,设置预测结果和收盘价一致
index = 0
while index < len(data) - predictDays:
    df.loc[index,'predictValue'] = data.loc[index,'close']    # 把训练集部分的预测股价设置成收盘价
    df.loc[index,'date'] = data.loc[index,'date']             # 训练集部分的日期
    index = index + 1
    
# 在后5%的交易日中,用测试集推算预测股价
predictedCnt = 0
while predictedCnt < predictDays:
    df.loc[index,'predictValue'] = predictByTest[predictedCnt]   # 把df中表示测试结果的predictedVal列设置成相应的预测结果
    df.loc[index,'date'] = data.loc[index,'date']     # 逐行设置了每条记录中的日期
    
    predictedCnt =predictedCnt + 1
    index =index + 1

将其可视化:

plt.figure(figsize=(30,10))

df['predictValue'].plot(color='red',label='predict data',fontsize=30)
df['close'].plot(color='blue',label='real data',fontsize=30)


plt.legend(loc = 'best',fontsize=40) # 绘制图例

# 设置x坐标的标签
major_index = df.index[df.index%30==0]
major_xtics = df['date'][df.index%30==0]
plt.xticks(major_index,major_xtics)
plt.setp(plt.gca().get_xticklabels(), rotation=30)

# 带网格线,且设置了网格样式
plt.grid(linestyle='-.')

plt.show()

运行结果:

参考于原作者hsm_computer:https://www.cnblogs.com/JavaArchitect/p/11717998.html

若想详细了解更多关于python股票案例,可关注一下这位博主↑

  • 8
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值