问题
数据来源于Kaggle,通过一组列有泰坦尼克号灾难幸存者或幸存者的训练样本集,我们的模型能否基于不包含幸存者信息的给定测试数据集确定这些测试数据集中的乘客是否幸存。
代码与数据分析
导入必要的包和titanic数据
数据集基本信息
将数据分为不同类别,分别为类别型数据和数字型数据
- 类别数据:Survived, Sex, and Embarked. Ordinal: Pclass
- 数字型数据:Age, Fare. Discrete: SibSp, Parch
数据分布来看: - 大多数乘客(75%)没有和父母或孩子一起旅行
- 近30%乘客有兄弟姐妹或配偶
- 票价差异很大,只有少数乘客(<1%)支付了512美金的票价
- 年龄较大的乘客数据较少(1%)
提出假设
- 关联:各个特征与存货的相关性是如何
- 填充缺失值:对 Age 和 Embarked 进行缺失值填充
- 清洗、处理、剔除字段:Ticket由于高重复率,Cabin仓位空值过多,PassengerId与存活无关,Name数据不标准,都需要处理后进行剔除
- 添加字段:我们可以根据 Parch 和 SibSp 创造一个关于家庭成员数量的字段;可以从名字中提取特征形成新特征;可以从 Age 和 Fare 创造分层,使数据更具有机器学习意义
- 分类:猜测女性(Sex = female)、儿童(Age<自定义值)、上层人士(Pclass=1)更有可能存活
通过pandas pivot进行简单分析
Pclass 等级越低,存活率越低
女性存活率远高于男性
SibSp与存活率很分散,可能需要进行重构新字段
通过可视化进行分析
数据发现
- 婴儿(Age < 4)存活率很高
- 年龄最大的乘客存活了下来
- 大多数15-25岁之间的乘客没有存活下来
- 大多数乘客处于15-35岁之间
决策
通过对以上数据分析,可以得到以下决策
- 我们应该对年龄进行缺失值填空、分层
数据相关性
结合多个特征来识别相关性