Python基于机器学习实现的股票价格预测、股票预测源码+数据集,机器学习大作业

news2024/11/26 8:32:21

Feature与预测目标的选取

选择的feature:

  • 开盘价
  • 最高成交价
  • 最低成交价
  • 成交量

选择的预测目标:

  • 收盘价

因为股票价格的影响因素太多,通过k线数据预测未来的价格变化基本不可行,只有当天之内的数据还有一定的关联,故feature与target都选择的是当天的数据。

加载数据

为了加快数据的处理速度,提前将mariadb数据库中的数据查询出来,保存成feather格式的数据,以提高加载数据的速度。关键代码如下:

def main_code_to_feather():
    # Get Cursor, Fieldinfo And Total Rows
    cur = conn.cursor()
    labels = [fld[0] for fld in get_fieldinfo(cur)] # 获取所有的字段信息
    codes = get_all_stock_code(cur) # 获取所有的股票代码
    code_inedx = 0
    for code in codes:
        print("Processing:", code_inedx, "/", len(codes))
        code_inedx += 1
        data = fetch_by_code(cur, code, None, None).fetchall() # 获取对应股票的数据
        df = pd.DataFrame(data=data, columns=labels) # 将数据放入pd的表
        df.drop(columns=["id"], inplace=True) # 数据库中的id字段没有意义,drop掉
        os.makedirs("data_by_code", exist_ok=True)
        save_path = os.path.join("data_by_code", code+".feather") # 将股票数据保存成feather格式的数据
        df.to_feather(save_path)

if __name__ == "__main__":
    main_code_to_feather()

经过处理,不同股票的数据保存在了不同的文件中,列名还保持着数据库中的字段名。我选择了股票代码为sh600010的这只股票作为数据分析的数据来源。

从文件中加载数据的代码如下:

df = pd.read_feather("data_by_code/sh600010.feather")

处理数据

从股票数据中取出开盘价、最高成交价、最低成交价和成交量作为feature,取出收盘价作为预测的目标,最后取出日期作为绘图的横座标数据。关键代码如下:

x_tmp = []
y_tmp = []
date_tmp = []
for row in range(df.shape[0]):
    today = df.loc[row]
    # 当天信息
    x_tmp.append(tuple([
        today["popen"] / 1e1,
        today["phigh"] / 1e1,
        today["plow"] / 1e1,
        today["vol"] / 1e4, # 防止loss溢出
    ]))
    # 收盘价格
    y_tmp.append(today["pclose"] / 1e1) # y/10防止loss溢出
    # 日期
    date_tmp.append(today["deal_date"])
x = tf.constant(x_tmp, dtype=tf.float32)
y = tf.constant(y_tmp, dtype=tf.float32)

这里将关键指标都除以了一个固定的数,可以防止loss溢出导致模型无法优化。

划分训练集与测试集,取最后5%的数据作为测试集。代码如下:

data_size = len(x_data)
test_size = int(data_size * 0.05)
x_train = x_data[:data_size - test_size]
y_train = y_data[:data_size - test_size]
x_test = x_data[data_size - test_size:]
y_test = y_data[data_size - test_size:]
date_test = date_data[data_size - test_size:]

选取模型并进行训练

我选取的是线性模型,使用线性模型进行训练,在训练时使用了tensorflow的keras库来简化代码的编写:

model = keras.Sequential(
    [
        layers.Dense(1, name="layer1"), # 输出size为1,即线性回归模型
    ]
)
model.compile(
    optimizer = optimizers.SGD(learning_rate=0.01),
    loss = losses.MeanSquaredError(),
)
history = model.fit(x_train, y_train, batch_size=256, epochs=128, validation_split=0.2)

使用模型进行预测

使用训练过的模型对测试数据集进行预测:

y_predict = model.predict(x_test)
y_pred = []
for i in range(len(y_test)):
    y_pred.append(y_predict[i][0])

绘制真实值与预测值的图像

使用matplotlib绘制图表,使用日期作为横座标,使用收盘价÷10作为纵座标。

plt.figure(figsize=(16, 8))
plt.plot(date_test, y_test, label="real")
plt.plot(date_test, y_pred, label="predict")

对预测结果的分析

根据预测结果绘制的函数图像如图所示:

根据图像可以看出,预测值和真实值差距较大。这是由于影响股票价格的因素很多,选取的几个参数不能准确预测。

但是同时也可以看出,预测出来的结果与真实值变化趋势相近,说明线性回归模型在一定程度上能够解释收盘价与选取的feature之间的关系。

完整代码下载地址:

Python基于机器学习实现的股票价格预测、股票预测源码+数据集,机器学习大作业

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle daily maintenancy-high active sessions

文章目录1.About check_mk metric:ORA_ORCL_Active_Session2.Solution2.1get the total number of active concurrent sessions2.2 the possible reason for this:2.2.1.High connection for normal behavior that happens occasionally2.2.2.resource competition1.About chec…

CentOS7---部署LNMP数据存储到redis

一、部署LNMP及redis 1、部署LNMP,需要将 tengine-2.2.0.tar.gz 拷贝到虚拟机的 /root 目录下 步骤一:安装nginx 源码安装相关软件包 # pcre-devel做正则匹配,zlib-devel做数据压缩 [roottemplate ~]# yum -y install gcc pcre-devel zlib-de…

迅为RK3588核心板平台新增工业级方案

迅为基于瑞芯微RK3588平台,提供商业级、工业级和国产化核心板,工业级板卡温度可达-40度到85度,国产化板卡从内存,存储等每一个元器件全部采用国产物料。不同板卡,满足各个行业需求。 iTOP-3588核心板参数 CPU &#x…

汉诺塔问题--C语言实现

魔王的介绍:😶‍🌫️一名双非本科大一小白。魔王的目标:🤯努力赶上周围卷王的脚步。魔王的主页:🔥🔥🔥大魔王.🔥🔥🔥 ❤️‍&#x1…

算法:什么是队列 用两个栈实现一个队列

题目 用两个栈实现一个队列。 队列、栈是一类,都是抽象模型 数组、链表是一类,都是具体实现 队列 逻辑结构,抽象模型,可以用任何语言来实现 先进先出add、delete、length 用数组来模拟 const queue [] // 入队 queue.push(…

Python实现哈里斯鹰优化算法(HHO)优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO),该算法有较强的全…

MySQL数据库的操作

MySQL数据库的操作 创建数据库 语法 create database [if not exists] db_name [create_specification,create_specification...]create_specification:[default] charactter set charest_name[default] collate collation_name 说明: []可选项 specification 特…

【智能座舱系】-智能座舱平台研究|各家主机厂都在使用的主流座舱软件平台

一、何为汽车智能化 以智能化和网联化的技术赋能车辆,实现车辆对复杂环境的有效感知和识别,实现对车辆与驾乘人员、对其他车辆、对其他基础设施的智能化交互。 二、智能的两大核心功能:智能化和网联化 智能化方面,汽车具备智能的人机交互,如语音、手势、图像及其他生物…

电脑开机无限重启,到了欢迎界面就黑屏重启

windows7系统,开机过程中,只要一过了四叶草,要么刚出来欢迎界面,要么还没出来就黑屏,然后重启,然后无限循环。。。 (经测试xp系统同样有效) 先尝试用方法1修复,若不行再用方法2。 方法1&…

【微服务中间件学习】redis基础及项目使用

背景 最近跟着大佬学习,发现之前都是一知半解,还是得系统学一下。 重温redis,有一下整理Redis是一种基于内存的高性能键值存储系统,它支持多种数据结构和持久化方式,并提供了许多高级功能,如发布/订阅、事…

Go项目布局建议

我们编写的 如果是Go 程序都是简单程序,一般由一个或几个 Go 源码文件组成,而且所有源码文件都在同一个目录中。但是生产环境中运行的实用程序可不会这么简单,通常它们都有着复杂的项目结构布局。弄清楚一个实用 Go 项目的项目布局标准是 Go …

21_I.MX6ULL_PWM背光实验

目录 LCD背光调节简介 相关寄存器 实验源码 LCD背光调节简介 正点原子的三个RGB LCD都有一个背光控制引脚,给这个背光控制引脚输入高电平就会点亮背光,输入低电平就会关闭背光。假如我们不断的打开和关闭背光,当速度足够快的时候就不会感觉到背光关闭这个过程了。这个正好可…

jmeter数据库连接6

1,准备资料1. 一个可用的数据库2.连接数据库需要的驱动 2,jmeter连接数据库3,发送插入语句请求4,发送查询语句请求5,发送删除语句请求6,对数据库进行压测本文永久更新地址: 1,准备资料 1. 一个可用的数据库 搭建一个…

笔试强训之【不要二和字符串转换为数字】

目录1.不要二1.1题目1.2解题思路1.3代码2.字符串转换为数字2.1题目2.2思路讲解2.3代码1.不要二 1.1题目 链接: link 描述 二货小易有一个W*H的网格盒子,网格的行编号为0-H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕…

加载美女图片之OpenCV 图像读取与显示

📖作者介绍:22级树莓人(计算机专业),热爱编程<目前在c++和openCv阶段>——目标Windows,MySQL,Qt,数据结构与算法,openCv&#xff0…

优思学院|精益生产与 IE 两者有何分别?

精益生产或者精益管理和工业工程(IE)在工具和方法方面有一些相似之处,也它们也有一些相同的工具,但在思维方式、性质、历史和最近的发展也有一些重要的差异,优思学院会就这几个方面详细为大家作出区分。 思维方式 IE是…

介绍一款功能强大的步进电机控制驱动芯片TMC5240

步进电机由于具有控制简单,良好的速度和位置控制被大量用在工业自动化、医疗设备、仪器仪表、实验室自动化、办公自动化、智能家居......等众多行业,实现让步进电机转起来相对容易很多,但是在应用中简单的转起来并无法满足实际应用的需求&…

运行时内存数据区之本地方法栈

Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量&…

域名、IP、DNS、Hosts、Nginx

先从最熟悉,也是最表层的域名和ip说起: 比如你和我,你叫张三,我叫李四,名字类似于域名。你在网吧玩,很多太多台电脑各自都有个座位号,座位号就类似于ip,我想去网吧找你去玩电脑&…

RK3568平台开发系列讲解(驱动基础篇)mmap系统调用详解

🚀返回专栏总目录 文章目录 一、什么是mmap二、mmap映射类型2.1、私有匿名映射2.2、私有文件映射2.3、共享文件映射2.4、共享匿名映射沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将详细介绍mmap系统调用。 一、什么是mmap mmap/munmap函数是用户空间中常用的…