文章目录
数据集介绍
1912年4月15日,泰坦尼克号在首次航行期间撞上冰山后沉没,船上共有2224名乘客和乘务人员,最终有1502人遇难。沉船导致大量伤亡的重要原因之一是,没有足够的救生艇给乘客和船员。虽然从这样的悲剧性事故中幸存下来有一定的运气因素,但还是有一定规律可循的,一些人,比如妇女、儿童和上层人士,比其他人有更高的存活可能性。泰坦尼克号事件留下了“弥足珍贵”的数据记录。如前所述,乘客的幸存率存在一定的规律,因此这些数据记录集成了Kaggle上流行的入门机器学习的数据集。同时,又由于该数据集中的记录不完整,存在缺失值、异常值等,因此也成了很典型的练习数据分析的数据集。
数据集共有891行、12列。每条数据有12个特征,含义如下:
PassengerId
乘客IDSurvived
获救情况(1为获救,0为未获救)Pclass
乘客等级(1/2/3等舱位)Name
乘客姓名Sex
性别Age
年龄SibSp
堂兄弟/妹个数Parch
父母与小孩个数Ticket
船票信息Fare
票价Cabin
客舱Embarked
登船港口
数据处理
加载数据集
import torch
import torch.nn as nn
import pandas as pd
import matplotlib.pyplot as plt
from torch.utils.data import Dataset, DataLoader
# 加载CSV文件
train_df = pd.read_csv(r"D:\kaggle\Titanic\train.csv")
test_df = pd.read_csv(r"D:\kaggle\Titanic\test.csv")
PassengerId = test_df['PassengerId']
查看数据信息
通过查看数据集信息,分析如何对数据集进行处理。
train_df.info()
从信息中我们可以看出哪些特征有缺失值,哪些特征是非数值型特征,这样我们就能对相应的特征进行处理。
数据集合并
将训练集和测试集合并,方便后面的数据处理。
full_df = pd.concat([train_df, test_df], ignore_index=True, sort=False)
缺失值处理
full_df['Embarked'] = full_df['Embarked'].fillna(full_df['Embarked'].mode()[0])
full_df['Age'] = full_df['Age'].fillna(full_df['Age'].mean())
因为 Embarked
是非数值型特征,而 Age
是数值型特征,我们用 Embarked
的众数,Age
的平均值来填充缺失值。
特征工程
我们可以将SibSp
(船上直系兄弟姐妹和配偶的数量)和 Parch
(船上父母和子女的数量)相加,并加上1(代表乘客本人),以得到每个乘客的家庭规模,作为一个新的特征。
full_df['Family'] = full_df['SibSp'] + full_df['P