ML2023Spring - HW01 相关信息:
课程主页
课程视频
Kaggle link
Sample code
HW01 视频 可以在做作业之前看一部分,我摸索完才发现视频有讲 Data Feature :(
HW01 PDF
个人完整代码分享: GitHubP.S. 即便 kaggle 上的时间已经截止,你仍然可以在上面提交和查看分数。但需要注意的是:在 kaggle 截止日期前你应该选择两个结果进行最后的Private评分。
每年的数据集size和feature并不完全相同,但基本一致,过去的代码仍可用于新一年的 Homework
[toc]
任务目标(回归)
- COVID-19 daily cases prediction: COVID-19 每天的病例预测
- 训练/测试数据大小:3009/997(每一年的homework 可能不同)
性能指标(Metric)
- 均方误差 Mean Squared Error (MSE)
数据解析
- covid_train.txt: 训练数据
- covid_test.txt: 测试数据
数据大体分为三个部分:id, states: 病例对应的地区, 以及其他数据
id: sample 对应的序号。
states: 对 sample 来说该项为 one-hot vector。从整个数据集上来看,每个地区的 sample 数量是均匀的,可以使用
pd.read_csv('./covid_train.csv').iloc[:,1:34].sum()
来查看,地区 sample 数量为 88/89。其他数据: 这一部分最终应用在助教所给的 sample code 中的 select_feat。
Covid-like illness (5) 新冠症状
- cli, ili …
Behavier indicators (5) 行为表现
- wearing_mask、travel_outside_state … 是否戴口罩,出去旅游 …
Belief indicators (2) 是否相信某种行为对防疫有效
- belief_mask_effective, belief_distancing_effective. 相信戴口罩有效,相信保持距离有效。
Mental indicator (2) 心理表现
- worried_catch_covid, worried_finance. 担心得到covid,担心经济状况
Environmental indicators (3) 环境表现
- other_masked_public, other_distanced_public … 周围的人是否大部分戴口罩,周围的人是否大部分保持距离 …
Tested Positive Cases (1) 检测阳性病例,该项为模型的预测目标
- tested_positive (this is what we want to predict) 单位为百分比,指有多少比例的人
数据下载
To use the Kaggle API, sign up for a Kaggle account at https://www.kaggle.com. Then go to the ‘Account’ tab of your user profile (
https://www.kaggle.com/<username>/account
) and select ‘Create API Token’. This will trigger the download ofkaggle.json
, a file containing your API credentials. Place this file in the location~/.kaggle/kaggle.json
(on Windows in the locationC:\Users\<Windows-username>\.kaggle\kaggle.json
- you can check the exact location, sans drive, withecho %HOMEPATH%
). You can define a shell environment variableKAGGLE_CONFIG_DIR
to change this location to$KAGGLE_CONFIG_DIR/kaggle.json
(on Windows it will be%KAGGLE_CONFIG_DIR%\kaggle.json
).
gdown
的链接总是挂,可以考虑使用 kaggle 的 api,流程非常简单,替换https://www.kaggle.com/<username>/account
,然后点击 Create New API Token
,将下载下来的文件放去应该放的位置:
- Mac 和 Linux 放在
~/.kaggle/kaggle.json
- Windows 放在
C:\Users\<Windows-username>\.kaggle\kaggle.json
pip install kaggle |
Sample code 主体部分解析
Some Utility Functions
def same_seed(seed): |
Dataset
class COVID19Dataset(Dataset): |
__getitem__()实际应用于 dataloader 中,详细可见下图(图源自 PyTorch Tutorial PDF)
Neural Network Model
这部分我做了简单的修改,以便于后续调参
class My_Model(nn.Module): |
Feature Selection
这部分可以使用 sklearn.feature_selection.SelectKBest 来进行特征选择。
具体代码如下(你可能需要传入 config):
from sklearn.feature_selection import SelectKBest, f_regression |
Training Loop
def trainer(train_loader, valid_loader, model, config, device): |
Baselines
根据作业 PDF 中的提示:
- Simple Baseline (1.96993)
- 运行所给的 sample code。
- Medium Baseline (1.15678)
- 特征选择,简单手动的选择你认为关联性较大的特征。
- Strong Baseline (0.92619)
- 尝试不同的优化器(如:Adam)。
- 应用 L2 正则化(SGD/Adam … 优化器参数中的 weight_decay)
- Boss Baseline (0.81456)
- 尝试更好的特征选择,可以使用 sklearn.feature_selection.SelectKBest。
- 尝试不同的模型架构(调整 my_module.layers)
- 调整其他超参数
个人完整代码分享: GitHub | Gitee | GitCode