从零学习量化交易55LSTM神经网络股票趋势预测2效果评价

(1)打开Spyder软件,在目录D:\zwPython\zwrk\1_Quant_TensorFlow,新建文件

# -*- coding: utf-8 -*-
"""
Created on Tue Feb 18 16:42:01 2025
长短期记忆神经网络股票趋势预测2效果评价
@author: Administrator
"""

import sys, os
sys.path.append("topqt/")

import numpy as np
import pandas as pd
import tushare as ts
import plotly as py
import plotly.figure_factory as pyff

import math
import arrow
import ffn
import pypinyin
import pandas_datareader as pdr
import matplotlib.pyplot as plt

import zsys2025  # 20250213
import ztools2025 as zt
import ztools_str as zstr
import ztools_data2025 as zdat
import ztools_draw2025 as zdr
import ztools_tq2025 as ztq  # 20250213
import zai_keras2025 as zks

import tensorflow as tf
from tensorflow.keras.models import Sequential, load_model
from tensorflow.keras.layers import Dense, Input, Dropout
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.utils import plot_model
from tensorflow.keras.callbacks import TensorBoard

import tensorlayer as tl


#
#------------------------------------

#1
print('\n#1,set.sys')
pd.set_option('display.width', 450)    
pd.set_option('display.float_format', zt.xfloat3)    

#2
print('\n#2,读取数据')
fss='data/df_lstm020typ.csv'
#fss='tmp1/lstm0202_53.csv'
df=pd.read_csv(fss)
zt.prx('df',df.tail())
#

#3 
print('\n#3 整理数据')
df2=df[df.y_pred>0]
zt.prx('df2',df2.tail())
print('\ndf.num,',len(df.index))
print('\ndf2.num,',len(df2.index))

#4 
print('\n#4 acc准确度分析')
print('\nky0=10')
dacc,dfx,a10=ztq.ai_acc_xed2ext(df.y,df.y_pred,ky0=10,fgDebug=True)

print('\nky0=5')
dacc,dfx,a10=ztq.ai_acc_xed2ext(df.y,df.y_pred,ky0=5,fgDebug=True)

print('\nky0=2')
dacc,dfx,a10=ztq.ai_acc_xed2ext(df.y,df.y_pred,ky0=1,fgDebug=True)

#5
print('\n#5 acc准确度分类分析')
df=df2
x1,x2=df['y'].value_counts(),df['y_pred'].value_counts()
zt.prx('x1',x1);zt.prx('x2',x2)
#
for xk in range(1,4):
    print('\nxk#,',xk)
    dfk=df[df.y_pred==xk]
    dacc,dfx,a10=ztq.ai_acc_xed2ext(dfk.y,dfk.y_pred,ky0=5,fgDebug=True)

(2)程序输出结果

runfile('D:/zwPython/zwrk/1_Quant_TensorFlow/55-LSYMTrendsPredictionAnaEvaluation83-3.py.py.py', wdir='D:/zwPython/zwrk/1_Quant_TensorFlow')
Reloaded modules: zsys2025, ztools2025, zsys, ztools_str, ztools, ztools_web, ztools_data, ztools_tq, zpd_talib, ztools_data2025, zpd_talib2025, ztools_draw2025, ztools_tq2025, zai_keras2025, zai_tools2025

#1,set.sys

#2,读取数据

 df
      open  high   low  close  ...  price_next  price_change  ktype  y_pred
3065 3.280 3.290 3.270  3.290  ...       3.310       100.915      3       3
3066 3.310 3.310 3.270  3.290  ...       3.310       100.608      3       3
3067 3.320 3.320 3.300  3.310  ...       3.310       100.000      2       3
3068 3.310 3.320 3.300  3.320  ...       3.300        99.698      2       3
3069 3.290 3.320 3.280  3.320  ...       3.290        99.697      2       3

[5 rows x 28 columns]

#3 整理数据

 df2
      open  high   low  close  ...  price_next  price_change  ktype  y_pred
3065 3.280 3.290 3.270  3.290  ...       3.310       100.915      3       3
3066 3.310 3.310 3.270  3.290  ...       3.310       100.608      3       3
3067 3.320 3.320 3.300  3.310  ...       3.310       100.000      2       3
3068 3.310 3.320 3.300  3.320  ...       3.300        99.698      2       3
3069 3.290 3.320 3.280  3.320  ...       3.290        99.697      2       3

[5 rows x 28 columns]

df.num, 3070

df2.num, 3070

#4 acc准确度分析

ky0=10
ky0=10; n_df9,3070,n_dfk,2026
acc: 65.99%;  MSE:0.63, MAE:0.44,  RMSE:0.80, r2score:-0.40, @ky0:10.00

ky0=5
ky0=5; n_df9,3070,n_dfk,2026
acc: 65.99%;  MSE:0.63, MAE:0.44,  RMSE:0.80, r2score:-0.40, @ky0:5.00

ky0=2
ky0=1; n_df9,3070,n_dfk,2026
acc: 65.99%;  MSE:0.63, MAE:0.44,  RMSE:0.80, r2score:-0.40, @ky0:1.00

#5 acc准确度分类分析

 x1
3.000    2006
2.000     747
1.000     317
Name: y, dtype: int64

 x2
3    3034
1      28
2       8
Name: y_pred, dtype: int64

xk#, 1
ky0=5; n_df9,28,n_dfk,20
acc: 71.43%;  MSE:0.71, MAE:0.43,  RMSE:0.85, r2score:-0.35, @ky0:5.00

xk#, 2
ky0=5; n_df9,8,n_dfk,6
acc: 75.00%;  MSE:0.25, MAE:0.25,  RMSE:0.50, r2score:-0.33, @ky0:5.00

xk#, 3
ky0=5; n_df9,3034,n_dfk,2000
acc: 65.92%;  MSE:0.63, MAE:0.44,  RMSE:0.80, r2score:-0.44, @ky0:5.00

(3)程序代码注释

# -*- coding: utf-8 -*-
"""
Created on Tue Feb 18 16:42:01 2025
长短期记忆神经网络股票趋势预测2效果评价
@author: Administrator
"""

# 导入系统模块和操作系统模块
import sys, os
# 将 'topqt/' 目录添加到系统的模块搜索路径中,以便后续可以导入该目录下的自定义模块
sys.path.append("topqt/")

# 导入 numpy 库,用于进行数值计算
import numpy as np
# 导入 pandas 库,用于数据处理和分析
import pandas as pd
# 导入 tushare 库,用于获取金融数据
import tushare as ts
# 导入 plotly 库,用于创建交互式可视化图表
import plotly as py
# 导入 plotly 的 figure_factory 模块,用于创建特定类型的图表
import plotly.figure_factory as pyff

# 导入数学模块,提供基本的数学函数
import math
# 导入 arrow 库,用于处理日期和时间
import arrow
# 导入 ffn 库,用于金融数据的分析和可视化
import ffn
# 导入 pypinyin 库,用于汉字转拼音
import pypinyin
# 导入 pandas_datareader 库,用于从各种数据源读取数据
import pandas_datareader as pdr
# 导入 matplotlib.pyplot 库,用于创建静态可视化图表
import matplotlib.pyplot as plt

# 导入自定义模块 zsys2025,可能包含一些系统相关的设置和函数
import zsys2025  # 20250213
# 导入自定义模块 ztools2025,可能包含一些通用的工具函数
import ztools2025 as zt
# 导入自定义模块 ztools_str,可能包含一些字符串处理的工具函数
import ztools_str as zstr
# 导入自定义模块 ztools_data2025,可能包含一些数据处理的工具函数
import ztools_data2025 as zdat
# 导入自定义模块 ztools_draw2025,可能包含一些绘图的工具函数
import ztools_draw2025 as zdr
# 导入自定义模块 ztools_tq2025,可能包含一些与金融数据相关的工具函数
import ztools_tq2025 as ztq  # 20250213
# 导入自定义模块 zai_keras2025,可能包含一些与 Keras 相关的工具函数
import zai_keras2025 as zks

# 导入 TensorFlow 库,用于深度学习任务
import tensorflow as tf
# 从 TensorFlow 的 Keras 模块中导入 Sequential 模型,用于构建顺序模型
from tensorflow.keras.models import Sequential, load_model
# 从 TensorFlow 的 Keras 模块中导入 Dense、Input 和 Dropout 层
from tensorflow.keras.layers import Dense, Input, Dropout
# 从 TensorFlow 的 Keras 模块中导入 RMSprop 优化器
from tensorflow.keras.optimizers import RMSprop
# 从 TensorFlow 的 Keras 模块中导入 plot_model 函数,用于绘制模型架构图
from tensorflow.keras.utils import plot_model
# 从 TensorFlow 的 Keras 模块中导入 TensorBoard 回调函数,用于可视化训练过程
from tensorflow.keras.callbacks import TensorBoard

# 导入 tensorlayer 库,一个基于 TensorFlow 的深度学习库
import tensorlayer as tl


#
#------------------------------------

#1
# 打印提示信息,表示开始进行系统设置
print('\n#1,set.sys')
# 设置 pandas 显示数据的宽度为 450 个字符,以便更清晰地显示数据
pd.set_option('display.width', 450)    
# 设置 pandas 显示浮点数的格式,使用 zt 模块中的 xfloat3 函数进行格式化
pd.set_option('display.float_format', zt.xfloat3)    

#2
# 打印提示信息,表示开始读取数据
print('\n#2,读取数据')
# 定义要读取的 CSV 文件的路径
fss='data/df_lstm020typ.csv'
# 注释掉的另一个文件路径,可根据需要切换
#fss='tmp1/lstm0202_53.csv'
# 使用 pandas 的 read_csv 函数读取 CSV 文件,并将结果存储在 DataFrame 对象 df 中
df=pd.read_csv(fss)
# 调用 zt 模块的 prx 函数,打印 DataFrame 对象 df 的最后几行数据
zt.prx('df',df.tail())
#

#3 
# 打印提示信息,表示开始整理数据
print('\n#3 整理数据')
# 筛选出 df 中 y_pred 列大于 0 的行,并将结果存储在 DataFrame 对象 df2 中
df2=df[df.y_pred>0]
# 调用 zt 模块的 prx 函数,打印 DataFrame 对象 df2 的最后几行数据
zt.prx('df2',df2.tail())
# 打印 df 的行数
print('\ndf.num,',len(df.index))
# 打印 df2 的行数
print('\ndf2.num,',len(df2.index))

#4 
# 打印提示信息,表示开始进行准确度分析
print('\n#4 acc准确度分析')
# 打印提示信息,表示当前 ky0 的值为 10
print('\nky0=10')
# 调用 ztq 模块的 ai_acc_xed2ext 函数,计算准确度相关指标,传入 df 的 y 列、y_pred 列,ky0 参数为 10,开启调试模式
dacc,dfx,a10=ztq.ai_acc_xed2ext(df.y,df.y_pred,ky0=10,fgDebug=True)

# 打印提示信息,表示当前 ky0 的值为 5
print('\nky0=5')
# 调用 ztq 模块的 ai_acc_xed2ext 函数,计算准确度相关指标,传入 df 的 y 列、y_pred 列,ky0 参数为 5,开启调试模式
dacc,dfx,a10=ztq.ai_acc_xed2ext(df.y,df.y_pred,ky0=5,fgDebug=True)

# 打印提示信息,表示当前 ky0 的值为 2
print('\nky0=2')
# 调用 ztq 模块的 ai_acc_xed2ext 函数,计算准确度相关指标,传入 df 的 y 列、y_pred 列,ky0 参数为 1,开启调试模式
dacc,dfx,a10=ztq.ai_acc_xed2ext(df.y,df.y_pred,ky0=1,fgDebug=True)

#5
# 打印提示信息,表示开始进行准确度分类分析
print('\n#5 acc准确度分类分析')
# 将 df2 赋值给 df,后续分析基于 df2 的数据
df=df2
# 分别统计 df 中 y 列和 y_pred 列的不同值的出现次数
x1,x2=df['y'].value_counts(),df['y_pred'].value_counts()
# 调用 zt 模块的 prx 函数,打印 x1 的信息
zt.prx('x1',x1)
# 调用 zt 模块的 prx 函数,打印 x2 的信息
zt.prx('x2',x2)
#
# 遍历 1 到 3 的整数
for xk in range(1,4):
    # 打印当前 xk 的值
    print('\nxk#,',xk)
    # 筛选出 df 中 y_pred 列等于 xk 的行,并将结果存储在 DataFrame 对象 dfk 中
    dfk=df[df.y_pred==xk]
    # 调用 ztq 模块的 ai_acc_xed2ext 函数,计算准确度相关指标,传入 dfk 的 y 列、y_pred 列,ky0 参数为 5,开启调试模式
    dacc,dfx,a10=ztq.ai_acc_xed2ext(dfk.y,dfk.y_pred,ky0=5,fgDebug=True)

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/907085
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2分钟前
下一篇 1分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注