本节没有课程传送门,算是博主根据老师讲的内容做的作业。
数据集传送门 Kaggle Titanic dataset
这里对数据集进行了一些处理,首先第一行不能是属性名而非特征,不能使用所以在第一个表格
前加了'#',另外有一些无用特征比如乘客姓名这里选择了直接跳过,最后在处理过发现np.loadtxt
函数不能识别'str'类型数据,所以空数据用‘-1’进行了替换,数据集最后一项只有三个类别,所以用
'0','1','2'标记替换。下面是处理后的训练集截图
import torch
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
import numpy as np
import matplotlib.pyplot as plt
#程序运行过程会有一些警告,这个没问题。
class titanicDataset(Dataset):
def __init__(self,filepath):
x = np.loadtxt(filepath, delimiter=',', dtype=np.float32, usecols=(2, 5, 6, 7, 8, 10, 12))
#上面只取有效特征,类似人名,票号等唯一特征对训练没用就没取。
y = np.loadtxt(filepath, delimiter=',', dtype=np.float32, usecols=1)
# 'delimiter'为分隔符
y = y[:, np.newaxis]
#这里增加一维,不然计算loss的时候维度不同会报错
self.x_data = torch.from_numpy(x)
self.y_data = torch.from_numpy(y)
self.len = x.shape[