基于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进行双色球数据分析与预测。尽管机器学习可以帮助我们理解数据中的某些模式,但彩票的随机性质使得任何预测都不能保证成功。希望大家在进行这些技术探索时,始终保持理性和谨慎。双色球是公益事业,祝大家好运!

相关推荐
鹏码纵横1 小时前
已解决:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 异常的正确解决方法,亲测有效!!!
java·python·mysql
仙人掌_lz1 小时前
Qwen-3 微调实战:用 Python 和 Unsloth 打造专属 AI 模型
人工智能·python·ai·lora·llm·微调·qwen3
猎人everest1 小时前
快速搭建运行Django第一个应用—投票
后端·python·django
猎人everest1 小时前
Django的HelloWorld程序
开发语言·python·django
chusheng18402 小时前
2025最新版!Windows Python3 超详细安装图文教程(支持 Python3 全版本)
windows·python·python3下载·python 安装教程·python3 安装教程
别勉.2 小时前
Python Day50
开发语言·python
美林数据Tempodata2 小时前
大模型驱动数据分析革新:美林数据智能问数解决方案破局传统 BI 痛点
数据库·人工智能·数据分析·大模型·智能问数
硅谷秋水2 小时前
NORA:一个用于具身任务的小型开源通才视觉-语言-动作模型
人工智能·深度学习·机器学习·计算机视觉·语言模型·机器人
正儿八经的数字经2 小时前
人工智能100问☞第46问:AI是如何“学习”的?
人工智能·学习
飞哥数智坊3 小时前
别卷提示词了!像带新人一样“带”AI,产出效率翻倍
人工智能