# NOAI2025教学测试第1题：球星投篮命中率预测任务

简介：此为NOAI2024第二轮试题的第1题，也是NOAI2025教学测试试题

## 一. 题目概述

​	给定一份球星投篮的csv文件，存储在训练集“data_train.csv”中。

​	其中有意义的变量命名如下：

​	loc_x: 投篮时球星在球场上的横向位置，已经归一化，不用管单位；

​	loc_y: 投篮时球星在球场上的纵向位置，已经归一化，不用管单位；

​	minutes_remaining: 当前节剩余的分钟数，已经归一化，不用管单位；

​	shot_distance: 投篮距离篮筐的距离，已经归一化，不用管单位；

​	shot_made_flag: 投篮是否命中，如果命中，值为1，否则值为0；

​	shot_id: 样本唯一标识；

​	现在希望你能够根据该球星的历史数据，建立模型预测该球星的投篮命中情况。训练集有20000个数据，测试集约为5000个数据，格式与训练集类似，比赛选手在比赛过程中无法访问。

 

## 二.  数据集

​	训练集地址：[训练集](https://bohrium.dp.tech/competitions/5135119121?tab=datasets)

​    

## 三.  任务

请使用PyTorch实现多层感知机（神经网络）模型，用于预测选手在不同位置投篮是否能够命中。

具体要求如下：

（1）输入为2个特征（loc_x，loc_y），输出为1个标签（shot_made_flag），1表示投篮命中，0表示投篮没有命中；

（2）只能使用线性层和线性层后的激活函数，且最多只能使用3个线性层；请直接搭建神经网络，不要使用nn.sequential()嵌套，评分系统内无法检测到nn.sequential内的网络结构，会直接判0分；

（3）激活函数只能从nn.Linear, nn.ReLU, nn.Sigmoid, nn.Tanh, nn.ELU, nn.LeakyReLU, nn.PreLU中选择；

（4）每个线性层最多有8个神经元；

（5）损失函数（Loss Function）、优化器（Solver）、学习率（Learning Rate）可以自由选取；


## 四. 提交

请提交submission.zip的压缩文件，解压后包含模型文件submission_model.py和模型的参数文件submission_dic.pth。具体要求如下：

（1）将模型的class定义和需要的先导库，保存在submission_model.py中；

（2）将训练好的模型参数保存在submission_dic.pth中，评分时会加载模型参数；

（3）可以参考baseline.ipynb的方法在平台上生成submission.zip文件进行提交；也可以将数据集下载到本地，训练好模型后再打包成一个submission.zip文件再提交。

​	注：由于平台正在调试，提交.zip文件时请选择本地上传。

​	baseline.ipynb地址：[NOAI2025教学测试第1题_baseline](https://bohrium.dp.tech/notebooks/38659612597/)



## 五. 评分

（1）当神经网络的线性层个数和神经元数目满足要求时，分数为测试集的准确率；

（2）当神经网络的线性层个数和神经元数目不满足要求时，分数为0。

备注：A榜使用测试集中50%的数据，在比赛过程中可以实时显示，帮助比赛选手调试模型；B榜使用测试集中剩下50%的数据，在比赛结束后进行计算，B榜的分数为最终分数。