1. Kobe投篮预测

1.1. 场景背景

2016年4月12日,科比结束了他传奇的职业生涯。他在最后一场比赛中,独得60分,帮助湖人队取得了胜利。从17岁入选 NBA开始到此刻光荣退役,科比在他的职业生涯中获得了无数的荣誉。通过使用科比职业生涯中投中和投失的数据,您能预测他的哪些投篮能命中篮筐吗?通过本案例,您可以训练一个分类模型预测科比的某次投篮是否会投进。本案例非常适合实践特征工程和分类的知识。

1.2. 数据集介绍

该案例的训练数据包含科比在20年职业生涯中所尝试的每个投篮的具体特征信息:动作、位置、日期等。

数据集字段信息如下:

字段名取值类型取值举例
action_type枚举Jump Shot/Running Jump Shot/Layup Shot/Reverse Dunk Shot/Slam Dunk Shot
combined_shot_type枚举Jump Shot/Layup/Dunk
game_event_id数值1/2/3/……
game_id数值20000012/20000047/……
lat数值33.9343/34.0163/……
loc_x数值-157/138/0/……
loc_y数值175/-11/0/……
lon数值-118.1028/-118.2938/……
minutes_remaining数值0/1/2/3/4/5/6/7/8/9/10/11
period数值1/2/3/4/5/6/7
playoffs数值0/1
season字符串2004-5-1/2007-8-1/2015-16/……
seconds_remaining数值0~59
shot_distance数值0/45/79/……
target枚举0/1
shot_type枚举2PT Field Goal/3PT Field Goal
shot_zone_area枚举Right Side(R)/Left Side(L)/Left Side Center(LC)/Right Side Center(RC)/Center©/Back Court(BC)
shot_zone_basic枚举Mid-Range/Restricted Area/In The Paint (Non-RA)/Above the Break 3/……
shot_zone_range枚举16-24 ft./8-16 ft./Less Than 8 ft./24+ ft./……
team_id数值1610612747
team_name字符串Los Angeles Lakers
game_date日期2000-10-31/2014-12-21/……
matchup字符串LAL vs. IND/LAL vs. SAC/LAL vs. UTA/LAL vs. SAC/……
opponent字符串SAC/PHX/……
shot_id数值1/2/3/4/5/……

数据集具体内容抽样展示如下:

2.3. 科比投篮预测 - 图1

1.3. 案例相关材料

相关材料下载链接:Kobe 投篮预测 Demo 材料。该材料包含以下文件:

  • classifier.py:分类模型的分类器文件,用于模型分类
  • data_cleaning.py:数据预处理阶段的数据清洗代码
  • data_transformation.py:数据特征转换代码
  • feature_selection.py:数据特征选择代码
  • kobe.csv:kobe投篮具体特征信息的数据集文件 请用户下载该案例所需全部材料,并保存到本地以便后面搭建工作流需要。

1.4. 整体流程

该 Demo 的整体流程如下:

2.3. 科比投篮预测 - 图2

1.5. 详细流程

一. 上传数据

本案例通过本地数据节点上传所需数据:

  • 在智能钛机器学习平台控制台的左侧导航栏,选择【输入】>【数据源】>【 本地数据】,拖入画布中

  • 选中【本地数据】,右侧栏会出现节点信息,点击算法IO参数中的【数据文件】 上传【案例相关材料】的kobe.csv

2.3. 科比投篮预测 - 图3

2.3. 科比投篮预测 - 图4

  • 修改 COS 路径 目标 COS 路径本为自动生成,无需修改,但支持用户自定义修改,如此处修改为${cos}/kobe_predict/

    注意:请务必复制修改此处“目标COS路径”,否则后续运行系统会报找不到文件的错误

2.3. 科比投篮预测 - 图5

二. 数据清洗

此数据清洗功能由【案例相关材料】中的清洗代码data_cleaning.py提供,所以此处主要向用户展示如何将自行编写的代码融入工作流中:

  • 在智能钛机器学习平台控制台的左侧导航栏,选择【组件】>【深度学习】>【 TensorFlow】
  • 将【 TensorFlow】拖入画布中,并右键单击重命名为“数据清洗”
  • 填写参数:

    • 【组件参数】中的“程序脚本”:上传文件 data_cleaning.py(详见【案例相关材料】)

    • Python 版本:选择 Python 3.5

    • 其余参数均可默认

2.3. 科比投篮预测 - 图6

2.3. 科比投篮预测 - 图7

三. 特征转换

  • 在智能钛机器学习平台控制台的左侧导航栏,选择【组件】>【深度学习】>【 TensorFlow】
  • 将【 TensorFlow】拖入画布中,并右键重命名为“特征转换”
  • 填写参数:

    • 程序脚本:上传文件 data_transformation.py(详见【案例相关材料】)

    • Python版本:选择 Python 3.5

    • 其余参数均可默认

2.3. 科比投篮预测 - 图8

2.3. 科比投篮预测 - 图9

四. 特征选择

此特征选择功能亦由【案例相关材料】中的相关代码data_selection.py提供:

  • 在智能钛机器学习平台控制台的左侧导航栏,选择【组件】>【深度学习】>【TensorFlow】
  • 将【TensorFlow】拖入画布中,并右键单击重命名为“特征选择”
  • 填写参数:

    • 程序脚本:上传文件 feature_selection.py(详见【案例相关材料】)

    • Python版本:选择 Python 3.5

    • 其余参数均可默认

2.3. 科比投篮预测 - 图10

五. 分类器

此分类器功能亦由【案例相关材料】中的相关代码classifier.py提供:

  • 在智能钛机器学习平台控制台的左侧导航栏,选择【组件】>【深度学习】>【TensorFlow】
  • 将【TensorFlow】拖入画布中,并右键重命名为“分类器”
  • 填写参数:

    • 程序脚本:上传文件 classifier.py(详见【案例相关材料】)

    • Python版本:选择 Python 3.5

    • 其余参数均可默认

2.3. 科比投篮预测 - 图11

六. 模型评估

  • 在智能钛机器学习平台控制台的左侧导航栏,选择【输出】>【模型评估】>【BinaryEvaluator】

  • 将【BinaryEvaluator】拖入画布中

  • 填写参数:

算法 IO 参数配置:

  • 输入数据:${cos}/kobe_predict/result.csv

  • 标签列:0

  • 得分列:1

  • 抽样率:1.0

  • 并行数:10

2.3. 科比投篮预测 - 图12**

算法参数和资源参数配置

  • 预测阈值:0.5
  • 其余参数均可默认

2.3. 科比投篮预测 - 图13

七. 运行调度及训练进度查看

详情请参考 运行工作流

运行成功后,将光标放置于【BinaryEvaluator】,画布中将展示工作流评估结果:

2.3. 科比投篮预测 - 图14