小白量化彩票实战(7)用sklearn神经网络预测彩票号码和特征
小白量化彩票实战(7)用sklearn神经网络预测彩票号码和特征
我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程和娱乐的思想来看待。兴趣是学习最大的动力!
神经网络是目前比较热门的技术,人工神经网络(Artificial Neural Networks,ANN)系统是 20 世纪 40 年代后出现的。它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理、分布式信息存储、良好的自组织自学习能力等特点。我们尝试依赖小白量化提供的金融模块以及sklearn库来搭建几个神经网络程序,来预测一下号码。
神经网络模型分类很多,我们这里采用的比较简单的神经网络模型,对于程序预测结果,大家纯粹当作神经网络模型学习实践和娱乐。神经网络模型分类很多,例如浅层神经网络,深度学习神经网络,卷积神经网络等。
神经网络模型对于初学者来说,没必要完全搞懂原理,只要求清楚怎么用就可以了,等你有兴趣,能力提高了,再去深入学习和优化改进。这就像程序中使用sin(x)函数,不需要理解这个函数的计算原理一样的。
简单来说,神经网络程序运行过程:
1、大量数据采集,需要学习样本。
2、特征提取。例如彩票蓝号单双,股票涨跌等。
3、数据变换。股票上的指标计算,或者有些深度学习模型本身需要数据变换,如数据归一化处理, 即把数据变为(0,1)之间的小数等等。
4、学习数据train和测试数据test划分。
5、选择神经网络模型用学习数据train进行学习。
6、用测试数据test进行验证,看看是否准确。如有必要可修改模型或调参处理。
7、用当前数据,预测未来结果。
我们用用sklearn神经网络的几个模型来研究一下能否预测彩票号码。我们仍以双色球彩票为例。
首先我们打算直接预测双色球彩票蓝号的下一期出号,如果随机选号概率1/16=0.0625。
按照上面神经网络程序运行过程顺序来做程序,程序预测号码的成功率是多少。
1、准备数据。
import math
import datetime as dt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import HP_plt as hplt #小白量化指标绘图模块
from HP_formula import * #小白量化仿通达信公式函数库
import HP_cp as hcp #小白量化彩票模块
import HP_global as g #小白量化全局变量库
import HP_plt as hplt #小白量化指标绘图模块plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#白底色
g.ubg='w'
g.ufg='b'
g.utg='b'
g.uvg='#1E90FF'code="双色球彩票" #品种#获取本地ssq.csv双色球数据
df=pd.read_csv('ssq.csv' , encoding='gbk')
df=df.drop(df.columns[0], axis=1)
2、特征提取。
# 彩票特征# 和数
df['sumh']=df['h1']+df['h2']+df['h3']+df['h4']+df['h5']+df['h6']
# 和数的5期平均线
df['ma5']=MA(df['sumh'],5)
# 和数的20期平均线
df['ma20']=MA(df['sumh'],20)# 全和数
df['suma']=df['h1']+df['h2']+df['h3']+df['h4']+df['h5']+df['h6'] +df['lh']#跨度
df['kd']=df['h6']-df['h1']#计算奖号AC值
df['ac']=[hcp.ac(hcp.str2num(x)) for x in df.hh.astype(str)]
df['maac']=MA(df['ac'],5) #AC值的平均线#2段编码器
bm2=hcp.bmq2()#计算奖号红号奇偶比,单双比
df['dsb']=[hcp.qab(hcp.str2num(x)) for x in df.hh.astype(str)]
df['dsb2']=[bm2[x] for x in df.dsb.astype(str)] #文本转为数字#计算奖号红号质合比
df['zhb']=[hcp.zhb(hcp.str2num(x)) for x in df.hh.astype(str)]
df['zhb2']=[bm2[x] for x in df.zhb.astype(str)] #文本转为数字#计算奖号红号大小比
df['dxb']=[hcp.dxb(hcp.str2num(x)) for x in df.hh.astype(str)]
df['dxb2']=[bm2[x] for x in df.dxb.astype(str)] #文本转为数字#计算蓝号单双号,奇偶号
df['lhds']=[x%2 for x in df.lh.astype(int)] #文本转为数字#计算蓝号质数
df['lhzs']=[hcp.zhishu(x) for x in df.lh.astype(int)] #文本转为数字#计算蓝号平均
df['lhma5']=MA(df.lh,5)
df['lhma10']=MA(df.lh,10)def dx(x):y=0if x>8:y=1return y#计算蓝号大号
df['lhdx']=[dx(x) for x in df.lh.astype(int)] #文本转为数字
3、数据变换。
#小白量化数据格式化
df['open']=df['h1']
df['low']=df['h1']
df['high']=df['h6']
df['close']=df['h6']
mydf=df.copy()
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']#RSI指标
def RSI(N1=5):LC = REF(CLOSE, 1)RSI1 = SMA(MAX(CLOSE - LC, 0), N1, 1) / SMA(ABS(CLOSE - LC), N1, 1) * 100.00return RSI1#计算RSI指标值
mydf['rsi']=RSI(6)
mydf['rsi2']=RSI(12)def DMI(M1=14, M2=6):"""DMI 趋向指标"""TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1)HD = HIGH - REF(HIGH, 1)LD = REF(LOW, 1) - LOWDMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1)DMM = SUM(IF((LD > 0) & (LD > HD), LD, 0), M1)DI1 = DMP * 100 / TRDI2 = DMM * 100 / TRADX = MA(ABS(DI2 - DI1) / (DI1 + DI2) * 100, M2)ADXR = (ADX + REF(ADX, M2)) / 2return DI1, DI2, ADX, ADXR
mydf['di1'],mydf['di2'],mydf['adx'],mydf['adxr']=DMI() #DMI指标#设置学习和预测标签
mydf['label']=mydf['lh'] ##预测蓝号
#mydf['label']=mydf['lhds'] ##预测蓝号单双
#mydf['label']=mydf['lhzs'] ##预测蓝号质合
#mydf['label']=mydf['lhdx'] ##预测蓝大小
4、学习数据train和测试数据test划分。
## 数据集划分为训练数据和测试数据
x_train,x_test,y_train,y_test=hcp.sk_init(mydf)test_size=len(x_test)/(len(x_train)+len(x_test))
print('神经网络数据已准备好了!')
print('test_size=%.4f,训练%d条,测试%d条。'%(test_size,len(x_train),len(x_test)))
5、选择神经网络模型用学习数据train进行学习。我们分别选择KNN分类器算法,随机森林分类法,决策树分类法进程测试。
#################################################
## (一) KNN分类算法
from sklearn import neighbors, datasets
print('KNN分类算法')
clf = neighbors.KNeighborsClassifier(10, weights= 'distance')
#################################################
#训练的代码
print('神经网络开始数据学习!')
clf.fit(x_train, y_train)
6、用测试数据test进行验证,看看是否准确。如有必要可修改模型或调参处理。
#训练的代码
print('神经网络开始数据学习!')
clf.fit(x_train, y_train) #神经网络学习result =clf.predict(x_test) #进行预测
print('测试数据的结果:',result[-10:-1])
print('真实数据的结果:',y_test[-10:-1])score = clf.score(x_test, y_test) #计算成功率
print('测试数据评估score :',score)
程序运行结果:
神经网络数据已准备好了!
test_size=0.1002,训练2397条,测试267条。
KNN分类算法
神经网络开始数据学习!
测试数据的结果: [ 5 6 6 11 13 15 14 12 11]
真实数据的结果: [1, 6, 6, 7, 10, 2, 6, 8, 2]
测试数据评估score : 0.08239700374531835
从这个程序的预测结果看,KNN分类器程序预测0.0823高于随机概率0.0625。
我们在选择决策树算法,看看预测结果。修改[5、选择神经网络模型]
#################################################
# (二) 决策树算法
from sklearn import tree
##决策树
print('决策树')
clf = tree.DecisionTreeClassifier()
程序运行结果:
神经网络数据已准备好了!
test_size=0.1002,训练2397条,测试267条。
决策树
神经网络开始数据学习!
测试数据的结果: [ 7 12 12 9 12 2 8 10 14]
真实数据的结果: [1, 6, 6, 7, 10, 2, 6, 8, 2]
测试数据评估score : 0.07865168539325842
从这个程序的预测结果看,决策树分类器程序预测0.0786(每次值不同)高于随机概率0.0625。
我们在选择随机森林分类器,看看预测结果。修改[5、选择神经网络模型]
#################################################
# (三) 随机森林分类器算法
from sklearn.ensemble import RandomForestClassifier #导入随机森林分类器
print('随机森林分类器')
#clf = RandomForestClassifier()
clf = RandomForestClassifier(n_estimators=10)
程序运行结果:
神经网络数据已准备好了!
test_size=0.1002,训练2397条,测试267条。
随机森林分类器
神经网络开始数据学习!
测试数据的结果: [ 2 3 5 10 9 2 3 10 4]
真实数据的结果: [1, 6, 6, 7, 10, 2, 6, 8, 2]
测试数据评估score : 0.08614232209737828
从这个程序的预测结果看,随机森林分类器程序预测0.0861(每次值不同)高于随机概率0.0625。
从上面深度学习程序比较结果来看,也许是学习样本太少缘故,或不可预测,直接预测号码不现实。我们改成预测单双,这个随机概率为50%,机器预测会是多少。我们修改学习标签mydf[‘label’]值就可以了。
#设置学习和预测标签
#mydf['label']=mydf['lh'] ##预测蓝号
mydf['label']=mydf['lhds'] ##预测蓝号单双
#mydf['label']=mydf['lhzs'] ##预测蓝号质合
#mydf['label']=mydf['lhdx'] ##预测蓝大小
我们下面给出全部预测代码。
#购买<零基础搭建量化投资系统>正版书,送小白量化软件源代码。
# https://item.jd.com/61567375505.html
#独狼荷蒲qq:2775205
#小白量化彩票软件开发群:712300766
#小白量化PythonTkinter软件开发群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析
import math
import datetime as dt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import HP_plt as hplt #小白量化指标绘图模块
from HP_formula import * #小白量化仿通达信公式函数库
import HP_cp as hcp #小白量化彩票模块
import HP_global as g #小白量化全局变量库
import HP_plt as hplt #小白量化指标绘图模块plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
#白底色
g.ubg='w'
g.ufg='b'
g.utg='b'
g.uvg='#1E90FF'code="双色球彩票" #品种#获取本地ssq.csv双色球数据
df=pd.read_csv('ssq.csv' , encoding='gbk')
df=df.drop(df.columns[0], axis=1)# 彩票特征# 和数
df['sumh']=df['h1']+df['h2']+df['h3']+df['h4']+df['h5']+df['h6']
# 和数的5期平均线
df['ma5']=MA(df['sumh'],5)
# 和数的20期平均线
df['ma20']=MA(df['sumh'],20)# 全和数
df['suma']=df['h1']+df['h2']+df['h3']+df['h4']+df['h5']+df['h6'] +df['lh']#跨度
df['kd']=df['h6']-df['h1']#计算奖号AC值
df['ac']=[hcp.ac(hcp.str2num(x)) for x in df.hh.astype(str)]
df['maac']=MA(df['ac'],5) #AC值的平均线#2段编码器
bm2=hcp.bmq2()#计算奖号红号奇偶比,单双比
df['dsb']=[hcp.qab(hcp.str2num(x)) for x in df.hh.astype(str)]
df['dsb2']=[bm2[x] for x in df.dsb.astype(str)] #文本转为数字#计算奖号红号质合比
df['zhb']=[hcp.zhb(hcp.str2num(x)) for x in df.hh.astype(str)]
df['zhb2']=[bm2[x] for x in df.zhb.astype(str)] #文本转为数字#计算奖号红号大小比
df['dxb']=[hcp.dxb(hcp.str2num(x)) for x in df.hh.astype(str)]
df['dxb2']=[bm2[x] for x in df.dxb.astype(str)] #文本转为数字#计算蓝号单双号,奇偶号
df['lhds']=[x%2 for x in df.lh.astype(int)] #文本转为数字#计算蓝号质数
df['lhzs']=[hcp.zhishu(x) for x in df.lh.astype(int)] #文本转为数字#计算蓝号平均
df['lhma5']=MA(df.lh,5)
df['lhma10']=MA(df.lh,10)def dx(x):y=0if x>8:y=1return y#计算蓝号大号
df['lhdx']=[dx(x) for x in df.lh.astype(int)] #文本转为数字#小白量化数据格式化
df['open']=df['h1']
df['low']=df['h1']
df['high']=df['h6']
df['close']=df['h6']
mydf=df.copy()
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']#RSI指标
def RSI(N1=5):LC = REF(CLOSE, 1)RSI1 = SMA(MAX(CLOSE - LC, 0), N1, 1) / SMA(ABS(CLOSE - LC), N1, 1) * 100.00return RSI1#计算RSI指标值
mydf['rsi']=RSI(6)
mydf['rsi2']=RSI(12)def DMI(M1=14, M2=6):"""DMI 趋向指标"""TR = SUM(MAX(MAX(HIGH - LOW, ABS(HIGH - REF(CLOSE, 1))), ABS(LOW - REF(CLOSE, 1))), M1)HD = HIGH - REF(HIGH, 1)LD = REF(LOW, 1) - LOWDMP = SUM(IF((HD > 0) & (HD > LD), HD, 0), M1)DMM = SUM(IF((LD > 0) & (LD > HD), LD, 0), M1)DI1 = DMP * 100 / TRDI2 = DMM * 100 / TRADX = MA(ABS(DI2 - DI1) / (DI1 + DI2) * 100, M2)ADXR = (ADX + REF(ADX, M2)) / 2return DI1, DI2, ADX, ADXR
mydf['di1'],mydf['di2'],mydf['adx'],mydf['adxr']=DMI() #DMI指标#设置学习和预测标签
#mydf['label']=mydf['lh'] ##预测蓝号
mydf['label']=mydf['lhds'] ##预测蓝号单双
#mydf['label']=mydf['lhzs'] ##预测蓝号质合
#mydf['label']=mydf['lhdx'] ##预测蓝大小## 数据集划分为训练数据和测试数据
x_train,x_test,y_train,y_test=hcp.sk_init(mydf)test_size=len(x_test)/(len(x_train)+len(x_test))
print('神经网络数据已准备好了!')
print('test_size=%.4f,训练%d条,测试%d条。'%(test_size,len(x_train),len(x_test)))##################################################
## (一) KNN分类算法
from sklearn import neighbors, datasets
print('KNN分类算法')
clf = neighbors.KNeighborsClassifier(10, weights= 'distance')
################################################
## (二) 决策树算法
#from sklearn import tree
#print('决策树')
#clf = tree.DecisionTreeClassifier()
################################################
## (三) 随机森林分类器算法
#from sklearn.ensemble import RandomForestClassifier #导入随机森林分类器
#print('随机森林分类器')
##clf = RandomForestClassifier()
#clf = RandomForestClassifier(n_estimators=10)
##################################################训练的代码
print('神经网络开始数据学习!')
clf.fit(x_train, y_train) #神经网络学习result =clf.predict(x_test) #进行预测
print('测试数据的结果:',result[-10:-1])
print('真实数据的结果:',y_test[-10:-1])score = clf.score(x_test, y_test) #计算成功率
print('测试数据评估score :',score)
程序对单双预测结果如下:
神经网络数据已准备好了!
test_size=0.1002,训练2397条,测试267条。
KNN分类算法
神经网络开始数据学习!
测试数据的结果: [0 0 0 1 1 1 0 1 1]
真实数据的结果: [1, 0, 0, 1, 0, 0, 0, 0, 0]
测试数据评估score : 0.5318352059925093
机器预测成功单值1,双值0的成功率为0.53183,也比随机概率0.5大一点。
神经网络模型很多,还有很多深度学习模型,本文神经网络分析彩票的结果,不代表神经网络不能预测彩票。也仅仅表示提取的特征值,不适合需选用神经网络模型来电脑AI预测。
购买《零基础搭建量化投资系统――以Python为工具》(https://item.jd.com/61567375505.html)一书,就能得到小白量化第二代全部源代码。其中包括完整的HP_cp模块。
#独狼荷蒲qq:2775205 /2886002
#小白量化彩票软件开发群:712300766
#小白量化PythonTkinter软件开发群:524949939
#电话微信:18578755056
#微信公众号:独狼股票分析
请点赞本文,你的鼓励是我写作的动力!
请持续关注我的博客,我的进步,就是你的进步!
小白量化彩票实战(7)用sklearn神经网络预测彩票号码和特征相关推荐
- 卷积神经网络预测彩票,卷积神经网络预测模型
1.卷积神经网络能用于参数预测吗 卷积神经网络有以下几种应用可供研究: 1.基于卷积网络的形状识别 物体的形状是人的视觉系统分析和识别物体的基础,几何形状是物体的本质特征的表现,并具有平移.缩放和旋转 ...
- 神经网络预测彩票数据
一.人工智能深度学习神经网络在双色球彩票中的应用研究(一) https://www.cnblogs.com/zdz8207/p/DeepLearning-NeuralNetworks.html 二.百 ...
- 遗传算法神经网络预测彩票
不多说直接上代码: //------------------------------------------------------------------------------ #pragma h ...
- python神经网络预测彩票_python代写用遗传算法 神经网络 模糊逻辑控制算法对大乐透彩票进行预测...
前言 预测是通过基于来自过去和当前状态的信息来对将要发生的事情做出声明. 每个人每天都以不同程度的成功解决预测问题.例如,需要预测天气,收获,能源消耗,外汇(外汇)货币对或股票,地震和许多其他东西 ...
- 自己做量化交易软件(39)小白量化实战12--利用神经网络程序预测价格上涨
自己做量化交易软件(39)小白量化实战12–利用神经网络程序预测价格上涨 大家使用小白量化软件的主要目不是为了仿通达信公式和仿大智慧公式,大家主要的目的想利用Python神经网络和深度学习等功能来用人 ...
- 小白量化彩票实战(6)彩票号码中六保五缩水和旋转矩阵
小白量化彩票实战(6)彩票号码中六保五缩水和旋转矩阵 我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程和娱乐的思想来看待.兴趣是学习最大的动力! 我编写彩票软件都有近十多年时间,一直没搞懂彩票号 ...
- 小白量化彩票实战(2)奖号特征值与编码器应用
小白量化彩票实战(2)奖号特征值与编码器应用 我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程和娱乐的思想来看待. 索普玩的21点,只有1,2副牌,牌发完再重新洗牌,所以通过记牌,计牌估算概率, ...
- 小白量化彩票实战(4)彩票特征号码重号、邻号、连号和表格展示
小白量化彩票实战(4)彩票特征号码重号.邻号.连号和表格展示 我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程和娱乐的思想来看待.兴趣是学习最大的动力! 彩票的号码特征很多,我们本篇介绍几个简单 ...
- 小白量化彩票实战(3)彩票出现次数统计和热温号比分析及图形和表格展示
小白量化彩票实战(3)彩票出现次数统计和热温号比分析及图形和表格展示 我写彩票的博客,不是鼓励大家去买彩票,读者要以学习编程和娱乐的思想来看待.兴趣是学习最大的动力! 上一篇我们介绍彩票奖号特征值及仿 ...
最新文章
- Java入门超简单程序Song List
- Spring-Data-JPA 动态查询黑科技
- 紧急通知:360 网站卫士前端公共库已停止服务
- 第8步 第2剑客 mybatis plugin 第三剑客 page helper csdn每天最多发多少文章 是20篇,刚刚才试了。2014
- 用python写helloworld_Python Helloworld程序简单实现
- 网络爬虫--12.【XPath实战】获取百度贴吧中的图片
- 问题解决:./config.sh: line 103
- 2021-08-26 转载 Scala快速入门系列博客文章
- 无人驾驶全局路径规划之RRT算法
- 什么是消息队列(Message queue)
- emacs go-mode 设置tab宽度
- 组装服务器怎么做阵列,怎么做服务器的磁盘阵列
- CSS解决连续英文字母或连续数字不能自动换行
- php后端学多久,【后端开辟】零基本php自学要多久
- 极速office(Word)人民币符号怎么打出来
- 极速办公(PPT)如何添加双删除线
- 数据分析_Pandas基础练习题9道(附数据)
- mysql/Java服务端对emoji(utf8mb4编码)的支持有关的问题
- Altium Designer 18中的PCB Editor–Board Insight Display
- 58 同城 iOS 客户端 Hybrid 框架探索
热门文章
- 闫辉-《程序员商业意识》之挖掘需求-UMLChina讲座-音频和幻灯
- 用pyinstaller打包文件中遇到的那些坑
- 你想找的Python资料这里全都有!没有你找不到!史上最全资料合集
- B2B2C多用户商城系统亮点
- 荣耀手机点击android键,荣耀10虚拟按键可以设置吗?荣耀10怎么设置虚拟按键或悬浮球?...
- 史上最全Pandas 教程!
- 毕业设计 单片机MP3音乐播放器 - 物联网 嵌入式
- Verilog基本语法之数据类型(二)
- 新型1688分销网店让想开店的店主轻松无忧
- 小米最新netguard 解锁软件 账户锁 不反锁 支持红米note7pro 小米9 小米10等新款手机