【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版

一、背景描述

  股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因素和公司自身因素三个方面的情况。自股票市场出现以来,研究人员采用各种方法研究股票价格的波动。随着数理统计方法和机器学习的广泛应用,越来越多的人将机器学习等预测方法应用于股票预测中,如神经网络预测、决策树预测、支持向量机预测、逻辑回归预测等。
  XGBoost是由TianqiChen在2016年提出来,并证明了其模型的计算复杂度低、运行速度快、准确度高等特点。XGBoost是GBDT的高效实现。在分析时间序列数据时,GBDT虽然能有效提高股票预测结果,但由于检测速率相对较慢,为寻求快速且精确度较高的预测方法,采用XGBoost模型进行股票预测,在提高预测精度同时也提高预测速率。可以利用XGBoost网络模型对股票历史数据的收盘价进行分析预测,将真实值和预测值进行对比,最后通过评估算子来评判XGBoost模型对股价预测的效果。
  数据集通过爬虫获取从2005年开始到2020年的股票(代码为 510050.SH)历史数据,下表展示了股票在多个交易日内的市场表现,主要字段包括:

字段 含义
ts_code 股票代码
trade_date 交易日期
pre_close 前一个交易日的收盘价
open 开盘价
high 当日最高价
low 当日最低价
close 当日收盘价
change 收盘价变化值(与前一日相比的差值)
pct_chg 收盘价变化百分比
vol 成交量
amount 成交金额
label 标记某日涨跌情况

  这些字段全面记录了股票每天的价格波动和交易情况,用于后续分析和预测股票趋势。

二、Python代码和Sentosa_DSML社区版算法实现对比

(一) 数据读入

1、python代码实现
  导入需要的库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import rcParams
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
import xgboost as xgb

  数据读入

dataset = pd.read_csv('20_year_FD.csv')
print(dataset.head())

2、Sentosa_DSML社区版实现、

  首先,利用文本算子从本地文件读入股票数据集。
在这里插入图片描述

(二) 特征工程

1、python代码实现

def calculate_moving_averages(dataset, windows):
    for window in windows:
        column_name = f'MA{
     window}'
        dataset[column_name] = dataset['close'].rolling(window=window).mean()
    dataset[['close'] + [f'MA{
     window}' for window in windows]] = dataset[['close'] + [f'MA{
     window}' for window in windows]].round(3)
    return dataset

windows = [5, 7, 30]
dataset = calculate_moving_averages(dataset, windows)

print(dataset[['close', 'MA5', 'MA7', 'MA30']].head())

plt.figure(figsize=(14, 7))
plt.plot(dataset['close'], label='Close Price', color='blue')
plt.plot(dataset['MA5'], label='5-Day Moving Average', color='red', linestyle='--')
plt.plot(dataset['MA7'], label='7-Day Moving Average', color='green', linestyle='--')
plt.plot(dataset['MA30'], label='30-Day Moving Average', color='orange', linestyle='--')
plt.title('Close Price and Moving Averages')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.show()

在这里插入图片描述

得到实际股价与平均股价的差值的绝对值,观察偏离水平。

def calculate_deviation(dataset, ma_column):
    deviation_column = f'deviation_{
     ma_column}'
    dataset[deviation_column] = abs(dataset['close'] - dataset[ma_column])
    return dataset

dataset = calculate_deviation(dataset, 'MA5')
dataset = calculate_deviation(dataset, 'MA7')
dataset = calculate_deviation(dataset, 'MA30')

plt.figure(figsize=(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值