基于Python机器学习的双色球数据分析与预测

ops/2025/1/21 16:45:00/

python统计分析2003-2024年所有的中奖记录,通过人工智能机器学习预测双色球,个人意见,仅供参考.

声明:双色球具有随机性,任何工具无法预测。本文章仅作为技术交流,提供学习参考。本文所涉及的代码均为python机器学习的代码。双色球为公益事业,请大家一起为公益加油!

一,收集数据。

首先,我们需要将双色球的历史数据收集到本地。可以通过官方网站、网络爬虫或API接口来获取相关数据。历史数据通常包括开奖日期、红球号码、蓝球号码及其他相关信息。确保将数据保存为CSV或Excel格式,以便后续分析和处理。

以下是采集数据的代码。

python">'''@date 2024年11月20日
@author liandyao
抖音号: liandyao
'''
import csv
import timeimport numpy as np
import requests
from bs4 import BeautifulSoup# 定义 URL
url = "https://kaijiang.78500.cn/ssq/"header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0','cookie': '__jsluid_s=5cbbf684106add1620b7f5ce24625702; Hm_lvt_04f41dcf6d388d39feb87abb77da8596=1732092072,1732159935; Hm_lpvt_04f41dcf6d388d39feb87abb77da8596=1732159935; HMACCOUNT=99BF57D36F600EB6','referer': 'https://kaijiang.78500.cn/ssq/'
}data = []  # 用于存储提取的数据
# 循环从 2004 年到 2024 年
for year in range(2003, 2025):  # 2025 是上限,因此将终止于 2024params = {"startqi": "",  # 空字符串"endqi": "",  # 空字符串"year": str(year),  # 当前年份"action": "years"}# 发送 POST 请求response = requests.post(url, data=params,headers=header)time.sleep(np.random.randint(1, 5))# 输出请求状态码和返回内容的前100个字符print(f"年份: {year}, 状态码: {response.status_code}, 返回内容: {response.text[:100]}")  # 只输出前100个字符# 检查请求是否成功# 检查请求是否成功if response.status_code == 200:# 解析 HTML 内容soup = BeautifulSoup(response.text, 'html.parser')# 查找 tbody 下的所有 trtbody = soup.find('tbody', class_='list-tr')if tbody:rows = tbody.find_all('tr')for row in rows:# 提取期号和开奖时间tds = row.find_all('td')if len(tds) >= 3:  # 确保有足够的 tdissue_number = tds[0].text.strip()  # 期号draw_time = tds[1].text.strip()  # 开奖时间# 提取开奖号码numbers_div = tds[2].find('div')  # 找到包含号码的 divred_numbers = [num.text.strip() for num in numbers_div.find_all('span', class_='red')]# 注意,这里的蓝球是一个列表,有时会开出快乐星期天的另一个篮球,所以我们只取第一个篮球blue_numbers = [num.text.strip() for num in numbers_div.find_all('span', class_='blue')]top1 = tds[5].text.strip()  # 一等奖top2 = tds[7].text.strip()  # 二等奖top3 = tds[9].text.strip()  # 三等奖# 整合数据data.append([issue_number, draw_time] + red_numbers + [blue_numbers[0]] +[top1,top2,top3])# 导出为 CSV 文件
with open('lottery_results_2003_2024.csv', 'w', newline='', encoding='utf-8') as csvfile:csv_writer = csv.writer(csvfile)# 写入标题行csv_writer.writerow(['期号', '开奖时间', '红球1', '红球2', '红球3', '红球4', '红球5', '红球6', '蓝球', '一等奖', '二等奖', '三等奖'])# 写入数据csv_writer.writerows(data)print("数据已成功导出为 lottery_results_2003_2024.csv")

采集是数据包括:

 

二,python导入数据

在完成数据收集后,我们可以使用Python的Pandas库导入数据。以下是一个简单的示例:

python">import pandas as pd  # 导入数据  
data = pd.read_csv('shuangseqiu_data.csv')  
print(data.head())  

可以打印前5行数据显示 ,确认数据是否加载成功。

三,数据预处理

数据预处理是机器学习中至关重要的一环。我们需要对数据进行清洗和转换,以便模型能够有效地进行训练和预测。主要步骤包括:

  • 处理缺失值
  • 转换数据类型
  • 归一化或标准化数值

以下是一个处理缺失值的示例:

python"># 检查缺失值  
print(data.isnull().sum())  # 填充缺失值  
data.fillna(method='ffill', inplace=True)

 转换数据类型

python"># 将开奖时间转换为日期格式
df['开奖时间'] = pd.to_datetime(df['开奖时间'])

归一化或标准化数值 

采集的数据比较标准,无需处理.

 

四,创建特征数据和建立模型。

在准备好数据后,我们需要创建特征数据集并选择合适的机器学习模型进行训练。特征可以包括红球和蓝球的历史出现频率、和值、跨度等。我们可以使用Scikit-learn库来创建和训练模型。

我们使用期数作为特征值,红球和蓝球作为预测目标值.

python"># 特征和标签  
X = df[['期号']]  
y_red = df[['红球1', '红球2', '红球3', '红球4', '红球5', '红球6']]  
y_blue = df[['蓝球']]  

 划分训练集和测试集,80%的训练集和20%的测试集

python"># 划分数据集  
X_train, X_test, y_red_train, y_red_test = train_test_split(X, y_red, test_size=0.2, random_state=42)  
X_train, X_test, y_blue_train, y_blue_test = train_test_split(X, y_blue, test_size=0.2, random_state=42)

 使用随机森林算法来训练模型。

python"># 训练红球模型  
red_model = RandomForestClassifier(n_estimators=100, random_state=42)  
red_model.fit(X_train, y_red_train)  # 训练蓝球模型  
blue_model = RandomForestClassifier(n_estimators=100, random_state=42)  
blue_model.fit(X_train, y_blue_train)

 

五,预测结果

开始预测,我们输入特征值:2025100期

python"># 预测2025005期的红蓝球  
future_issue = pd.DataFrame({'期号': [2025100]})  
predicted_red = red_model.predict(future_issue)  
predicted_blue = blue_model.predict(future_issue)  print(f"预测的红球结果: {predicted_red[0]}")  
print(f"预测的蓝球结果: {predicted_blue[0]}")

预测的红球结果: [ 4  6 13 21 22 25]
预测的蓝球结果: 6

完整代码:

python">'''@date 2024年01月20日
@author liandyao
抖音号: liandyao
'''
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier# 创建数据框df = pd.read_csv('shuangseqiu_data.csv',encoding='gbk')# 特征和标签
X = df[['期号']]
y_red = df[['红球1', '红球2', '红球3', '红球4', '红球5', '红球6']]
y_blue = df[['蓝球']]# 划分数据集
X_train, X_test, y_red_train, y_red_test = train_test_split(X, y_red, test_size=0.2, random_state=42)
X_train, X_test, y_blue_train, y_blue_test = train_test_split(X, y_blue, test_size=0.2, random_state=42)# 训练红球模型
red_model = RandomForestClassifier(n_estimators=100, random_state=42)
red_model.fit(X_train, y_red_train)# 训练蓝球模型
blue_model = RandomForestClassifier(n_estimators=100, random_state=42)
blue_model.fit(X_train, y_blue_train)# 预测2025005期的红蓝球
future_issue = pd.DataFrame({'期号': [2025008]})
predicted_red = red_model.predict(future_issue)
predicted_blue = blue_model.predict(future_issue)print(f"预测的红球结果: {predicted_red[0]}")
print(f"预测的蓝球结果: {predicted_blue[0]}")

总结 

  1. 数据量:提供的数据量较小,可能影响模型的准确性。通常需要更多的历史数据来训练有效的模型。
  2. 随机性:双色球的结果具有随机性,预测结果不应被视为实际的开奖结果。

通过以上步骤,我们简单地演示了如何使用Python进行双色球数据分析与预测。尽管机器学习可以帮助我们理解数据中的某些模式,但彩票的随机性质使得任何预测都不能保证成功。希望大家在进行这些技术探索时,始终保持理性和谨慎。双色球是公益事业,祝大家好运!


http://www.ppmy.cn/ops/151950.html

相关文章

C++学习第五天

创作过程中难免有不足,若您发现本文内容有误,恳请不吝赐教。 提示:以下是本篇文章正文内容,下面案例可供参考 一、构造函数 问题1 关于编译器生成的默认成员函数,很多童鞋会有疑惑:不实现构造函数的情况下…

HTML之拜年/跨年APP(改进版)

目录: 一:目录 二:效果 三:页面分析/开发逻辑 1.页面详细分析: 2.开发逻辑: 四:完整代码(不多废话) index.html部分 app.json部分 二:效果 三:页面…

《AI赋能光追:开启图形渲染新时代》

光线追踪技术是图形渲染领域的重大突破,能够通过模拟光的传播路径,精准渲染反射、折射、阴影和间接光照等效果,实现高度逼真的场景呈现。而人工智能的加入,更是为光线追踪技术带来了前所未有的变革,主要体现在以下几个…

LeetCode - #187 Swift 实现重复的DNA序列

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

在 MySQL 中使用 `REPLACE` 函数

在 MySQL 中,REPLACE函数是一个用于处理字符串的强大工具。它的主要功能是替换字符串中的某些子字符串。REPLACE函数在数据清理、格式化以及处理文本数据时非常有用。本文将详细介绍REPLACE函数的使用方法,包括函数的语法、示例以及实际应用场景。 1. 函…

如何让AI助力制作PPT,轻松实现PPT智能生成

如何让AI助力制作PPT,轻松实现PPT智能生成!在这个信息爆炸的时代,PPT的制作已经不再是繁琐的手工工作。传统的PPT制作往往让人焦头烂额,从挑选模板到设计布局,再到调整文字、图片,一项项细节令人抓狂。随着…

MySQL基于gtid的主从同步配置

一、主从复制的原理及工作过程 1、主从复制的原理 通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行,复制过程中一台服务器充当主服务器,而其他一个或多…

Leetcode 3426. Manhattan Distances of All Arrangements of Pieces

Leetcode 3426. Manhattan Distances of All Arrangements of Pieces 1. 解题思路2. 代码实现 题目链接:3426. Manhattan Distances of All Arrangements of Pieces 1. 解题思路 这道题很惭愧,一开始没有搞定,后来看了答案想了想&#xff…