李宏毅机器学习作业1——预测COVID-19人数

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

目录

数据集

导包

辅助函数

设定种子

划分数据集

模型

特征选择

训练函数

配置参数

Dataloader 

开始训练

预测

预测函数

输出结果

解答

训练函数

模型

特征选择

超参数设置


数据集

训练集中给出美国某些州五天COVID-19的感染人数(及相关特征数据),测试集中给出前四天的相关数据,预测第五天的感染人数。 下载地址:ML2022Spring-hw1 | Kaggle

特征包括:
● States (37, 独热编码)
● COVID-like illness (4)
        ○ cli、ili …
● Behavior Indicators (8)
        ○ wearing_mask、travel_outside_state …
● Mental Health Indicators (3)
        ○ anxious、depressed …
● Tested Positive Cases (1)
        ○ tested_positive (this is what we want to predict)

训练集有2699行, 118列 (id + 37 states + 16 features x 5 days)
测试集有1078,117列 (without last day's positive rate)

导包

# Numerical Operations
import math
import numpy as np
from sklearn.model_selection import train_test_split

# Reading/Writing Data
import pandas as pd
import os
import csv

# For Progress Bar
from tqdm import tqdm
from d2l import torch as d2l

# Pytorch
import torch 
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader, random_split, TensorDataset

# For plotting learning curve
from torch.utils.tensorboard import SummaryWriter

辅助函数

设定种子

我的理解是,模型初始化和验证集划分都要用到seed,这里固定下来

def same_seed(seed): 
    '''Fixes random number generator seeds for reproducibility.'''
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
    np.random.seed(seed)
    torch.manual_seed(seed)
    if torch.cuda.is_available():
        torch.cuda.manual_seed_all(seed)

划分数据集

可以使用random_split函数

def train_valid_split(data_set, valid_ratio, seed):
    '''Split provided training data into training set and validation set'''
    valid_set_size = int(valid_ratio * len(data_set)) 
    train_set_size = len(data_set) - valid_set_size
    train_set, valid_set = random_split(data_set, [train_set_size, valid_set_size],
                                        generator=torch.Generator().manual_seed(seed))
    return np.array(train_set), np.array(valid_set)

也可以采取train_test_split函数

def train_valid_split(data_set, valid_ratio, seed):
    '''Split provided training data into training set and validation set'''    
    train_set, valid_set =  train_test_split(data_set, test_size=valid_ratio, random_state=seed)
    return np.array(train_set), np.array(valid_set)

模型

整个作业最重要的就是模型和特征选择,还有超参数设置。这里放原代码

class My_Model(nn.Module):
    def __init__(self, input_dim):
        super(My_Model, self).__init__()
        # TODO: modify model's structure, be aware of dimensions. 
        self.layers = nn.Sequential(
            nn.Linear(input_dim, 16),
            nn.ReLU(),
            nn.Linear(16, 8),
            nn.ReLU(),
            nn.Linear(8, 1)
        )

    def forward(self, x):
        x = self.layers(x)
        x = x.squeeze(1) # (B, 1) -> (B)
        return x

特征选择

对原代码进行了改动,因为使用了TensorDataset,它的自变量应该是tensor,所以要把train_data, valid_data, test_data变为tensor格式

def select_feat(train_data, valid_data, test_data, select_all=True):
    '''Selects useful features to perform regression'''  
    
    train_data = torch.FloatTensor(train_data)
    valid_data = torch.FloatTensor(valid_data)
    test_data = torch.FloatTensor(test_data)
   
李宏毅机器学习HW1总结 李宏毅机器学习HW1 阅读详情

相关推荐

李宏毅2023机器学习作业1--homework1

下载训练数据和测试数据导入包定义一些功能函数配置项。

入门记 2268

李宏毅机器学习_Batch Normalization

Batch Normalization (BN) 是一种深度神经网络训练中的优化方法,通过规范化每一层的输出,使其均值为0,方差为1,降低了模型对初始化权重的敏感度,加快了训练速度。BN通过减少内部协变量偏移,降低了梯度消失、爆炸的问题,使得模型能够使用更高的学习率,提高了模型的泛化能力。BN通过减少内部协变量偏移,有助于解决梯度消失和爆炸的问题,从而允许使用更高的学习率。BN在诸如卷积神经网络(CNN)、循环神经网络(RNN)和生成对抗网络(GAN)等多种深度学习架构中均有广泛应用。%5Cgamma。

m0_68477761的博客 441

2022李宏毅作业hw1—新冠阳性人员数量预测

从非常基础的内容开始,主要是我的水平也很基础。

YI_SHU_JIA的博客 1万+

机器学习】根据特征预测序列-2022李宏毅作业HW1

记录一个pytorch训练机器学习模型的代码,代码内容包括:数据库建立、数据预处理、特征分析与提取、神经模型定义、模型训练与验证、模型拟合结果输出等部分

哈哈 4258

李宏毅机器学习 hw1 boss baseline 解析

李宏毅 机器学习 hw1 boss baseline解析

qq_43613342的博客 3514

李宏毅2021机器学习HW1——记录与拓展

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分

居三木的博客 1万+

李宏毅 机器学习 HM1-COVID19 Cases Prediction (Regression)】

必须实现三个函数:init()、len()和__getitem__()init()path为数据存储路径# 读取数据为numpy数组形式 with open(path , 'r') as fp : data = list(csv . reader(fp)) data = np . array(data [ 1 : ]) [ : , 1 : ] . astype(float) # target_only为默认值,则选取所有 93 个特征作为训练数据;

m0_62133825的博客 560

ML2021Spring HW-1

这里是李宏毅老师机器学习作业一的一些训练技巧

qq_45909377的博客 620

李宏毅2021机器学习课程笔记:3步复现HW1新冠预测,RMSE从1.52优化至1.06

本文详细解析了李宏毅2021机器学习课程HW1作业的实战过程,从初始RMSE 1.52优化至1.06的全流程。通过特征工程、模型结构调整和训练策略优化,揭示了数据清洗、特征选择及模型调优的关键技巧,帮助读者掌握机器学习实战中的核心方法。

weixin_29174013的博客 263

回归实战:新冠病毒感染人数预测

本文基于李宏毅老师在 National Taiwan University 开设的 2021 春季机器学习课程作业竞赛(ML2021Spring‑hw1),使用 PyTorch 实现了对竞赛中新冠数据的预测。该项目利用包含 93 个特征的 COVID-19 数据集,通过构建深度学习回归模型来预测美国 40 个州第三天的新冠病毒检测阳性率。

Aires_L的博客 529

李宏毅机器学习2022 HW1

HW1

weixin_46321755的博客 1099

深度学习笔记5-回归实战:新冠病毒感染人数预测

说明:本篇文章文字为梅红背景部分,是两处关键的优化。没有这两个优化,模型只是 “能跑起来”,但效果差、泛化能力弱,是 “完成了任务,但没做好” 的普通代码;有这两个优化,模型有了 “数据筛选” 和 “防止过拟合” 的核心思考,符合机器学习的基础最佳实践,才是 “有思路、有效果” 的合格模型,也才符合老师对 “优化” 的预期。Data(数据模块)输入:文件地址或原始数据内容输出:结构化的数据集(X 特征,y 标签)PyTorch 实现:用封装数据,再用按批次加载Model(模型模块)定义神经网络结构输入:特征

2601_95212157的博客 625

李宏毅2021机器学习笔记——Self-attention

Self-attention CNN以后,我们要讲另外一个常见的Network架构,这个架构叫做Self-Attention,而这个Self-Attention Sophisticated Input 到目前為止,我们的Network的Input都是一个向量,不管是在预测这个,YouTube观看人数的问题上啊,还是影像处理上啊,我们的输入都可以看作是一个向量,然后我们的输出,可能是一个数值,这个是Regression,可能是一个类别,这是Classification 但假设我们遇到更復杂的问题呢,假设我们

Alex_SCY的博客 789

李宏毅深度学习——作业1-Covid-19(Regression)

从train.csv读取训练数据到内存提取特征将数据集分为训练和验证集将特征正则化。

m0_51474171的博客 2063

李宏毅机器学习》2022】作业1COVID 19 Cases Prediction (Regression)

文章目录【李宏毅机器学习》2022】作业1COVID 19 Cases Prediction (Regression)作业内容1.目标2.任务描述3.数据4.评价指标代码1.下载数据2.导入软件包3.定义公用函数(这一部分不需要修改)4.数据集5.神经网络模型6.特征选择7.训练器8.超参数设置9.加载数据10.开始训练11.可视化训练过程12.保存测试集结果13.改进方案13.1.选择更有效的特征13.2.修改模型13.3.修改优化器14. 测试结果 【李宏毅机器学习》2022】作业1COVID

qq_41502322的博客 1万+

HW1: COVID-19 Cases Prediction

李宏毅老师机器学习课程HomeWork1。根据前4天的新冠数据预测第五天。头一回接触机器学习,不会什么高深的模型,只能简单地调调参。看懂代码就是胜利(一行一行地百度)!

永远相信美好的事情即将发生 364

hw1例题-李宏毅老师课后作业

hw1李宏毅老师课程例题完成记录

mrforth的博客 681

李宏毅机器学习--课后作业HW_1

看了李宏毅老师讲的机器学习课程,真的是受益匪浅,老师讲课非常有意思,不是空洞的讲数学公式,以及抽象的理论,通过在课堂上加入游戏元素来引导大家学习,我个人觉得这种方式是很好的,而且原理讲的也很清楚,适合小白学习,这里有B站的视频链接,有兴趣的可以去看一下【李宏毅机器学习-哔哩哔哩】,因为没有字幕,所以可以配着学习笔记学(李宏毅机器学习笔记,来自于Datawhale的学习笔记,这个平台也是国内一个很好的学习AI的开源平台,有兴趣的可以去关注下)

青春正当时 1万+
上一篇: 数据集读取与划分,ImageFolder(),自定义数据集,TensorDataset,StratifiedShuffleSplit
下一篇: ‘MixedModeRenderer‘ object has no attribute ‘_raster_depth‘问题解决
iwill323
博客等级 码龄5年 96粉丝 73原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值