PyTorch深度学习(B站刘二大爷)第八讲作业——Kaggle网站泰坦尼克号Titanic
kaggle没有notebook的文件夹系统让我很不满意,决定以后把自己练习的过程都搬上csdn。
目录
1.引入库
2.准备数据集
3.定义模型
4.调用优化器和损失函数
5.run 训练集
6.用训练集的参数run 测试集
1.引入库
import numpy as np
import pandas as pd
import torch
from torch.utils.data import Dataset #抽象类 被继承
from torch.utils.data import DataLoader #加载数据
2.准备数据集
class TitanicDataset(Dataset):def __init__(self,filepath):xy = pd.read_csv(filepath) self.len = xy.shape[0] # xy.shape()可以得到xy的行列,[0]取行,[1]取列#选取需要的特征feature = ["Pclass", "Sex", "SibSp", "Parch", "Fare"]# xy[feature]的类型是DataFrame,先进行独热表示,然后转成array,最后转成tensor用于进行矩阵计算。self.x_data = torch.from_numpy(np.array(pd.get_dummies(xy[feature]))) self.y_data = torch.from_numpy(np.array(xy["Survived"]))def __getitem__(self,index): #魔法函数,支持 dataset[index]return self.x_data[index],self.y_data[index]def __len__(self): #魔法函数 支持len()return self.len# 实例化自定义类,并传入数据地址
dataset = TitanicDataset('../input/titanic/train.csv')# num_workers是否要进行多线程服务,num_worker=2 就是2个进程并行运行
# 采用Mini-Batch的训练方法
train_loader = DataLoader(dataset = dataset,batch_size = 32,shuffle = True,num_workers=2)#双线程
3.定义模型
class Model(torch.nn.Module): # 设置要从torch神经网络模块中要继承的模型函数def __init__(self):super(Model,self).__init__() # 对继承于torch.nn的父模块类进行初始化self.linear1 = torch.nn.Linear(6,3)#输入6 输出3;五个特征转化为了6维,因为get_dummies将性别这一个特征用两个维度来表示,即男性[1,0],女性[0,1]self.linear2 = torch.nn.Linear(3,1)self.sigmoid = torch.nn.Sigmoid() #调用nn下的模块 作为运算模块#正向传播 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(): #上下文管理器,被该语句 wrap 起来的部分将不会track 梯度。x=self.sigmoid(self.linear1(x))x=self.sigmoid(self.linear2(x))y=[]# 根据二分法原理,划分y的值for i in x:if i >0.5:y.append(1)else:y.append(0)return ymodel = Model()
4.调用优化器和损失函数
criterion = torch.nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(),lr=0.01)
5.run 训练集
# 防止windows系统报错
if __name__ == '__main__':# 采用Mini-Batch的方法训练要采用多层嵌套循环# 所有数据都跑100遍for epoch in range(100):# data从train_loader中取出数据(取出的是一个元组数据):(x,y)# enumerate可以获得当前是第几次迭代,内部迭代每一次跑一个Mini-Batchfor i, data in enumerate(train_loader, 0):#准备数据 inputs获取到data中的x的值,labels获取到data中的y值inputs, labels = datainputs = inputs.float()labels = labels.float()#正向传播y_pred = model(inputs)y_pred = y_pred.squeeze(-1) ## 前向输出结果是[[12],[34],[35],[23],[11]]这种,需要将这个二维矩阵转换成一行[12,34,35,23,11]loss = criterion(y_pred, labels)print(epoch, i, loss.item())#反向传播optimizer.zero_grad()loss.backward()#更新optimizer.step()
6.用训练集的参数run 测试集
#测试集数据准备
test_data = pd.read_csv('../input/titanic/test.csv') #读取数据
feature = ["Pclass", "Sex", "SibSp", "Parch", "Fare"] #和训练集保持特征的一致性 选取相同的项
test = torch.from_numpy(np.array(pd.get_dummies(test_data[feature]))) #与训练集保持一致# 进行预测,并将结果以CSV格式保存
y = model.predict(test.float()) #浮点数
outputs = pd.DataFrame({'PassengerId': test_data.PassengerId, 'Survived': y})
outputs.to_csv('predict_titantic', index=False) # index=False 代表不保存索引#观察一下结果
outputs.head()
PyTorch深度学习(B站刘二大爷)第八讲作业——Kaggle网站泰坦尼克号Titanic相关推荐
- 《PyTorch深度学习实践》刘二大人 第2讲 线性模型——使用双层for循环完成课后作业
一.课堂代码 import numpy as np import matplotlib.pyplot as pltx_data = [1.0,2.0,3.0] y_data = [2.0,4.0,6. ...
- PyTorch深度学习入门与实战(案例视频精讲)
作者:孙玉林,余本国 著 出版社:中国水利水电出版社 品牌:智博尚书 出版时间:2020-07-01 PyTorch深度学习入门与实战(案例视频精讲)
- PyTorch深度学习实践(b站刘二大人)P6讲 逻辑斯蒂回归 Logistic Regression
1.分类任务的数据集 ① The MNIST Dataset:handwritten digits Training set: 60,000 examples, Test set: 10,000 ex ...
- PyTorch 深度学习实践 GPU版本B站 刘二大人第11讲卷积神经网络(高级篇)GPU版本
第11讲 卷积神经网络(高级篇) GPU版本源代码 原理是基于B站 刘二大人 :传送门PyTorch深度学习实践--卷积神经网络(高级篇) 这篇基于博主错错莫:传送门 深度学习实践 第11讲博文 仅在 ...
- Pytorch 深度学习实战教程(二):UNet语义分割网络
本文 GitHub https://github.com/Jack-Cherish/PythonPark 已收录,有技术干货文章,整理的学习资料,一线大厂面试经验分享等,欢迎 Star 和 完善. 一 ...
- Pytorch深度学习实战教程(二):UNet语义分割网络
1 前言 本文属于Pytorch深度学习语义分割系列教程. 该系列文章的内容有: Pytorch的基本使用 语义分割算法讲解 如果不了解语义分割原理以及开发环境的搭建,请看该系列教程的上一篇文章< ...
- Pytorch深度学习实践(b站刘二大人)P10讲 (CNN卷积神经网络基础篇)
1.全连接网络 指的是网络里面用的都是线性层,如果一个网络全都由线性层串行连接起来,就叫做全连接网络 在线性层里面输入和每一个输出值之间都存在权重,即每一个输入节点都要参与到下一层输出节点的计算上,这 ...
- pytorch adagrad_【学习笔记】Pytorch深度学习—优化器(二)
点击文末 阅读原文,体验感更好哦! 前面学习过了Pytorch中优化器optimizer的基本属性和方法,优化器optimizer的主要功能是 "管理模型中的可学习参数,并利用参数的梯度gr ...
- 【PyTorch深度学习实践】P9 kaggle otto商品分类作业(含注释)
<PyTorch深度学习实践>-刘二大人 Otto Group Product Classification作业 将商品进行十分类,输入为93个特征10个类别的商品数据集,输出为预测数据集 ...
- 【Pytorch深度学习实践】B站up刘二大人之SoftmaxClassifier-代码理解与实现(8/9)
这是刘二大人系列课程笔记的倒数第二个博客了,介绍的是多分类器的原理和代码实现,下一个笔记就是basicCNN和advancedCNN了: 写在前面: 这节课的内容,主要是两个部分的修改: 一是数据集: ...
最新文章
- Ansible05-部署文件
- 深度学习的seq2seq模型——本质是LSTM,训练过程是使得所有样本的p(y1,...,yT‘|x1,...,xT)概率之和最大...
- glide 下载golang.org包问题
- python开发的前景_python开发前景怎么样
- 多款 Linux 发行版悄然放弃支持 PowerPC
- vb.net2019-多线程并行计算(6)
- 网络安全系列之三十五 缓冲区溢出
- 记录我对Padding Oracle攻击的分析和思考之抄写
- SAP Data Intelligence API执行出错的排错之道
- gesturedetector.java_android使用gesturedetector手势识别示例分享
- 不止代码:最长上升序列
- 5g pdu session_运营商下架4G套餐,用户被5G!
- 解决“计划任务不存在的问题”方法
- Python3学习阶段记录(Python3.8安装)
- 18. JavaScript event 对象
- mysql客户端navicat连接数据库
- 电厂的计算机人员职位结构简图,我们电厂汽轮机结构示意图(老师傅整理)
- 在EXCEL中生成服从三角分布随机数的方法
- 基于词频的文件相似度
- SQL计算个人所得税函数