欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据并通过随机森林和多层感知两种模型进行简单的预测

【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据并通过随机森林和多层感知两种模型进行简单的预测

2025/3/12 22:07:12 来源:https://blog.csdn.net/m0_61388098/article/details/142027553  浏览:    关键词:【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据并通过随机森林和多层感知两种模型进行简单的预测

首先我们需要通过爬虫获取往期双色球号码并将其保存在csv文件中,这里我获取了1000期的数据,时间很久,大家可以修改代码少收集一些做尝试!

import requests
import os
from bs4 import BeautifulSoup
import csv
import timedef download(url, page):while True:try:html = requests.get(url).textsoup = BeautifulSoup(html, 'html.parser')list = soup.select('div.ball_box01 ul li')ball = []for li in list:ball.append(li.string)if not ball:raise ValueError("Empty data")write_to_excel(page, ball)print(f"第{page}期开奖结果录入完成")breakexcept Exception as e:print(f"Attempt failed with error: {e}, retrying...")time.sleep(5)  # 等待5秒后重试def write_to_excel(page, ball):with open('双色球开奖结果2.csv', 'a', encoding='utf_8_sig', newline='') as f:writer = csv.writer(f)writer.writerow([f'第{page}期'] + ball)def turn_page():url = "https://kaijiang.500.com/ssq.shtml"html = requests.get(url).textsoup = BeautifulSoup(html, 'html.parser')pageList = soup.select("div.iSelectList a")recent_pages = pageList[:1000]  # 获取最近1000期的页码for p in recent_pages:url = p['href']page = p.stringdownload(url, page)def main():if os.path.exists('双色球开奖结果2.csv'):os.remove('双色球开奖结果2.csv')turn_page()if __name__ == '__main__':main()

这里是随机森林预测

import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestRegressor# 读取数据
data = pd.read_csv('双色球开奖结果2.csv')  # ,encoding='gbk'# 提取特征和标签
features = data.iloc[:, 1:7]  # 红色球特征
labels = data.iloc[:, 1:7]  # 红色球标签
blue_balls = data.iloc[:, 7]  # 蓝色球标签# 创建随机森林回归模型
model = RandomForestRegressor(n_estimators=100, random_state=1)# 拟合模型
model.fit(features, labels)# 预测下一期的红色球号码
next_red_balls = model.predict(features.iloc[-1].values.reshape(1, -1))
next_red_balls = np.round(next_red_balls).astype(int)# 预测下一期的蓝色球号码
blue_ball_model = RandomForestRegressor(n_estimators=100, random_state=1)
blue_ball_model.fit(features, blue_balls)
next_blue_ball = blue_ball_model.predict(features.iloc[-1].values.reshape(1, -1))
next_blue_ball = np.round(next_blue_ball).astype(int)# 打印预测的红色球号码和蓝色球号码
print("预测的红色球号码:", next_red_balls)
print("预测的蓝色球号码:", next_blue_ball)

多层感知

import pandas as pd
import numpy as np
from sklearn.neural_network import MLPRegressor# 读取数据
data = pd.read_csv('双色球开奖结果2.csv')  # , encoding='gbk'# 提取特征和标签
features = data.iloc[:, 1:7]  # 红色球特征
labels = data.iloc[:, 1:8]  # 红色球标签和蓝色球标签# 创建多层感知机回归模型
model = MLPRegressor(hidden_layer_sizes=(100,), random_state=1)# 拟合模型
model.fit(features, labels)
# 预测下一期的红色球号码和蓝色球号码
next_features = model.predict(features.iloc[[-1]])
next_features = np.round(next_features).astype(int)# 打印预测的红色球号码和蓝色球号码
print("预测的红色球号码:", next_features[:6])
print("预测的蓝色球号码:", next_features[6])

 杰哥这里仅做了简单的预测,闲暇时间无聊做的,大家想要更精确的结果需要更精细的调参!

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com