路过一个卖彩票的店,突然灵感爆棚,想着是不是可以利用Python来预测一下的彩票号,这样不就可以有首付买房子,相亲找个对象也有点底气了!说干就干,小编就拿双色球为例,来给大家预测一下,万一中呢!
双色球是福利彩票的一种玩法,已经卖了有很多年。之前在支付宝上app可以买的,每天2块钱很有益身心健康,比LOL有积极意义。对于双色球这门游戏,刚开始买的时候是纯粹靠感觉,后来百度又看到了百度预测(虽然尼玛感觉一点都不准)。到底买双色球是纯靠运气,还是也有技术含量呢?
总之目标就是:
01
爬去双色球几年的数据
首先是数据的获取,小编利用爬虫来爬取近16年来的每一期的双色球中奖号码,如下图所示。
爬虫的部分程序如下图所示:
爬虫的思路很简单,主要是遍历爬取120几页的数据,GetPage函数取逐页解析,然后用bs去解析一些,并把数据保存在lottery文件里面。
用requests去伪装一个header取请求数据,这些都是非常基本的爬虫知识,这里就不过多描述。
小编一共爬取到了2441条数据,包含了从2003年2月23号到2019年7月16号的所有中奖彩票数据。有了数据之后,小编先进行了一下数据的分析,看看红色球和蓝色球当中,究竟哪些数字出现的频率较高。红色球的各个数字出现频率如下图所示。
从图上可以看出来,数字1出现的次数最高,而数字33出现的频率最低。蓝色球数字出现的频率如下图所示。
蓝色球当中数字12出现的频率最高,而数字8出现的频率最低。
所以按照各个数字的出现频率,小编统计了一下。按照出现的频率来买,总比随机买让我感到安心。概率统计的部分代码如下图所示。
02其实就是用collection模块里面的Counter库里面的most_common()函数来对数据进行统计一些最常见的红色球和蓝色球的频次比较高的。
机器学习来训练模型
下面小编决定参照网上给出的一些方法,利用线性回归来进行预测。小编对每个位置上的数字都分别训练一个模型。如下图所示:
绿色数字代表的是中奖号码的每一个位置,黄色数字就代表着每一个位置下的编号,小编就是将每个位置上的号码分别存储,以每个中奖号码作为Y值,而其每个编号作为X值,以此构成X、Y训练数据,而我们只需要预测每一个位置上的下一期中奖号码,然后将其拼接起来,就可以构成我们的下一期预测号码。部分程序如下图所示:
小编首先是将各个位置上的中奖号码分别存储到csv文件当中,然后从各个csv文件中读取数据,作为X、Y训练数据进行返回。
最后再针对每个位置上的中奖号码训练各自的模型即可得到我们的下一期预测号码。
以上就是小编分享的预测中奖号码的全部内容了