在网上看了一下有相关的例子,不过没有完整源码,运行还会报错,稍微做修改和优化,修复部分已知错误。

特别提醒:仅供娱乐,请勿当真,双色球属于随机数,线性回归无法预测随机数的哦~~

编译运行环境:Python 3.7x

原版源码如下:(URL暂时无法正常使用了,改用升级版)

#!/usr/bin/python
# -*- coding:UTF-8 -*-# 导入需要的包
import os
import pandas as pd
import re
from urllib import request
from bs4 import BeautifulSoup
from sklearn import datasets, linear_modeldef get_http_content(href):"""读取网页内容"""request_headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0'}req = request.Request(href, headers = request_headers)try:res = request.urlopen(req)return res.read()except request.HTTPError as e:raise edef get_page_num(url):"""获取总页数"""num = 0content = get_http_content(url)soup = BeautifulSoup(content, features='lxml')strong = soup.find('td', colspan='7')# print(strong)if strong:result = strong.get_text().split(' ')list_num = re.findall("[0-9]{1}", result[1])for i in range(len(list_num)):num = num * 10 + int(list_num[i])return numelse:return 0def get_history_lotto(page):"""按页爬取号码数据"""url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_%d.html'href = url % pageprint('load......', page, href)content = get_http_content(href)soup = BeautifulSoup(content, features='lxml')em_list = soup.find_all('em')div_list = soup.find_all('td', {'align': 'center'})n = 0m = 0results = []group = []text = ''for div in em_list:if n == 0:# 日期group.append(str(div_list[m+0].get_text()))# 期数group.append(str(div_list[m+1].get_text()))# 号码lotto = str(div.get_text())group.append(lotto)# print(lotto)n = n + 1# 每7个号码组成一组if n == 7:group.append(text + lotto)# 将每组结果汇总到结果列表results.append(group)group = []text = ''n = 0  # 重置计数m += + 5  # 跳过5列else:text += lotto + ','return resultsdef get_history_result(out_file):"""爬取历史数据"""url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_%d.html'# 获取页数num = get_page_num(url % 1)results = []# 按页数循环抓取数据for i in range(1, num):try:# 合并分页查询结果results += get_history_lotto(i)except Exception as e:# 爬取失败时,提示失败原因print('error......', i, e)# 表头columns = {'date': str,'id': str,  # 期数'r1': int,  # 红1'r2': int,  # 红2'r3': int,  # 红3'r4': int,  # 红4'r5': int,  # 红5'r6': int,  # 红6'b1': int,  # 蓝1'note': str}# 生成 DataFramedf = pd.DataFrame(columns=columns, data=results)print('保存结果')df.to_csv(out_file, index=False, encoding='utf-8-sig')print(df)return dfdef get_lotto_data(file, lotto, lotto_id):"""取读历史数据,指定标识"""data = pd.read_csv(file)data['lotto_id'] = lotto_idX = []Y = []# single_square_feet, single_price_valuefor s, p in zip(data['lotto_id'], data[lotto]):X.append([float(s)])Y.append(float(p))return X,  Y# 训练线性回归模型
def linear_model_test(X, Y, predict_value):regr = linear_model.LinearRegression()regr.fit(X, Y)predict_outcome = regr.predict(predict_value)predictions = {}predictions['intercept'] = regr.intercept_predictions['coefficient'] = regr.coef_predictions['predicted_value'] = predict_outcomereturn predictionsdef get_predicted_num(file, lotto, lotto_id, num):"""使用线性回归推测中奖号码"""X, Y = get_lotto_data(file, lotto, lotto_id)# print(X)# print(Y)predict_value = [[51]]result = linear_model_test(X, Y, predict_value)print("num", num,'Intercept value', result['intercept'],'Coefficient', result['coefficient'],'Predicted value', result['predicted_value'])if __name__ == '__main__':force_refresh = False  # 强制刷新数据file_name = './union_lotto_history_result.csv'if not os.path.exists(file_name) or force_refresh:# 获取历史数据get_history_result(file_name)# 使用线性回归模型进行预测 (o_o 预测结果纯属娱乐,请勿深信)get_predicted_num(file_name, 'r1', 1, 1)  # 预测红1get_predicted_num(file_name, 'r2', 2, 2)  # 预测红2get_predicted_num(file_name, 'r3', 3, 3)  # 预测红3get_predicted_num(file_name, 'r4', 4, 4)  # 预测红4get_predicted_num(file_name, 'r5', 5, 5)  # 预测红5get_predicted_num(file_name, 'r6', 6, 28)  # 预测红6get_predicted_num(file_name, 'b1', 7, 9)  # 预测蓝7

升级版源码如下:

import requests
import jsonimport pandas as pd
from sklearn import datasets, linear_modeldef get_history_lotto():"""爬取号码数据"""url = 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=100'headers = {'Host': 'www.cwl.gov.cn','Referer': 'http://www.cwl.gov.cn/kjxx/ssq/kjgg/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0'}columns = {'date': str,'id': str,  # 期数'r1': int,  # 红1'r2': int,  # 红2'r3': int,  # 红3'r4': int,  # 红4'r5': int,  # 红5'r6': int,  # 红6'b1': int,  # 蓝1'note': str}response = requests.get(url=url, headers=headers)# print(response.text)response_data = json.loads(response.text)result = response_data['result']results = []for i in result:dit = {}cnt = 1dit['id'] = i['code']dit['date'] = i['date']for j in str(i['red']).split(','):dit['r' + str(cnt)] = jcnt += 1dit['b1'] = i['blue']dit['note'] = i['red'] + ',' + i['blue']# print(dit)results.append(dit)return pd.DataFrame(columns=columns, data=results)def get_lotto_data(data, lotto, lotto_id):"""取读历史数据,指定标识"""data['lotto_id'] = lotto_idX = []Y = []# single_square_feet, single_price_valuefor s, p in zip(data['lotto_id'], data[lotto]):X.append([float(s)])Y.append(float(p))return X, Y# 训练线性回归模型
def linear_model_test(X, Y, predict_value):regr = linear_model.LinearRegression()regr.fit(X, Y)predict_outcome = regr.predict(predict_value)predictions = {}predictions['intercept'] = regr.intercept_predictions['coefficient'] = regr.coef_predictions['predicted_value'] = predict_outcomereturn predictionsdef get_predicted_num(file, lotto, lotto_id, num):"""使用线性回归推测中奖号码"""X, Y = get_lotto_data(file, lotto, lotto_id)# print(X)# print(Y)predict_value = [[33]]result = linear_model_test(X, Y, predict_value)print("num", num,'Intercept value', result['intercept'],'Coefficient', result['coefficient'],'Predicted value', result['predicted_value'])if __name__ == '__main__':force_refresh = False  # 强制刷新数据file_name = './data/union_lotto_history_result.csv'df = get_history_lotto()df.to_csv(file_name, encoding='utf-8-sig', index=False)df = df.sample(100)# 使用线性回归模型进行预测 (o_o 预测结果纯属娱乐,请勿深信)get_predicted_num(df, 'r1', 1, 5)  # 预测红1get_predicted_num(df, 'r2', 2, 10)  # 预测红2get_predicted_num(df, 'r3', 3, 15)  # 预测红3get_predicted_num(df, 'r4', 4, 20)  # 预测红4get_predicted_num(df, 'r5', 5, 24)  # 预测红5get_predicted_num(df, 'r6', 6, 29)  # 预测红6get_predicted_num(df, 'b1', 7, 9)  # 预测蓝7

测试结果:

num 1 Intercept value 4.73266129032258 Coefficient [0.] Predicted value [4.73266129]
num 2 Intercept value 9.621774193548386 Coefficient [0.] Predicted value [9.62177419]
num 3 Intercept value 14.393145161290322 Coefficient [0.] Predicted value [14.39314516]
num 4 Intercept value 19.2625 Coefficient [0.] Predicted value [19.2625]
num 5 Intercept value 24.161290322580644 Coefficient [0.] Predicted value [24.16129032]
num 28 Intercept value 28.938709677419354 Coefficient [0.] Predicted value [28.93870968]
num 9 Intercept value 8.578225806451613 Coefficient [0.] Predicted value [8.57822581]

Python学习:利用线性回归预测双色球开奖号码(纯娱乐升级版)相关推荐

  1. 【Python爬虫】利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023-06-28

    链接:https://pan.baidu.com/s/18oE308_NVNPaCOACw_H5Hw?pwd=abc1 利用爬虫抓取双色球开奖号码,获取完整数据,简洁45行代码实现,更新时间2023- ...

  2. Pandas学习(二)——双色球开奖数据分析

    学习笔记汇总 Pandas学习(一)–数据的导入 pandas学习(二)–双色球数据分析 pandas学习(三)–NAB球员薪资分析 pandas学习(四)–数据的归一化 pandas学习(五)–pa ...

  3. scrapy 抓取 体彩-超级大乐透,历年开奖号码【娱乐篇】

    最近正好在看scrapy,手贱有了如下代码,核心代码如下:(不要给我讲pipline,我完全是图方便才这么写的) 彩票中出现频率最高的号码整理,如下: [05,19,29,33,35][11,12] ...

  4. 【Python】爬虫初体验,40行代码爬取双色球2003年至今的开奖号码

    爬虫爬取的双色球开奖号码 按我目前的理解,爬虫的工作原理大致是: 获取目标网页,在网页(html文件)中筛选目标数据,最后把数据导出 利用爬虫爬取数据看似很"高深莫测",只需几分钟 ...

  5. Java小程序:模拟双色球开奖

    双色球规则: // 双色球 :红色球号码 + 蓝色球号码// 六个红色球和一个蓝色球号码// 红色球号码从1~33中选择// 蓝色球号码从1~16中选择// 一等奖:七个号码相符(六个红色号码和一个蓝 ...

  6. 结合读取 https://kj.sscejia.com/ssq/kaijiang/61.html 开奖号码分析 下一次 数字组合

    根据所提供的网页,我们可以看到上一次的双色球开奖号码为 02.04.05.11.16.26,红色球号码为 01.由于双色球号码范围是从 01 到 33,因此下一次的数字组合可能是任意 6 个从 01 ...

  7. 利用Python获取历史双色球开奖结果

    import requests import pymssql from lxml import etree #配置连接数据库信息 server = "-------------" ...

  8. Python爬虫系列之双色球开奖信息爬取

    Python基于Beautiful Soup库对双色球开奖信息进行爬取 代码仅供学习交流,请勿用于非法用途 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击 ...

  9. python+requests+ 爬取官网双色球开奖数据

    python+requests+mysql 爬取官网双色球开奖数据 分析网页数据获取方式 第一种查询方式 第二种查询方式 完整代码 分析网页数据获取方式 第一种查询方式 在官网上 可以找到多种数据查询 ...

最新文章

  1. java里class有什么用_安装JDK时的java和javac命令有什么用?
  2. python 自带虚拟环境
  3. Python selenium环境搭建
  4. 一款基于jQuery外观优雅带遮罩弹出层对话框
  5. 计算机云客户端,蓝奏云网盘客户端 0.3.7电脑版
  6. 问题 1072: 汽水瓶
  7. php报错提醒,php报错问题
  8. 停航63天!湖北复航了,机票预订火爆程度堪比春运
  9. PAT1003. 我要通过!
  10. testVC.modalPresentationStyle = UIModalPresentationFormSheet; 更改 VC大小
  11. 异常排查_Python-日志模块.NoSectionError: No section: '*' 错误?
  12. 引用阿里图标库的三种方式——多色图标我选symbol
  13. 野火征途Pro开发板FPGA数字时钟(秒表)设计学习心得(1)
  14. python走迷宫_Python使用Tkinter实现机器人走迷宫
  15. MongoDB简单学习小总结
  16. 81.【SpringMVC】
  17. 抓包工具 Charles使用教程---抓取接口数据
  18. mysql 两表关联 分组查询
  19. WebAPI_AutoFac(依赖注入)的简单使用
  20. 使用Aspose.Cells组件生成Excel文件列宽度自适应时出错:Column width must be between 0 and 255...

热门文章

  1. mac 环境下svn客户端安装和简单使用
  2. 草他妈 胡闹的一天
  3. 献给那些有梦想的程序员'
  4. VTP协议与配置(小实验详细步骤、思路)
  5. 第二届先导杯-在曙光超算平台编译cp2k(二)
  6. 描述统计与推断统计的关系
  7. 虚拟地址和物理地址之间的映射关系
  8. 解决SpringCloud的Gateway网关无法访问服务的静态资源
  9. ATF原生篇(十九):Components-安全分区管理器(MM)(Secure Partition Manager (MM))(下)
  10. 马少平、周枫、王小川、楼天城、唐文斌:清华计算机系与人工智能的40年