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

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

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

一,收集数据。

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

以下是采集数据的代码。

python 复制代码
'''

@date 2024年11月20日
@author liandyao
抖音号: liandyao
'''
import csv
import time

import 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 是上限,因此将终止于 2024
    params = {
        "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 下的所有 tr
        tbody = 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:  # 确保有足够的 td
                    issue_number = tds[0].text.strip()  # 期号
                    draw_time = tds[1].text.strip()  # 开奖时间

                    # 提取开奖号码
                    numbers_div = tds[2].find('div')  # 找到包含号码的 div
                    red_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进行双色球数据分析与预测。尽管机器学习可以帮助我们理解数据中的某些模式,但彩票的随机性质使得任何预测都不能保证成功。希望大家在进行这些技术探索时,始终保持理性和谨慎。双色球是公益事业,祝大家好运!

相关推荐
陈广亮25 分钟前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬35 分钟前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区1 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两4 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
敏编程4 小时前
一天一个Python库:jsonschema - JSON 数据验证利器
python
前端付豪4 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232554 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
王鑫星4 小时前
SWE-bench 首次突破 80%:Claude Opus 4.5 发布,Anthropic 的野心不止于写代码
人工智能