An open API service indexing awesome lists of open source software.

https://github.com/jlzhong23/seedcup_prelim2017_final

2017种子杯初赛
https://github.com/jlzhong23/seedcup_prelim2017_final

cnn elo python

Last synced: 5 months ago
JSON representation

2017种子杯初赛

Awesome Lists containing this project

README

          

# 2017种子杯初赛
### CNN模型图
![](http://images2015.cnblogs.com/blog/1042406/201703/1042406-20170301104438813-230726230.png)
### 使用语言及运行环境
Python 2.7.13 on Linux
需要模块:numpy,pandas,tensorflow
### 代码相应接口及变量含义
1、Data_get.py生成所需数据
2、CNN.py对数据进行训练
3、UseModel.py生成预测文件Data_get.py
文件作用:整理相关数据,获取训练数据集文件以及测试数据集文件
生成文件说明
  'Team_elo.csv'队伍Elo天梯积分数据
  'TeamSRS.csv'队伍平均胜率,得分,SRS等数据
  'TeamTotal.csv'队伍三分命中,出手,两分命中,出手等数据
  'TeamData_win.csv'训练集中队伍比赛胜负情况数据
  'TeamDataTrain.csv'最终训练使用数据
  'TeamDataTest.csv'需要预测比赛的相关数据
文件使用说明:直接python2 运行文件
#### CNN.py
文件说明:训练模型搭建,使用一层卷积层,一层池化,一层全连接隐藏神经元,一层全连接输出

  • 卷积层
  • :使用3×3卷积窗口,一个输入通道,64个卷积核
  • 池化层
  • :2×2池化窗口,步长为1,不改变深度
  • 隐藏层
  • :128个隐藏神经元
  • 输出层
  • :2个输出,分别代表客场,主场胜负
    文件使用:直接python2 运行文件
    #### UseModel.py
    文件说明:训练好的模型使用,分为图搭建,训练好的模型导入,预测,预测结果生成文件几块
    文件使用:直接python2运行文件
    ### 对于模型参数的选择以及优化思路
    #### 参数选择:
  • 输入参数的选取
  • :对每一场比赛,我们有两支队伍,对每只队伍,我们提取了30个特征信息作为参数,最终每场比赛有60个特征参数。
  • 卷积层参数选取
  • :卷积层的参数选取主要在卷积核的个数选取上,由于参数量不大,所以选取3×3的卷积核,在个数上,卷积核个数选取小于60的话,由于我们选取队伍参数之间的关联性不大,所以,60个左右的参数较为合适。
  • 池化层参数
  • :池化过程中,我们将卷积得到的图在橫纵坐标上压缩两倍,让深度不变,降低接下来全连接的计算量。
  • 隐藏层
  • :通过池化到达隐藏层的参数个数为3×5×64,由于输出元个数为2,相较于输入参数个数较小,所以我们选择使用128个隐藏神经元个数,大概为输出参数两倍。
  • 输出层
  • :输出层使用两个神经元,分别代表客场与主场队伍的胜负情况。
    #### 优化思路:
  • 数据归一处理
  • :由于最初输出为主场胜的置信度,是一个0-1之间的数,且在输入参数中存在负数情况,所以选取将数据线性归一到-1-1之间。
  • 边缘性处理
  • :为了防止极个别数据,在归一后运算后导致值波动太大导致最后数据溢出的情况的发生,我们通过对这些太小数据映射处理解决。
  • 防止过拟合化
  • :使用dropout提高数据泛化程度
  • 优化器
  • :因为我们需要输出结果的稳定性,泛化性,希望最终结果相对收敛,所以我们没有选择常见的几种梯度下降算法,选择了自适应性的Adam来进行优化。
    ### 开发者

  • slaxes

  • sunhaohai