《PyTorch实践》-刘二大人第八讲作业 Kaggle泰坦尼克号

Kaggle泰坦尼克号 预测生还者

某站刘老师的课,想必各位deeplearner都听过,我也是刚接触不久小白一枚,想着试试课后作业加深一下理解,有很多不足之处,多多指正!

这一讲链接给大家挂上PyTorch深度学习实践——刘二大人

首先模块导入,这不用说了,懂得都懂......

import numpy as np
import pandas as pd
from torch.utils.data import Dataset
import torch
from torch.utils.data import DataLoader

准备数据集我认为是挺关键的一步,数据处理的好,在kaggle上分数会高很多,数据集这一块我也是整的挺懵的,本文的数据集'Sex'经过了提前处理,将male和female用了0和1替换。需要调整后的数据集可以私信

#第一步 准备数据集
class TitanicDataset(Dataset):
    def __init__(self,filepath):
        features=["Pclass",'Sex','Age',"SibSp", "Parch", "Fare"]#
        data=pd.read_csv(filepath)
        data = data.fillna(data['Age'].mean())#年龄这一特征有缺失值,通过求均值,并填充到NAN
        self.len=data.shape[0]

        self.x_data=torch.from_numpy(np.array(data[features]))
        self.y_data=torch.from_numpy(np.array(data["Survived"]))

    def __getitem__(self, index):
        return self.x_data[index],self.y_data[index]

    def __len__(self):
        return self.len

dataset=TitanicDataset('./train.csv')#这里数据文件我都是放在和程序同一个文件夹下面
train_loader=DataLoader(dataset=dataset,batch_size=16,shuffle=True)#batch_size可改变

模型定义这一块和老师讲的没什么不同,注意输入维度的变化就行,Model中的predict模块主要用来测试预测。

#第二步 定义模型
class Model(torch.nn.Module):
    def __init__(self):
        super(Model,self).__init__()
        self.linear1=torch.nn.Linear(6,3)
        self.linear2=torch.nn.Linear(3,1)
        self.sigmoid=torch.nn.Sigmoid()

    def forward(self,x):
        x=self.sigmoid(self.linear1(x))
        x=self.sigmoid(self.linear2(x))
        return x

    def predict(self,x):
        with torch.no_grad():
            x = self.sigmoid(self.linear1(x))
            x = self.sigmoid(self.linear2(x))
            y = []
            for i in x:
                if i > 0.5:
                    y.append(1)
                else:
                    y.append(0)
            return y

model=Model()

优化器和损失函数的构建,可以根据老师讲的官方文档学习一下其他损失函数和优化器,有不同效果

#构建损失函数和优化器
criterion = torch.nn.BCELoss(reduction='mean')
optimizer = torch.optim.SGD(model.parameters(), lr=0.005)

接下来就是训练我们的模型,这里注意输入和标签改为float类型,具体为什么我也没搞清,但是去掉后发现系统提示要float类型,其他没什么大改变

#第三步  训练模型

if __name__=='__main__':
    for epoch in range(100):
        for i,data in enumerate(train_loader,0):
            inputs,labels=data

            inputs=inputs.float()
            labels=labels.float()

            y_pred=model(inputs)
            y_pred=y_pred.squeeze(-1)#压缩维度至一维

            loss=criterion(y_pred,labels)
            print(epoch,i,loss.item())

            optimizer.zero_grad()
            loss.backward()

            optimizer.step()

测试这部分,也是参考了一下其他博主的做法,也是需要处理一下数据的,最后将预测的结果csv文件提交到kaggle即可

#第四步 测试
test_data=pd.read_csv('./test.csv')
test_data=test_data.fillna(test_data['Age'].mean())
features = ["Pclass", 'Sex',"Age", "SibSp", "Parch", "Fare"]
test=torch.from_numpy(np.array(test_data[features]))

y=model.predict(test.float())
out=pd.DataFrame({'PassengerId':test_data.PassengerId,'Survived':y})
print(out['Survived'].sum())#存活人数
out.to_csv('my_first_predict.csv',index=False)#csv文件会保存在相应的文件夹里

通过提交发现分数0.622,kaggle里下载数据里的gender_submission,我试着提交了0.7655还是有所进步,主要还是数据集的处理问题,还是不够好,当然模型也可以进一步优化,对于初学者我认为还是可以接受的

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
刘二大人PyTorch课程是一门非常有价值的课程。PyTorch是一种开源的机器学习框架,是当前深度学习领域非常流行的工具之一。这门课程由刘二大人亲自授课,拥有丰富的实战经验和深厚的理论功底,对于学习PyTorch深度学习的同学来说是一个绝佳的选择。 在这门课程中,刘二大人会从基础开始,逐渐介绍PyTorch的各个方面,包括张量操作、自动微分、搭建神经网络等内容。刘二大人解的方式深入浅出,通俗易懂,能够让学生快速上手,理解PyTorch的核心概念和使用方法。 另外,这门课程还将涵盖一些实际项目案例,通过实战演练的方式,帮助学生将理论与实践相结合,掌握如何使用PyTorch解决实际问题。刘二大人会分享一些自己在实战项目中遇到的经验和技巧,对于学生们来说是非常宝贵的学习资源。 除了授知识,刘二大人还非常注重培养学生的动手能力和解决问题的能力。他会布置一些编程练习和作业,要求学生们按时完成并提交。通过这些练习和作业,学生们可以不断巩固所学知识,提高自己的编程和解决问题的能力。 总之,刘二大人PyTorch课程是一门内容丰富、实用性强,能够帮助学生快速上手PyTorch并解决实际问题的课程。无论是对于初学者还是有一定经验的人来说,都是一个非常值得推荐的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crazy_CV_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值