项目实战二:利用Python实现Kaggle经典案例之泰坦尼克号乘客生存预测

2020-07-17 14:16:49 浏览数 (1)

上次讲了利用Python实现波士顿房价预测的回归模型,这时小明一脸懵逼,心想回归模型是什么鬼??️?

(咳咳,敲黑板~科普一下,在机器学习中,根据目标变量(因变量)是否是连续值可以分为回归和分类两种模型)本次就进行一个简单的二分类模型介绍——泰坦尼克号乘客生存预测。

首先还是先导入接下来要用到的Python包

然后导入数据集,因为本次用到的数据集我已预保存到本地电脑,直接读取数据进来即可(数据集下载链接https://www.kaggle.com/c/titanic/data),同样先查看训练集数据长什么样

PassengerId 乘客编号 Survived 是否幸存 Pclass 船票等级 Name 乘客姓名 Sex 乘客性别 Age 乘客年龄 SibSp 兄弟姐妹/配偶数量 Parch 父母/子女数量 Ticket 船票号码 Fare 船票价格 Cabin 船舱 Embarked 登录港口

因为Titanic这个数据集在下载前已经分好了训练集与测试集,我们一起来看下数据的整体情况以便后面做相应处理。

可以看到这次两个数据集存在缺失值(肿么办,老shi我好方?)不用怕~可以看到训练集是年龄和船舱两个特征有缺失值,测试集是年龄、船舱和船票价格三个特征存在缺失值,均无异常值。

我们先把训练集和测试集合并起来,方便后面一起做数据处理和特征工程

数据合并完毕,我们看下目标变量Survived数据分布情况,分析正负样本平衡性

0 表示未获救,1 表示获救

可以看到正负样本不是十分平衡,但在这里问题也不大。然后我们再看下各特征数据分布情况,这里只显示了数值型变量

看各特征相关性,这里默认采用皮尔逊相关系数,分类变量的相关性这里也没显示出来

接下来进行缺失值处理,首先对年龄Age进行缺失值填充,这里我们暂时用所有乘客的年龄中位数去填充

登陆港口Embarked用众数填充

而船票价格Fare一般来说与船票等级和登录港口有关,这里我们暂时用按这两者分组后的船票均值来填充

最后是船舱,因为前面我们看到这个特征缺失值占比50%以上,不好处理,所以这里先不填充后面直接剔除处理(老shi你这是不是太简单粗暴了一点~?是的!)

接下来是特征工程,首先我们简单分析下各特征发现,SibSp兄弟姐妹/配偶数量与Parch父母/子女数量这两个特征比较相近,可以合并得到一个新变量,即家庭成员数量,另外在西方一般可以根据姓名称呼来判断其社会地位高低,所以我们可以对Name姓名这个特征做一个简单的分类处理,得到一个新特征替换原来特征,这样可能对获救乘客的影响比原来的特征强(老shi,你怎么这么机智又逗逼,让我好嫉妒啊,哈哈~)

然后我们把没有用的特征先剔除再对分类特征数值化后再喂到模型中去

到此数据预处理及特征工程已经简单处理完毕,我们来看下处理后的数据情况

可以看到数据中已经没有缺失值且各特征值均已实现数值化(这里比个,王祖蓝完美兰花指,脑补?)接下来我们还是按照一开始的方式进行数据划分,前面891条是训练集,最后418条是测试集

终于到最鸡冻的时刻啦?,我们把数据喂到逻辑回归模型(虽然叫回归,但其实是个分类模型,挂羊头卖狗肉懂吗?!)然后我们一起来看看最后的模型结果。

0.96!可以说这个结果很不错了!哈哈,有兴趣可以一起来试下哦?

0 人点赞