运用keras预测
用于预测足球,目前用,欧盘,亚盘,大小盘,半场记录,技术信息,总场数等数据预测胜平负。
但是只能达到50%的正确率。还在摸索中。可能需要组合不同条件筛选不同的比赛。
只是简单的用神经元预测。
杂乱笔记
- import numpy as np
- import pandas as pd
- import matplotlib.pyplot as plt
- import tensorflow as tf
- from tensorflow.keras import models,layers
-
- dftrain_raw = pd.read_csv('C:/Users/xxx/Desktop/365/d.txt',header=None)
-
- dftest_raw = pd.read_csv('C:/Users/xxx/Desktop/365/tt.csv',header=None)
- #dftrain_raw.head(10)
- #print(dftrain_raw[22])
-
- # 数据预处理
- def preprocessing(dfdata):
-
- dfresult= pd.DataFrame()
- dfresult[0] = dfdata[0]
- dfresult[1] = dfdata[1]
- dfresult[2] = dfdata[2]
- dfresult[3] = dfdata[3]
- dfresult[4] = dfdata[4]
- dfresult[5] = dfdata[5]
- dfresult[6] = dfdata[6]
- dfresult[7] = dfdata[7]
- dfresult[8] = dfdata[8]
- dfresult[9] = dfdata[9]
- dfresult[10] = dfdata[10]
- dfresult[11] = dfdata[11]
- dfresult[12] = dfdata[12]
- dfresult[13] = dfdata[13]
- dfresult[14] = dfdata[14]
- dfresult[15] = dfdata[15]
- dfresult[16] = dfdata[16]
- dfresult[17] = dfdata[17]
- dfresult[18] = dfdata[18]
- dfresult[19] = dfdata[19]
- dfresult[20] = dfdata[20]
- dfresult[21] = dfdata[21]
- return(dfresult)
-
-
-
- x_train = preprocessing(dftrain_raw)
- print(x_train.shape)
- y_train = dftrain_raw[22]
-
-
- x_test = preprocessing(dftest_raw)
- y_test = dftest_raw[22]
-
-
- tf.keras.backend.clear_session()
-
- model = models.Sequential()
- model.add(layers.Dense(25,activation = 'relu',input_shape=(22,)))
- model.add(layers.Dense(12,activation = 'relu' ))
- model.add(layers.Dense(1,activation = 'sigmoid' ))
-
- model.summary()
-
-
- # 二分类问题选择二元交叉熵损失函数
- model.compile(optimizer='adam',
- loss='binary_crossentropy',
- metrics=['AUC'])
-
- history = model.fit(x_train,y_train,
- batch_size= 64,
- epochs= 100,
- validation_split=0.2 #分割一部分训练数据用于验证
- )
- #测试集上的效果:
-
- model.evaluate(x = x_test,y = y_test)
-
- model.predict(x_test[0:18])
Model.fit(x=X_train, y=Y_train, batch_size=32, epochs=2,callbacks=[tbCallBack], validation_data=(X_test,Y_test) )
这样每次训练完一个epoch,就会接着输出:val_loss(测试集损失)和val_acc(测试集准确率)。
# 保存模型结构 json_str = model.to_json() # 恢复模型结构 model_json = models.model_from_json(json_str)
from keras.callbacks import ModelCheckpoint
checkpoint = ModelCheckpoint(filepath=file_name(就是你准备存放最好模型的地方),
monitor='val_acc'(或者换成你想监视的值,比如acc,loss,
val_loss,其他值应该也可以,还没有试),
verbose=1(如果你喜欢进度条,那就选1,如果喜欢清爽的就选0,verbose=冗余的),
save_best_only='True'(只保存最好的模型,也可以都保存),
mode='auto'(如果监视器monitor选val_acc, mode就选'max',如果monitor选acc,mode也可以选'max',如果monitor选loss,mode就选'min'),一般情况下选'auto',
period=1(checkpoints之间间隔的epoch数))
filename:字符串,保存模型的路径
monitor:需要监视的值
verbose:信息展示模式,0或1
save_best_only:当设置为True时,将只保存在验证集上性能最好的模型
mode:‘auto’,‘min’,‘max’之一,在save_best_only=True时决定性能最佳模型的评判准则,
例如,当监测值为val_acc时,模式应为max,
当检测值为val_loss时,模式应为min。在auto模式下,评价准则由被监测值的名字自动推断。
save_weights_only:若设置为True,则只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)
period:CheckPoint之间的间隔的epoch数
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)