(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
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!