Skip to content

zhaoyangpp/LottoProphet

Repository files navigation

LottoProphet

一个使用深度学习模型进行彩票号码预测的应用程序。本项目支持两种主要的彩票类型:双色球 (SSQ)大乐透 (DLT),并使用先进的机器学习技术(如条件随机场 CRF)进行序列建模。

English README | 中文说明

20241210更新内容 查看文档

20241210更新内容 查看文档

20250114更新内容 查看文档 主要修复内容:每次多个的结果都一样

20250322更新内容 查看文档 主要更新内容:UI优化、功能增强和性能优化

20250323更新内容 查看文档 代码重构,模型增加,修复已知问题

20250325更新内容 查看文档 期望值模型

20250413更新内容 查看文档 修复已知问题

多个小伙伴遇到安装 torchcrf 失败,解决方案:从 GitHub 克隆并手动安装

  1. 克隆仓库
    git clone https://github.com/kmkurn/pytorch-crf.git cd pytorch-crf python setup.py install

目录结构

LottoProphet/ ├── main.py # 主程序入口点,支持命令行参数启动不同功能 ├── lottery_predictor_app_new.py # 主程序新版本,实现了完整的GUI界面和功能 ├── ui_components.py # UI组件模块,包含tab页面创建和布局相关功能 ├── thread_utils.py # 模型训练和数据更新的线程工具,支持后台运行 ├── model_utils.py # 模型加载和预测工具,管理模型资源 ├── prediction_utils.py # 号码生成和预测工具,处理预测结果 ├── data_processing.py # 数据处理模块,统计分析和特征工程 ├── ml_models.py # 机器学习模型实现,包含多种预测模型和集成学习 ├── fetch_and_train.py # 数据获取和模型训练脚本,自动化训练流程 ├── train_models.py # 模型训练脚本,用于命令行单独训练模型 ├── theme_manager.py # UI主题管理器,支持深色和浅色主题切换 ├── model.py # 模型定义文件,包含神经网络结构 ├── scripts/ │ ├── data_analysis.py # 数据分析工具,提供数据可视化和统计分析功能 │ ├── advanced_statistics.py # 高级统计分析,包含复杂统计指标计算和图表生成 │ ├── dlt/ │ │ ├── train_dlt_model.py # 大乐透模型训练脚本,使用LSTM-CRF序列建模 │ │ ├── fetch_dlt_data.py # 大乐透数据获取脚本,爬取最新历史数据 │ │ ├── dlt_history.csv # 大乐透历史数据,包含开奖号码和日期信息 │ │ └── training_loss.png # 大乐透训练损失可视化,展示模型训练过程 │ └── ssq/ │ ├── train_ssq_model.py # 双色球模型训练脚本,使用LSTM-CRF序列建模 │ ├── fetch_ssq_data.py # 双色球数据获取脚本,爬取最新历史数据 │ └── ssq_history.csv # 双色球历史数据,包含开奖号码和日期信息 ├── model/ │ ├── README.md # 模型文档,解释模型架构和使用方法 │ ├── MODEL_UPDATE_SUMMARY.md # 模型更新摘要,记录模型改进历史 │ ├── generate_placeholder_models.py # 生成占位模型脚本,用于测试和初始化 │ ├── test_model_loading.py # 测试模型加载脚本,验证模型文件完整性 │ ├── dlt/ # 大乐透模型目录,用于存储训练好的模型 │ └── ssq/ # 双色球模型目录,用于存储训练好的模型 ├── update/ │ ├── README.md # 更新文档,综合介绍各版本更新内容 │ ├── 20250217Update.md # 2025年2月17日更新说明 │ ├── 20250219Update.md # 2025年2月19日更新说明 │ ├── 20250322Update.md # 2025年3月22日更新,新增UI和功能优化 │ ├── 20250323Update.md # 2025年3月23日更新,新增UI和功能优化 │ └── 20250325Update.md # 2025年3月25日更新,新增期望值模型 └── requirements.txt # 项目依赖列表,包含所需Python库 

只需要运行main.py(ssq_history.csv,ssq_model.pth,scaler_X.pkl等都会通过调用自动生成 )

软件截图

注意: 最新版本(2025年3月22日更新)已优化UI界面,使用QTabWidget分离预测和分析功能。如下 image image

彩票预测应用程序整体流程

彩票预测应用程序的主要步骤,包括数据获取、模型训练和用户界面交互。应用程序支持两种彩票类型:双色球(ssq)和大乐透(dlt)

1. 组件概述

数据获取脚本

  • 双色球数据获取 (fetch_ssq_data.py)

    • 爬取双色球历史数据。
    • 保存数据为 ssq_history.csv
  • 大乐透数据获取 (fetch_dlt_data.py)

    • 爬取大乐透历史数据。
    • 保存数据为 dlt_history.csv

模型训练脚本

  • 双色球模型训练 (train_ssq_model.py)

    • 检查并下载 ssq_history.csv(若不存在)。
    • 预处理数据并训练 LSTM-CRF 模型。
    • 保存训练好的模型和特征缩放器。
  • 大乐透模型训练 (train_dlt_model.py)

    • 检查并下载 dlt_history.csv(若不存在)。
    • 预处理数据并训练 LSTM-CRF 模型。
    • 保存训练好的模型和特征缩放器。

主应用程序

  • 主界面 (lottery_predictor_app_new.py/main.py)
    • 提供用户界面,选择彩票类型(双色球或大乐透)。
    • 输入特征值并选择生成的预测数量。
    • 按钮操作:
      • 训练模型:启动训练线程,调用相应的训练脚本。
      • 生成预测:加载模型,处理输入特征,生成并显示预测号码。
      • 数据分析:使用高级统计方法分析历史数据。
    • 日志显示框:实时展示训练和预测过程中的日志信息。
    • 支持深色/浅色主题切换。

2. 整体流程

训练模型流程

  1. 用户操作

    • 在主界面选择彩票类型(双色球或大乐透)。
    • 点击"训练模型"按钮。
  2. 启动训练线程

    • TrainModelThread 启动,调用对应的训练脚本 (train_ssq_model.pytrain_dlt_model.py)。
  3. 数据检查与获取

    • 训练脚本检查历史数据文件 (ssq_history.csvdlt_history.csv) 是否存在。
    • 若不存在,调用对应的数据获取脚本下载数据。
  4. 数据预处理与模型训练

    • 加载并预处理数据(特征缩放、划分训练集和验证集)。
    • 初始化并训练 LSTM-CRF 模型或其他机器学习模型。
    • 实施早停机制,保存最佳模型权重和缩放器。
    • 支持GPU加速训练(如果可用)。
  5. 日志更新与完成

    • 训练过程中的日志通过信号传递到主界面的日志框。
    • 训练完成后,恢复界面操作并提示用户。

生成预测流程

  1. 用户操作

    • 在主界面选择彩票类型(双色球或大乐透)。
    • 输入特征值(如和值、奇数个数等)或使用默认值。
    • 选择生成的预测数量和预测模型(LSTM-CRF或其他ML模型)。
    • 点击"生成预测"按钮。
  2. 特征处理与模型加载

    • 获取并缩放用户输入的特征值。
    • 添加随机噪声以增强多样性(基于正态分布的随机性)。
    • 加载对应的彩票模型和特征缩放器。
  3. 号码预测

    • 将处理后的特征输入模型,生成红球和蓝球的预测类别。
    • 通过温度采样和Top-K参数增强预测多样性。
    • 通过 CRF 解码获取具体的号码预测。
  4. 结果处理与展示

    • 确保预测号码在有效范围内且红球号码唯一。
    • 在主界面显示预测结果。
    • 日志框实时记录预测过程中的详细信息。
    • 支持保存和导出预测结果。

数据分析流程

  1. 用户操作

    • 切换到"数据分析"选项卡。
    • 选择分析类型和参数。
  2. 数据加载与处理

    • 加载历史数据并进行质量检查。
    • 使用缓存机制(memoization)优化频繁数据分析操作的响应速度。
  3. 统计分析与可视化

    • 频率分析:展示每个号码的历史出现频率。
    • 热冷号分析:识别热门和冷门号码。
    • 间隔统计:分析号码出现间隔规律。
    • 模式分析:发现重复模式和序列。
    • 趋势分析:分析长期趋势和变化。
    • 高级统计:进行复杂的统计验证和假设检验。
  4. 结果呈现

    • 生成高质量的统计图表。
    • 提供数据解释和建议。
    • 支持图表保存和导出。

3. 错误处理和日志记录

  • 数据获取脚本

    • 捕获网络请求异常和解析错误,记录详细日志。
    • 支持自动重试和恢复数据获取。
  • 训练脚本

    • 检查数据和脚本存在性,捕获训练过程中的异常。
    • 保存训练检查点,支持从断点处恢复训练。
  • 主应用程序

    • 训练和预测过程中捕获异常,通过日志框显示错误信息。
    • 提供详细的错误诊断信息以帮助用户解决问题。

4. 环境要求

  • Python 3.9 或更高版本
  • PyTorch (可选择GPU版本) - 现支持GPU加速训练和预测
  • torchcrf
  • PyQt5
  • pandas
  • numpy
  • scikit-learn
  • matplotlib (数据可视化)
  • seaborn (增强统计图表)
  • xgboost (高级机器学习模型)
  • lightgbm (可选)
  • catboost (可选)
  • joblib (模型序列化)

5. 安装步骤

  1. 克隆仓库

    git clone git@github.com:zhaoyangpp/LottoProphet.git cd LottoProphet
  2. 安装依赖:

    # 推荐使用虚拟环境 pip install -r requirements.txt 
  3. 运行主程序:

    python main.py app # 或直接从命令行运行特定功能 python main.py fetch ssq # 获取双色球数据 python main.py train dlt # 训练大乐透模型 python main.py predict ssq --model lightgbm # 使用LightGBM模型预测双色球

About

LottoProphet是一款集预测、分析与可视化于一体的专业彩票数据应用。本软件融合深度学习与高级统计学原理,为用户提供全方位的彩票数据解决方案。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages