概述
前言
人工智能目前是越来越火了,而我们本次的主题就是通过人工智能技术来预测彩票,来提高我们的中奖概率;
大家知道,彩票数据是按照每期一组数的顺序排列的,从第一期到最新的一期,实际上是时间序列的数据。跟回归预测有很大的区别,因为特征上没有特殊的意义,不具备一组特征x映射到label y的条件。但是按照时间序列来训练的话就不一样了,输入x是一期的开奖结果,要学习的y是下一期的开奖结果。
LSTM介绍
既然我们需要通过过往的历史数据中寻找规律,那么LSTM再适合不过了。如果你对LSTM不熟悉的话,又希望进一步学习的话,以下几篇文章可以帮助你进一步学习:
- 一文详解LSTM网络
- 深度学习:人人都能看懂的LSTM
- 多图|入门必看:万字长文带你轻松了解LSTM全貌
安装前准备
python 3.6Flask==1.1.1tensorflow==2.0.0 tensorflow-gpu==2.0.0requests==2.22.0bs4==0.0.1
其中TensorFlow和TensorFlow-GPU只需要安装其中一个即可,如果有较好的独立显卡,建议安装TensorFlow-gpu,如果只是笔记本集成显卡或者普通显卡,建议使用TensorFlow即可;
建立项目
在本地建立项目predict_Lottery_ticket-master,在里面新建两个文件夹data、model,分别用于存放历史数据和模型;整体项目结构如下
采集历史数据
既然要训练模型,我们首先,先要收集数据,创建python文件get_train_data.py,内部代码如下:
# -*- coding:utf-8 -*-import requestsimport pandas as pdfrom bs4 import BeautifulSoupfrom 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_numdef 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文件,就可以收集最新一期的双色球数据了;
大家有任何问题都可以进行评论,下一期,我们将重点讲述如何训练创建和训练模型;
最后
以上就是清爽冬瓜为你收集整理的tensorflow lstm 预测_基于LSTM的双色球预测(一)前言LSTM介绍安装前准备建立项目采集历史数据的全部内容,希望文章能够帮你解决tensorflow lstm 预测_基于LSTM的双色球预测(一)前言LSTM介绍安装前准备建立项目采集历史数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复