网站首页 > 技术文章 正文
前言
人工智能目前是越来越火了,而我们本次的主题就是通过人工智能技术来预测彩票,来提高我们的中奖概率;
大家知道,彩票数据是按照每期一组数的顺序排列的,从第一期到最新的一期,实际上是时间序列的数据。跟回归预测有很大的区别,因为特征上没有特殊的意义,不具备一组特征x映射到label y的条件。但是按照时间序列来训练的话就不一样了,输入x是一期的开奖结果,要学习的y是下一期的开奖结果。
LSTM介绍
既然我们需要通过过往的历史数据中寻找规律,那么LSTM再适合不过了。如果你对LSTM不熟悉的话,又希望进一步学习的话,以下几篇文章可以帮助你进一步学习:
安装前准备
python 3.6
Flask==1.1.1
tensorflow==2.0.0
tensorflow-gpu==2.0.0
requests==2.22.0
bs4==0.0.1
其中TensorFlow和TensorFlow-GPU只需要安装其中一个即可,如果有较好的独立显卡,建议安装TensorFlow-gpu,如果只是笔记本集成显卡或者普通显卡,建议使用TensorFlow即可;
建立项目
在本地建立项目predict_Lottery_ticket-master,在里面新建两个文件夹data、model,分别用于存放历史数据和模型;整体项目结构如下
采集历史数据
既然要训练模型,我们首先,先要收集数据,创建python文件get_train_data.py,内部代码如下:
# -*- coding:utf-8 -*-
import requests
import pandas as pd
from bs4 import BeautifulSoup
from config import *
def get_current_number():
""" 获取最新一期数字
:return: int
"""
r = requests.get("{}{}".format(URL, "history.shtml"))
r.encoding = "gb2312"
soup = BeautifulSoup(r.text, "lxml")
current_num = soup.find("div", class_="wrap_datachart").find("input", id="end")["value"]
return current_num
def spider(start, end, mode):
""" 爬取历史数据
:param start 开始一期
:param end 最近一期
:param mode 模式
:return:
"""
url = "{}{}{}".format(URL, path.format(start), end)
r = requests.get(url=url)
r.encoding = "gb2312"
soup = BeautifulSoup(r.text, "lxml")
trs = soup.find("tbody", attrs={"id": "tdata"}).find_all("tr")
data = []
for tr in trs:
item = dict()
item[u"期数"]= tr.find_all("td")[0].get_text().strip()
item[u"红球号码_1"] = tr.find_all("td")[1].get_text().strip()
item[u"红球号码_2"] = tr.find_all("td")[2].get_text().strip()
item[u"红球号码_3"] = tr.find_all("td")[3].get_text().strip()
item[u"红球号码_4"] = tr.find_all("td")[4].get_text().strip()
item[u"红球号码_5"] = tr.find_all("td")[5].get_text().strip()
item[u"红球号码_6"] = tr.find_all("td")[6].get_text().strip()
item[u"蓝球"] = tr.find_all("td")[7].get_text().strip()
item[u"快乐星期天"] = tr.find_all("td")[8].get_text().strip()
item[u"奖池奖金(元)"] = tr.find_all("td")[9].get_text().strip()
item[u"一等奖_注数"] = tr.find_all("td")[10].get_text().strip()
item[u"一等奖_奖金(元)"] = tr.find_all("td")[11].get_text().strip()
item[u"二等奖_注数"] = tr.find_all("td")[12].get_text().strip()
item[u"二等奖_奖金(元)"] = tr.find_all("td")[13].get_text().strip()
item[u"总投注额(元)"] = tr.find_all("td")[14].get_text().strip()
item[u"开奖日期"] = tr.find_all("td")[15].get_text().strip()
data.append(item)
if mode == "train":
df = pd.DataFrame(data)
df.to_csv("data/data.csv", encoding="utf-8")
elif mode == "predict":
return pd.DataFrame(data)
if __name__ == "__main__":
print("最新一期期号:{}".format(get_current_number()))
print("正在获取数据。。。")
spider(1, get_current_number(), "train")
运行后,会发现在data文件夹内多了一个data.csv,打开后会发现里面存放了历史的彩票数据,后续每次开奖后,运行此python文件,就可以收集最新一期的双色球数据了;
大家有任何问题都可以进行评论,下一期,我们将重点讲述如何训练创建和训练模型;
猜你喜欢
- 2024-12-15 Spatial-Temporal时间序列预测建模方法汇总
- 2024-12-15 利用CNN-LSTM及迁移学习策略,高效提升锂离子电池SOC估算能力
- 2024-12-15 时间序列数据的特征提取
- 2024-12-15 【Python时序预测系列】LSTM实现时序数据多输入单输出多步预测
- 2024-12-15 机器学习笔记-LSTM(长短时记忆网络)
- 2024-12-15 【Python时序预测系列】基于LSTM实现多输入多输出单步预测
- 2024-12-15 【Python时序预测系列】基于ConvLSTM实现单变量时间序列预测
- 2024-12-15 电商贷训练营课程下-《时间序列预测的概念介绍》(视频版 )
- 2024-12-15 FredNormer: 非平稳时间序列预测的频域正则化方法
- 2024-12-15 深度学习:LSTM的训练和推理过程
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)