问题描述
泰坦尼克号失事,有幸存的乘客,也有遇难的乘客,现有部分乘客的信息,年龄,性别,船票等,有些人比其他人更容易生存,例如婦女,儿童和上流社会。根据所给出的训练集,完成对哪些人可能存活的分析,在test.csv中给出了带测试的数据集,预测这些乘客是否可以幸存
工具
scikit-learn
(由于此问题是个明显的二元分类问题,故可采用logistic回归模型)
pandas
numpy
seaborn
matplotlib
Jupyter Notebook
导入工具:
流程
读取训练数据与测试数据
数据可视化与简要分析
查看训练集中的前5条乘客信息,可以看到每条信息共有12个变量,即
1.Survival:是否生还,0表示未生还,1表示生还
2.Pclass:船票种类,折射处乘客的社会地位,1表示上层阶级,2表示中层阶级,3表示底层阶级(猜测与是否生还有关)
3. Name:乘客姓名(明显不能作为特征数据,与是否生还无关)
4.Sex:性别,男性为male,女性为female
5.Age:年龄,不满1岁的年龄(根据题目描述妇孺存活率可能会更大)
6.SibSp:为小数该乘客同船的兄弟姐妹及配偶的数量
7.Parch:该乘客同船的父母以及儿女的数量
8.Ticket:船票编号(明显不能作为特征数据)
9.Fare:买票的费用
10.Cabin:船舱编号(明显不能作为特征数据)
11.Embarked:上船地点
12. PassengerId:乘客编号
查看数据的统计信息:
有所得的统计信息可知,部分乘客的部分信息有缺失,比如年龄,上船地点,船费等,稍后将在数据处理阶段用中位数补全缺失的值。
绘制部分特征数据的柱状图
由柱状图,初步猜测年龄、兄弟配偶数、父母子女数、票费、船票种类与是否生还有关;
进行进一步的分析:
(1)年龄与存活的关系
由此可以看出年龄层次在[0,10]越可能存活,即年龄可作为预测模型的一个特征变量
(2)判断父母子女数与是否存活的关系
由条形图,父母子女数对生存率影响不是太大,但仍然保留此特征变量
(3)判断兄弟配偶数与是否存活的关系
由图知,有1~2个兄弟姐妹的乘客将会比较容易存活;
(4)判断船票种类与是否存活的关系
由图可以得出,1级船票的乘客生存率相对较高,即船票等级也会影响存活率
(5)判断性别与是否存活的关系
由此很明显可以看出女性将会比男性的生存率高;
(6)判断上船地点与是否存活的关系
由图可知,在C地上船的乘客将要比其他地方上船的乘客生存率更高一些,因此可以作为特征变量;
数据处理
在对数据进行简要的分析,确定好输入学习算法的特征变量后,要对定性的特征进行定量转换并且对缺失的数据进行补全
对性别,上船地点进行定量转换:
训练数据
数据处理完毕后,根据选择出的特征来训练模型。由于这是一个二分类的问题,使用Logistic回归算法:
测试数据处理与预测
查看测试数据集的头十条信息:
对测试数据进行相同的预处理
将测试数据放入逻辑回归模型中进行预测:
将预测数据按kaggle要求的格式提交:
查看所预测的所预测乘客是否生还: