找回密码
 立即注册
查看: 339|回复: 0

大乐透预测——纯发神经

[复制链接]
发表于 2022-3-3 20:03 | 显示全部楼层 |阅读模式
原本是要对接其它项目组的神经网络模型的,前期自己先弄一个方便验证。

老实说,这种完全随机事件,神经网络用了也是发神经。

环境python3.8

安装tenserflow
python -m pip install --upgrade tensorflow
安装json,request,pandas等模块

最后pip list下,已安装的模块如下:
Package                      Version---------------------------- -------------------absl-py                      1.0.0argon2-cffi                  21.3.0argon2-cffi-bindings         21.2.0asttokens                    2.0.5astunparse                   1.6.3attrs                        21.4.0backcall                     0.2.0beautifulsoup4               4.10.0bleach                       4.1.0bs4                          0.0.1cachetools                   5.0.0certifi                      2021.10.8cffi                         1.15.0charset-normalizer           2.0.12colorama                     0.4.4cycler                       0.11.0debugpy                      1.5.1decorator                    5.1.1defusedxml                   0.7.1entrypoints                  0.4executing                    0.8.3flatbuffers                  2.0fonttools                    4.29.1gast                         0.5.3google-auth                  2.6.0google-auth-oauthlib         0.4.6google-pasta                 0.2.0grpcio                       1.44.0grpcio-tools                 1.44.0h5py                         3.6.0idna                         3.3importlib-metadata           4.11.2importlib-resources          5.4.0ipykernel                    6.9.1ipython                      8.1.0ipython-genutils             0.2.0ipywidgets                   7.6.5jedi                         0.18.1Jinja2                       3.0.3joblib                       1.0.1jsonschema                   4.4.0jupyter                      1.0.0jupyter-client               7.1.2jupyter-console              6.4.0jupyter-core                 4.9.2jupyterlab-pygments          0.1.2jupyterlab-widgets           1.0.2keras                        2.8.0Keras-Preprocessing          1.1.2kiwisolver                   1.3.2libclang                     13.0.0lxml                         4.8.0Markdown                     3.3.6MarkupSafe                   2.1.0matplotlib                   3.5.1matplotlib-inline            0.1.3mistune                      0.8.4mysql-connector-python       8.0.27nbclient                     0.5.11nbconvert                    6.4.2nbformat                     5.1.3nest-asyncio                 1.5.4notebook                     6.4.8numpy                        1.21.2oauthlib                     3.2.0opt-einsum                   3.3.0packaging                    21.3pandas                       1.4.1pandocfilters                1.5.0parso                        0.8.3pickleshare                  0.7.5Pillow                       9.0.1pip                          22.0.3prometheus-client            0.13.1prompt-toolkit               3.0.28protobuf                     3.19.4pure-eval                    0.2.2pyasn1                       0.4.8pyasn1-modules               0.2.8pycparser                    2.21Pygments                     2.11.2pyparsing                    3.0.7pyrsistent                   0.18.1python-dateutil              2.8.2pytz                         2021.3pywin32                      303pywinpty                     2.0.3pyzmq                        22.3.0qtconsole                    5.2.2QtPy                         2.0.1requests                     2.27.1requests-oauthlib            1.3.1rsa                          4.8scikit-learn                 0.24.2scipy                        1.7.1Send2Trash                   1.8.0setuptools                   47.1.0six                          1.16.0sklearn                      0.0soupsieve                    2.3.1stack-data                   0.2.0tensorboard                  2.8.0tensorboard-data-server      0.6.1tensorboard-plugin-wit       1.8.1tensorflow                   2.8.0tensorflow-io-gcs-filesystem 0.24.0termcolor                    1.1.0terminado                    0.13.1testpath                     0.6.0tf-estimator-nightly         2.8.0.dev2021122109threadpoolctl                2.2.0tornado                      6.1traitlets                    5.1.1typing_extensions            4.1.1urllib3                      1.26.8wcwidth                      0.2.5webencodings                 0.5.1Werkzeug                     2.0.3wheel                        0.37.1widgetsnbextension           3.5.2wrapt                        1.13.3zipp                         3.7.0
参考网上的文章,从官网拉数据,然后分析。

我给整合到一个文件里,如下:

import requests

import json

def get_url():

  data_1 = []

  # https://webapi.sporttery.cn/gateway/lottery/getHistoryPageListV1.qry?gameNo=85&provinceId=0&pageSize=30&isVerify=1&pageNo=1

  # https://webapi.sporttery.cn/gateway/lottery/getHistoryPageListV1.qry?gameNo=85&provinceId=0&pageSize=30&isVerify=1&pageNo=75

  for i in range(75,0,-1):

    # url = 'http://www.lottery.gov.cn/historykj/history_'+ str(i) +'.jspx?_ltype=dlt'

    url='https://webapi.sporttery.cn/gateway/lottry/getHistoryPageListV1.qry?gameNo=85&provinceId=0&pageSize=30&isVerify=1&pageNo='+str(i)

    content = requests.get(url).text

    # print(data)

    jsondata = json.loads(content)

    print(len(jsondata['value']['list']))

    for j in range(len(jsondata['value']['list'])-1,-1,-1):

      print("j="+str(j))

      drawnum=jsondata['value']['list'][j]['lotteryDrawNum']

      drawtime=jsondata['value']['list'][j]['lotteryDrawTime']

      # print(drawtime)

      drawresult=jsondata['value']['list'][j]['lotteryDrawResult']

      print(drawresult)

      num=[]

      num=drawresult.split()

      newnumstr=' '

      for k in range(0,len(num)):

        newnumstr+=str(float(num[k]))+" "

        # print(newnumstr)

      with open('data_recentfloat2.csv','a') as f:        

        f.write(drawnum+' '+drawtime+newnumstr+'\n')

get_url()

import pandas as pd

import numpy as np

import os

data = pd.read_csv('data_recentfloat2.csv',sep=' ',header=None,error_bad_lines=False).values

data = data[:,2:9]

print(data)

print(data[0,0])

data=data.astype(np.float32)

# for i in range(len(data)):

#   for j in range(len(data[0])):

#     data[i,j]=np.float64(data[i,j])

train_data_index=1700

val_data_index=2000

test_index=2010

mean = data[:val_data_index].mean(axis=0)

std = data[:val_data_index].std(axis=0)

data1 = data.copy()

data1 -= mean

data1 /= std

train_data = data1[:train_data_index]

train_data= np.expand_dims(train_data,axis=1)

val_data = data1[train_data_index:test_index]

val_data = np.expand_dims(val_data,axis=1)

test_data = data1[test_index:len(data)-1]

test_data = np.expand_dims(test_data,axis=1)

#红球篮球数据

red1_labels = data[:,0]

red2_labels = data[:,1]

red3_labels = data[:,2]

red4_labels = data[:,3]

red5_labels = data[:,4]

blue1_labels = data[:,5]

blue2_labels = data[:,6]

#训练数据

train_labels_1 = red1_labels[1:train_data_index+1]

train_labels_2 = red2_labels[1:train_data_index+1]

train_labels_3 = red3_labels[1:train_data_index+1]

train_labels_4 = red4_labels[1:train_data_index+1]

train_labels_5 = red5_labels[1:train_data_index+1]

train_labels_6 = blue1_labels[1:train_data_index+1]

train_labels_7 = blue2_labels[1:train_data_index+1]

#验证数据

val_labels_1 = red1_labels[train_data_index+1:test_index+1]

val_labels_2 = red2_labels[train_data_index+1:test_index+1]

val_labels_3 = red3_labels[train_data_index+1:test_index+1]

val_labels_4 = red4_labels[train_data_index+1:test_index+1]

val_labels_5 = red5_labels[train_data_index+1:test_index+1]

val_labels_6 = blue1_labels[train_data_index+1:test_index+1]

val_labels_7 = blue2_labels[train_data_index+1:test_index+1]

test_labels_1 = red1_labels[test_index+1:]

test_labels_2 = red2_labels[test_index+1:]

test_labels_3 = red3_labels[test_index+1:]

test_labels_4 = red4_labels[test_index+1:]

test_labels_5 = red5_labels[test_index+1:]

test_labels_6 = blue1_labels[test_index+1:]

test_labels_7 = blue2_labels[test_index+1:]

from tensorflow.keras import layers

from tensorflow.keras import Model

from tensorflow.keras import Input

from tensorflow.keras.optimizers import RMSprop

post_input = Input(shape=(None,7),name='post_input')

lstm = layers.LSTM(150,dropout=0.2,recurrent_dropout=0.2,activation='relu',return_sequences=True)(post_input)

lstm1=layers.LSTM(250,dropout=0.2,recurrent_dropout=0.2,activation='relu')(lstm)

x= layers.Dense(360,activation='relu')(lstm1)

x=layers.Dense(250,activation='relu')(x)

x=layers.Dense(250,activation='relu')(x)

x= layers.Dense(250,activation='relu')(x)

x= layers.Dense(250,activation='relu')(x)

x= layers.Dense(250,activation='relu')(x)

x= layers.Dense(140,activation='relu')(x)

x= layers.Dense(70,activation='relu')(x)

#x=layers.Dropout(0.3)(x)

red1_predict = layers.Dense(1,name='red1')(x)

red2_predict = layers.Dense(1,name='red2')(x)

red3_predict = layers.Dense(1,name='red3')(x)

red4_predict = layers.Dense(1,name='red4')(x)

red5_predict = layers.Dense(1,name='red5')(x)

blue1_predict = layers.Dense(1,name='blue1')(x)

blue2_predict = layers.Dense(1,name='blue2')(x)

model = Model(post_input,[red1_predict,red2_predict,red3_predict,red4_predict,red5_predict,blue1_predict,blue2_predict])

# model.compile(optimizer = RMSprop(1e-4),loss=['mse','mse','mse','mse','mse','mse','mse'],metrics=['acc','acc','acc','acc','acc','acc','acc'])

model.compile(optimizer = RMSprop(1e-4),loss='mae')

history= model.fit(train_data,[train_labels_1,train_labels_2,train_labels_3,train_labels_4,train_labels_5,train_labels_6,train_labels_7],

         batch_size=20,epochs=50,validation_data=(val_data,[val_labels_1,val_labels_2,val_labels_3,val_labels_4,val_labels_5,

                                   val_labels_6,val_labels_7]))

import matplotlib.pyplot as plt

loss = history.history['loss']

loss = loss[3:]

val_loss = history.history['val_loss']

val_loss = val_loss[3:]

epochs = range(1,len(loss)+1)

plt.figure()

plt.plot(epochs, loss, 'b',color='r', label='Training loss')

plt.plot(epochs, val_loss, 'b', label='Validation loss')

plt.title('Training and validation loss')

plt.legend()

plt.show()

#预测一下

predict_data=data1[2236]

predict_data=predict_data.reshape(1,1,7)

predict=model.predict(predict_data)

print(predict)  

参考文档:python爬彩票大乐透历史数据+预测测试...
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-10 01:20 , Processed in 0.137881 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表