泰坦尼克号是一艘英国客轮。它于1912年4月的一个清晨从南安普顿出发,在前往纽约目的地的途中与一座冰山相撞后沉没。机上估计有2,224名乘客。和船员,超过1,500人死亡,成为现代历史上和平时期最严重的海上灾难。今天,我们将在著名的泰坦尼克号数据集上创建一个机器学习模型,该数据集提供有关泰坦尼克号上乘客的数据,例如经济状况、性别、年龄等。让我们结合这些特征,构建一个机器学习模型,预测某些人是否会根据参数生存的情况甚至可以用来衡量他们自己生存的概率。1.在开始之前,您需要确保您的计算机上已经成功安装了Python和pip。如果没有,请访问这篇文章:超详细的Python安装指南进行安装。Windows环境打开Cmd(开始-运行-CMD),苹果系统环境打开Terminal(command+空格进入Terminal),准备开始输入命令安装依赖。当然,我推荐大家使用VSCode编辑器,复制本文代码,在编辑器下方的终端中安装依赖模块。多么惬意的一件事:Python编程的最佳搭档——VSCode详解指南。输入以下命令安装我们需要的依赖模块:pipinstallnumpypipinstallpandapiinstallseabornpipinstallmatplotlibpipinstallscikit-learn如果看到Successfullyinstalledxxx,说明安装成功。啊,别忘了,你需要下载数据集,可以去kaggle官网下载,也可以在Python实战宝典后台回复获取本文完整数据和代码公众号:泰坦尼克号。2.分析基础数据在开始使用机器学习进行分析之前,我们需要做一些常规的数据分析,比如缺失值检测、特征量、基本相关性分析等。2.1缺失值首先是缺失值检测。这样的数据集不可能没有缺失值。在开始机器学习分析之前,我们应该清楚地分析缺失的数据。这时候就需要善用工具了:7行代码巧妙地利用Python热力图将表格中缺失的数据可视化,丰富的知识积累这时候就可以派上用场了。生成热力图:可以看出cabin和Age的缺失值最多。如果这两列数据无法避免,则需要将其删除。Embarked中也有几个缺失值。这种情况好办,我们通过填充来解决。热力图代码:2.2寻找特征变量在这一节中,我们着重找出哪些变量可以使乘客的存活率更高,例如年龄和性别,船舶的位置等。首先分析年龄和性别,根据训练集得出如下分析图:我们可以看到男性的死亡率其实更高,大致体现了让妇女儿童先逃的原则。对于5至18岁的男性,幸存的机会似乎很低,尽管这可能是由于船上这个年龄段的人数较少。再往下看,舱位等级和登机位置会影响生存率吗?请看下图,Embarked是登船港,pclass是客舱等级,数字1是头等舱。可以看出,头等舱乘客的存活率高于其他舱位的乘客,而在C口岸下船的男性存活率高于女性,让人怀疑头等舱乘客的人品C口还有一点,是不是亲戚越多越容易活下来?可以看出,有1到3个亲属的人最有可能存活下来,但超过3个之后存活率就不太好了。这部分可视化的代码如下:3.机器学习预测首先,我们要在刚才的数据分析的基础上对数据进行预处理,去掉对我们的模型没有帮助的数据[passengerID]。另外,[cabin]实在是太缺了,我们这里也去掉了。[name]维度,name必须要数字化才能解析,为了简化步骤,这里也去掉了。要去掉的是【Ticket】,它是一个唯一值,对我们来说没有意义,所以去掉。3.1补全缺失数据当然,我们必须补全我们的缺失值。根据年龄的均值和标准差求出年龄的随机数,填入缺失的年龄数据。登机点被S地取代。3.2数据数字化这里需要对三个维度进行数字化处理:1.票价,从浮点数到整数2.性别到数字3.落脚点到数字不得不说,pandas真的很方便。地图做好了。3.3Single-valuetransitionvalue由于age是一个数字,如果数据量不够大,这样的数字意义不大。我们需要按年龄段划分,票价是一样的。我们一起转换:3.4创建模型终于到了重点,不过这里是整个第三节最简单的部分,因为sklearn模块已经把需要做的一切都给我们封装好了,我们只需要调用模块,传入数据训练,测试。我们用的是随机森林模型(说实话,如果没有sklearn,这个模型可以把我的头写秃了)。关于随机森林的介绍,可以看这篇文章。其实就是解决了决策树的过拟合问题。这篇文章讲的通俗易懂:https://blog.csdn.net/mao_xiao_feng/article/details/52728164训练和测试代码如下:准确率如下:>>python1.py0.9034792368125701准确率rate是90%,相当高准确率高,我们带上自己的情况看看能不能活下来,最后的数据格式是这样的,你只需要带上自己的情况,然后加上自己排到测试数据:比如我应该坐二等舱(实际上是三等舱,但是想想,我坐泰坦尼克号为什么不坐二等舱?);Sex为1(男),Age为3(old);SibSp是船上兄弟姐妹和配偶的数量,Parch是船上父母和子女的数量。由于我可能一个人旅行,所以我们这里设置成0,然后车费Fare应该是2,Embarked随意选0>>python1.py1天哪,我能活下来,不容易(滑稽,我不知道是不是因为换机舱)。我们也试试吧。完整代码太长,这里就不贴了。Python实战宝典公众号后台回复泰坦尼克号即可获取。本文参考自https://towardsdatascience.com/predicting-the-survival-of-titanic-passengers-30870ccc7e8我们的文章到此结束。如果喜欢我们今天的Python实战教程,请继续关注我们。如果你喜欢如果你有帮助,请点击下面的喜欢/观看。有什么问题可以在下方留言区留言,我们会耐心解答!Python实用书(pythondict.com)不只是一本书欢迎来到公众号:Python实用书原文来自Python实用书:你能在泰坦尼克号上生存吗?蟒蛇告诉你!
