【纯属娱乐】随机森林预测双色球

news2024/12/23 14:15:11

目录

  • 一、数据标准化
  • 二、预测代码
  • 三、后续


一、数据标准化

首先,我们需要对原始数据进行处理,将其转换为可用于机器学习的格式。我们可以将开奖号码中的红球和蓝球分开,将其转换为独热编码,然后将其与期数一起作为特征输入到机器学习模型中。
这里的数据集是我找到的2017年至今的数据集

import re
import csv

# 定义正则表达式
pattern = re.compile(
    r'(\d{7})双色球开机号码:红球:(\d{2}),(\d{2}),(\d{2}),(\d{2}),(\d{2}),(\d{2}) 蓝球:(\d{2}) 开奖号:(\d{2}) (\d{2}) (\d{2}) (\d{2}) (\d{2}) (\d{2}) \+ (\d{2})')

# 读取 test.txt 文件
with open('test.txt', 'r',encoding="utf-8") as f:
    lines = f.readlines()

# 初始化数据列表
data = [['期数', '红球1', '红球2', '红球3', '红球4', '红球5', '红球6', '蓝球', '开奖红球1',
         '开奖红球2', '开奖红球3', '开奖红球4', '开奖红球5', '开奖红球6', '开奖蓝球']]

# 解析每一行数据
for line in lines:
    match = pattern.match(line)
    if match:
        # 提取匹配结果
        qishu = match.group(1)
        shijihongqiu = [match.group(i) for i in range(2, 8)]
        shijilanqiu = match.group(8)
        kaijianghongqiu = [match.group(i) for i in range(9, 15)]
        kaijianglanqiu = match.group(15)

        # 将提取到的数据添加到 data 列表中
        data.append([qishu] + shijihongqiu + [shijilanqiu] + kaijianghongqiu + [kaijianglanqiu])

# 将数据写入 csv 文件
with open('lottery.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

二、预测代码

接下来,我们需要选择一个机器学习模型进行预测。由于该数据集中没有常规的y参数,因此我们可以采用无监督学习的方法,对球号之间的关系进行建模,然后根据建好的模型进行预测。

常见的无监督学习算法包括聚类和降维算法。聚类算法可以将数据集中的数据分为不同的组别,每个组别中的数据具有相似的特征。降维算法可以将高维数据降低到低维空间,以便更好地进行可视化和处理。

在这里,我们可以采用聚类算法,例如k-means算法,来将球号进行聚类。具体步骤如下:

读取数据集,将红球1到红球6的6个特征作为X。
对X进行标准化处理,使得每个特征的均值为0,标准差为1。
使用k-means算法对X进行聚类,将样本划分为k个不同的组别。
对于2023048期的数据,提取红球1到红球6的6个特征作为X,并进行标准化处理。
将2023048期的数据输入到k-means模型中,预测它所属的组别。
根据模型预测出的组别,从训练集中找到同一组别中的数据,并计算这些数据中蓝球出现的频率,将频率最高的蓝球作为预测结果。
但是这里并不使用聚类算法,因为我发现写到最后开机号码是提前给出来的,所以我们用开机号码和开奖号码进行分析。

使用随机森林算法进行预测,下面是Python代码实现:

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestRegressor

# 读取数据
data = pd.read_csv('lottery.csv',encoding="gbk")

# 提取特征和标签
X = data.drop(['期数', '开奖红球1', '开奖红球2', '开奖红球3', '开奖红球4', '开奖红球5', '开奖红球6', '开奖蓝球'], axis=1)
y = data[['开奖红球1', '开奖红球2', '开奖红球3', '开奖红球4', '开奖红球5', '开奖红球6', '开奖蓝球']]

# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 在测试集上评估模型
from sklearn.metrics import mean_squared_error
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print('Mean squared error:', mse)

# 使用模型进行预测
predict_data = pd.DataFrame({
    '红球1': [2],
    '红球2': [10],
    '红球3': [13],
    '红球4': [17],
    '红球5': [22],
    '红球6': [26],
    '蓝球': [1]
})
predict_result = model.predict(predict_data)
rounded_result = np.round(predict_result)

print('预测结果:', rounded_result)

结果如下:
在这里插入图片描述

(注:本代码纯属娱乐,投资有风险)

三、后续

中了五块钱
在这里插入图片描述

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

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

相关文章

ETL工具 - Kettle 查询、连接、统计、脚本算子介绍

一、 Kettle 上篇文章对 Kettle 流程、应用算子进行了介绍,本篇对查询、连接、统计、脚本算子进行讲解,下面是上篇文章的地址: ETL工具 - Kettle 流程、应用算子介绍 二、查询算子 数据输入使用 MySQL 表输入,表结构如下&#x…

给httprunnermanager接口自动化测试平台换点颜色瞧瞧

文章目录 一、背景1.1、修改注册表单的提示颜色1.2、修改后台代码:注册错误提示,最后提交注册,密码校验;1.3、修改了注册,那登录呢,也不能放过二、总结 一、背景 虽然咱给HttpRunnerManger引入进来&#xf…

【云台】开源版本SimpleBGC的电机驱动与控制方式

前言 最近想学习一下云台,发现资料确实还不太好找,比较有参考价值的是俄版的开源版本的云台代码,后面就不开源了,开源版本的是比较原始的算法,差不多是玩具级别的,不过还是决定学习一下,了解一…

PyCaret:低代码自动化的机器学习工具

PyCaret简介 随着ChatGPT和AI画图的大火,机器学习作为实现人工智能的底层技术被大众越来越多的认知,基于机器学习的产品也越来越多。传统的机器学习实现方法需要较强的编程能力和数据科学基础,这使得想零基础尝试机器学习变得非常困难。 机器…

Ucore lab5

实验目的 了解第一个用户进程创建过程了解系统调用框架的实现机制了解ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理 实验内容 练习0:已有实验代码改进 ​本实验中完成了用户进程的创建,能够对用户进程进行基本管理,并为…

C语言入门篇——自定义数据篇

目录 1、结构体 1.2、匿名结构体 1.3、结构体的自引用 1.4、结构体的声明和初始化 1.5、结构体的内存对齐 1.6、修改默认对齐数 1.7、结构体传参 2、枚举 3、共用体(联合体) 1、结构体 设计程序时,最重要的步骤之一是选择表示数据的…

【微机原理】8088/8086微处理器

目录 一、8088/8086的功能结构 1.总线接口部件(BIU) 2.执行部件(EU) 二、8088/8086的寄存器结构(14个) 溢出标志的概念 溢出和进位的区别 8086CPU是Intel系列的16位微处理器,他有16根数据…

框架学习之KOCA框架简介

KOCA框架简介 什么是KOCA术语定义发展历史 KOCA的总体架构产品优势开放性敏捷性(一体化解决方案)融合性安全性接入网关- KOCA Gateway KOCA DevOps流水线 KOCA技术栈 金证开发者社区:http://koca.szkingdom.com/ 什么是KOCA KOCA是金证基于…

LC-1376. 通知所有员工所需的时间(DFS:自上而下、自下而上)

1376. 通知所有员工所需的时间 难度中等125 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从 0 到 n - 1。公司的总负责人通过 headID 进行标识。 在 manager 数组中,每个员工都有一个直属负责人,其中 manager[i] 是第…

JavaScript常用数组方法-汇总

快速检索 方法解析 1:concat(); 功能:合并数组,可以合并一个或多个数组,会返回合并数组之后的数据,不会改变原来的数组; var str1 [12,2,"hello"];var str2 ["world"]; console.lo…

简单毛概刷题网页制作 2.0(拖欠近一年版)

原因是大概一年之前学校的毛概期末刷题网站突然崩了,但是一直没有修复。当时眼看着复习时间逐渐被压缩,自己啥也做不了,遂自学前端完成毛概刷题网页一枚。 最早的毛概刷题网站仅仅是 1.0 版本(传送门),功能…

Excel技能之对齐,你可能都没想到

Excel表格,既然要做得漂漂亮亮,一定离不开对齐。拍照需要美颜,表格需要对齐。 内容全部挤到一边去。 有些靠左,有些靠右。 加上空格,感觉对齐。如果数据特别多,又逃不过加班的命运。 实在是混乱不堪。审美…

Linux常用命令——iostat命令

在线Linux命令查询工具 iostat 监视系统输入输出设备和CPU的使用情况 补充说明 iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就…

Linux安装MongoDB数据库,并内网穿透远程连接

文章目录 前言1. 配置Mongodb源2. 安装MongoDB3. 局域网连接测试4. 安装cpolar内网穿透5. 配置公网访问地址6. 公网远程连接7. 固定连接公网地址8. 使用固定地址连接 转载自Cpolar Lisa文章:Linux服务器安装部署MongoDB数据库 - 无公网IP远程连接「内网穿透」 前言 …

Qt中QDebug的使用

QDebug类为调试信息(debugging information)提供输出流。它的声明在<QDebug>中&#xff0c;实现在Core模块中。将调试或跟踪信息(debugging or tracing information)写出到device, file, string or console时都会使用QDebug。 此类的成员函数参考&#xff1a;https://doc…

C语言—指针的进阶

指针的进阶 字符指针指针数组数组指针数组指针的定义区分&数组名以及数组名数组指针的使用 数组参数、指针参数一维数组传参二维数组传参一级指针传参二级指针传参 函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组相关笔试题和面试题指针笔试题 指针的相关概…

C++ Boost.Reflection库(现在是Boost.PFR)的下载、安装、使用详细教程

这里写目录标题 一、Boost.Reflection简介二、Boost.Reflection&#xff08;现在是Boost.PFR&#xff09;库的下载和安装2.1、下载编译Boost2.2、使用Boost.Reflection&#xff08;现在是Boost.PFR&#xff09; 小结 一、Boost.Reflection简介 ​ Boost.Reflection&#xff0…

【C++】-关于类和对象的默认成员函数(中)-构造函数和析构函数

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

Cadence(2):向导制作PCB封装

前提&#xff1a;软件版本 焊盘设计 &#xff1a;Pad Designer16.6PCB设计 &#xff1a;PCB Editor16.6 文章目录 LQFP64向导封装制作封装信息SMD焊盘制作添加焊盘库到PCB Editor新建工程LQFP64向导制作流程后续处理修改栅格大小。贴加1脚标识修改丝印线 总结 LQFP64向导封装制…

获取代码量(针对Pycharm IDEA)

Statistic 这是个一劳永逸&#xff0c;获取代码量的方法。 Beginning!&#xff08;安装到使用可能都不需要5分钟&#xff09; 附上Statistic的官网下载URL&#xff1a;Statistic - IntelliJ IDEs Plugin | Marketplacehttps://plugins.jetbrains.com/plugin/4509-statistic/v…