上一章:机器篇——集成学习(七) 细说 XGBoost 算法
下一章:机器篇——集成学习(九) 细说 hotel_pred 项目(酒店预测)
本小节,细说 ball49_pred 项目,下一小节细说 hotel_pred 项目
三. 项目解说
8. ball49_pred 项目
本章节项目 github 地址:ball49_pred
终于熬到了项目讲解了。本章节只做知识学术研究探讨,研究探讨外的责任概不负责。做其他用途的读者,请自己对自己的行为负责。
在现实中,我们拿到的数据,往往没有那么理想,直接丢进模型,就可以进行训练的。就拿本节内容将要用到的数据来说吧,本节是,假设,有一种彩票,它一共有 49 个号码,每次开奖时,会开 6 个普通号码,1 个特别号码,一共开 7 个号码。基本上是每周开 3 次奖。如 2019 年 前 5 期 的开奖号码如下:
2019001 25.23.45.30.08.32+24
2019002 23.13.19.45.16.12+02
2019003 40.04.23.05.12.30+10
2019004 07.31.28.06.36.43+23
2019005 35.48.18.37.49.10+27
在上面这个开奖号码中,空格键前面的,是开奖期号数;空格键后面,是开奖号码,前面 6 个号码是普通码,+ (加号) 后面的是特别码(如 2019001 25.23.45.30.08.32+24:2019001 表示 2019年第一期;普通号码为 25.23.45.30.08.32;特别号码为 24)。面对这样的数据,我们要怎么去预测下一期的开奖号码呢?
想要预测准确,不管是对于机器学习,还是深度学习,都需要海量的数据。当时,从前面的信息,我们知道,这个将只是每周开 3 次奖,一年下来,也就 140+ 多数据,10年也就1400+条数据,也远远达不到海量的要求。而且,时间段越久,数据的规律也许就越复杂,越复杂的数据,越不容易进行预测找规律。为什么说时间跨越越久,数据规律越复杂呢?打个比方,我们只是拿到开奖的号码,但是,这个号码是用什么算法(姑且把它当做算法)得到的呢?我们对此一无所知,而时间跨度大,则容易出现,今年可能用 A 算法得到开奖号码,明年可能用 B 算法得到开奖号码,后年则可能用 C 算法得到的开奖号码。你试想想,如果让你用固定的数据,去拟合一个算法,效果也许会不错;但是,如果用固定的数据,去拟合 N 个算法,那就头疼了。尽管这只是可能。。。
但是,我们又想要进行预测,那,只能曲线救国了。这里的曲线救国,是因为数据量不够的情况下,我们只对下期进行一个单双,或大小的预测。因为只是进行单双或大小的预测,我们就要把利益最大化,而预测 特别码的单双或大小,可以获得这种有限数据情况下,利益的最大化。
同时,我们先只用最近一年的数据进行训练和预测,根据效果,来进行增加或删减数据。比如,先用今年的数据进行训练和预测,然后,再用今年和去年的数据进行训练和预测,对比两者的模型效果,选择较好的模型。这,就类似于网格搜索方式。以此,来控制数据的选用。
下面,我就以 2019 年的 140+条数据作为例子,做一个特别码单双的预测。
2019年的数据如下:train_ori_data.txt
2019001 25.23.45.30.08.32+24
2019002 23.13.19.45.16.12+02
2019003 40.04.23.05.12.30+10
2019004 07.31.28.06.36.43+23
2019005 35.48.18.37.49.10+27
2019006 44.33.16.17.10.48+07
2019007 16.18.28.35.41.36+37
2019008 34.47.24.13.31.44+08
2019009 30.33.03.19.25.48+44
2019010 46.41.18.33.43.11+36
2019011 46.14.45.41.27.29+21
2019012 14.45.03.10.24.32+29
2019013 22.26.31.33.41.18+27
2019014 05.35.13.06.34.19+39
2019015 15.19.04.29.02.11+01
2019016 01.34.39.49.19.29+43
2019017 40.09.26.17.32.31+27
2019018 46.05.43.08.20.16+11
2019019 03.08.17.19.07.23+12
2019020 33.16.08.13.05.02+41
2019021 39.36.16.49.29.42+34
2019022 14.49.15.33.13.21+01
2019023 19.12.13.09.21.46+15
2019024 43.30.24.25.22.32+11
2019025 24.44.26.47.35.21+08
2019026 16.49.34.32.28.10+45
2019027 15.08.17.23.39.44+40
2019028 13.32.46.34.41.35+30
2019029 33.38.47.27.06.21+46
2019030 28.40.10.04.43.25+39
2019031 09.12.31.23.05.43+29
2019032 40.38.18.46.23.04+15
2019033 12.32.37.45.07.22+47
2019034 15.39.10.11.49.46+21
2019035 21.03.02.31.10.35+11
2019036 44.41.05.03.23.17+40
2019037 37.39.49.15.17.18+31
2019038 15.21.06.24.28.10+49
2019039 42.44.29.34.38.47+36
2019040 41.37.21.45.34.08+49
2019041 14.32.43.17.23.03+36
2019042 06.38.32.18.41.45+33
2019043 40.22.15.35.49.03+39
2019044 30.11.20.32.43.33+34
2019045 37.32.30.47.39.28+23
2019046 21.11.28.34.18.13+19
2019047 21.08.14.02.35.32+04
2019048 45.49.43.29.01.32+05
2019049 19.06.23.01.45.47+49
2019050 24.19.13.35.06.20+43
2019051 44.12.39.06.35.42+22
2019052 29.05.04.32.24.03+02
2019053 12.30.41.10.14.37+05
2019054 38.37.04.07.23.01+34
2019055 09.41.02.01.16.30+35
2019056 04.07.21.35.41.24+18
2019057 43.13.11.17.33.14+27
2019058 14.30.40.48.23.12+01
2019059 37.49.42.29.45.22+47
2019060 16.15.31.36.46.12+03
2019061 19.03.13.43.35.23+26
2019062 16.24.21.28.37.40+48
2019063 21.24.47.06.32.13+38
2019064 24.03.27.49.28.05+44
2019065 25.19.08.37.20.21+13
2019066 03.31.33.21.38.06+45
2019067 42.30.17.44.08.07+24
2019068 48.23.29.35.26.18+36
2019069 15.25.11.09.33.21+46
2019070 29.33.13.30.47.43+16
2019071 29.46.25.32.40.23+13
2019072 20.46.47.12.42.33+27
2019073 29.13.46.09.31.22+45
2019074 45.14.15.42.13.48+02
2019075 44.15.01.24.02.12+14
2019076 42.11.28.08.10.07+29
2019077 05.31.42.20.39.03+25
2019078 49.03.26.06.32.27+29
2019079 32.14.12.46.38.35+16
2019080 28.06.16.33.37.45+13
2019081 17.02.04.11.08.31+19
2019082 47.26.27.44.33.30+37
2019083 25.38.42.19.39.14+46
2019084 16.10.07.18.35.11+43
2019085 14.45.04.24.39.19+08
2019086 03.22.44.19.16.41+29
2019087 21.20.13.43.49.18+30
2019088 24.28.43.27.23.37+16
2019089 06.21.37.22.15.05+36
2019090 19.30.08.44.25.09+37
2019091 48.49.44.22.15.42+06
2019092 29.14.30.16.10.43+11
2019093 13.02.38.23.35.46+17
2019094 32.44.04.09.26.20+11
2019095 12.32.23.35.16.15+02
2019096 06.42.01.05.04.43+08
2019097 01.31.47.21.49.10+13
2019098 06.29.18.33.43.46+16
2019099 38.26.24.44.08.37+18
2019100 14.32.44.06.24.01+05
2019101 02.27.24.39.08.17+10
2019102 04.44.29.03.18.41+39
2019103 08.43.07.25.45.12+13
2019104 43.49.12.28.13.11+47
2019105 33.25.24.23.05.31+07
2019106 28.07.19.04.12.01+43
2019107 12.26.20.30.22.36+02
2019108 44.08.17.42.39.34+07
2019109 42.28.39.44.03.40+37
2019110 06.44.17.49.46.45+41
2019111 03.27.20.46.11.02+04
2019112 48.07.02.18.10.03+33
2019113 12.19.13.15.45.01+44
2019114 23.36.43.35.47.13+16
2019115 10.37.27.42.29.16+44
2019116 19.18.45.21.14.47+49
2019117 22.06.44.19.42.01+25
2019118 31.11.01.41.47.06+32
2019119 10.16.23.27.07.34+24
2019120 49.24.17.30.40.01+48
2019121 20.19.13.02.10.24+17
2019122 13.25.15.46.30.40+26
2019123 33.34.20.30.07.44+46
2019124 18.06.23.46.31.17+44
2019125 03.13.31.49.02.18+14
2019126 23.47.28.44.39.10+13
2019127 01.24.13.12.42.04+48
2019128 03.05.10.35.38.04+07
2019129 46.28.20.35.01.32+15
2019130 42.25.45.15.05.09+38
2019131 22.23.36.41.29.44+02
2019132 10.40.01.49.24.18+07
2019133 15.23.45.01.47.29+06
2019134 02.23.31.16.06.08+01
2019135 47.25.30.26.14.32+04
2019136 11.35.28.06.12.05+17
2019137 32.39.49.21.35.06+15
2019138 02.08.28.04.04.29+05
2019139 41.34.30.23.20.03+47
2019140 35.31.22.24.39.28+12
预测数据 predict_data.txt 内容如下:
2019140 35.31.22.24.39.28+12
2019141 11.24.26.22.41.42+02
2019142 23.11.30.14.32.05+20
2019143 27.25.36.31.22.01+47
2019144 28.10.18.20.05.33+17
2020001 37.29.15.34.30.17+40
2020002 27.24.37.25.30.01+08
2020003 17.42.37.35.49