Kaggle经典数据分析项目:泰坦尼克号生存预测!1. 数据概述与可视化2. 数据预处理3. 模型训练4. 模型优化(调参)

本文介绍了使用Kaggle上的泰坦尼克号数据集进行生存预测的完整流程,包括数据概述、可视化、预处理、模型训练和调参。通过探索不同特征如仓位、家庭人数、年龄等与生存率的关系,利用多种模型如Random Forest、Gradient Boosting Classifier进行训练,并通过调整参数优化模型性能。最后,展示了如何通过模型融合提升预测效果。
摘要由CSDN通过智能技术生成

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习

,不错过

Datawhale干货

作者:陈锴,中山大学,Datawhale成员

最近有很多读者留言,希望能有一个完整的数据分析项目练手,这几天收集了组织成员们的推荐。其中泰坦尼克号生存预测作为最经典的启蒙数据分析项目,对于初学者来说是应该是最合适的了,后面将分享更多进阶的数据分析项目。如果已经有基础了,推荐:

1.开源项目《动手学数据分析》:

https://github.com/datawhalechina/hands-on-data-analysis

  1. DCIC 2020算法分析赛 :DCIC 是国内少有的开放政府真实数据的经典赛事,对能力实践,学术研究等都提供了很好的机会。

https://mp.weixin.qq.com/s/-fzQIlZRig0hqSm7GeI_Bw

全文如下:

本文结合泰坦尼克号生存预测,从1.数据探索(数据可视化),2.数据预处理,3.模型训练,4.模型调参这四个步骤进行了完整的梳理:

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy92STluWWU5NGZzR3J6SVRicUdpYm83WEZ2cXpvMXE3eThpYmljaFRpY2ZObDZsRk5nbDdpYjF1TGRSdUFpYWcxWEM2bTlJZzlVeFliQWNTZlpyZTFjSUV0NDVjZy82NDA?x-oss-
process=image/format,png)

1. 数据概述与可视化

1.1 数据概述

首先我们导入我们的训练数据和测试数据:

数据集包含train.csv和test.csv两个文件,在 Datawhale 公众号回复 数据集,可获取打包链接,也可以直接在kaggle官网上下载。

    train_data = pd.read_csv("input/train.csv", index_col=0)
    test_data = pd.read_csv("input/test.csv", index_col=0)
    train_data.head()

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy92STluWWU5NGZzRnFwM1pON2ptM05ydEpxZUpycTBuTXRiSHhzZVpJa3dXcG5vR242WFl0VkpvQ0dvUktOWTMwaWJVcnM4WWJNTzJuSHRFcjZDUDBoSlEvNjQw?x-oss-
process=image/format,png)

    train_data.describe()

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy92STluWWU5NGZzRnFwM1pON2ptM05ydEpxZUpycTBuTUYwYk9LbkdGd2FRZks3VXJFMlJ0enhXaEJtZ0V1RlVpY1hDbjY1Q0lsbWFLS1VtbEFrOW5NMEEvNjQw?x-oss-
process=image/format,png)
通过describe()函数我们可以简单地看出哪些是数值型数据哪些是字符型数据,对于字符型数据我们当然要转换成数值型数据来处理,比如可以转换成0-1编码的数值型,但需要注意的是,对于一些数值型数据却未必就不需要进一步的处理了,比如Pclass特征,从名字我们就可以看出这是标识仓位等级的特征,取值范围为[1,
2, 3],这个特征我们不应该简单地当作一个数值型数据放进分类模型中直接跑,应该把它转变为one-
hot编码,标识乘客不同的仓位,这一步我们将在数据预处理步骤完成。

我们再看看数据中值为null的数据,这是我们后面需要进一步处理的:

    train_data.isnull().sum().sort_values(ascending=False).head(4)

显示结果为:

>     Cabin       687
>     Age         177
>     Embarked      2
>     Fare          0
>     dtype: int64
>  
[/code]

##  1.2 数据可视化

为了这篇文章看起来内容多一点(误),我们可以画多点图来展示数据信息,想直接进行数据预处理的读者可以跳过这部分,这部分内容大多来自Kaggle官网的一篇notebook。

###  1.2.1 性别与生存率

首先我们应该还记得电影里感人的“女士优先”策略:

```code
    sns.barplot(x="Sex", y="Survived", data=train_data)

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy92STluWWU5NGZzRnFwM1pON2ptM05ydEpxZUpycTBuTWRwNGJsOHlacjA0Q01XaWJ2MVEyMHQzczBkOWljNExpYlc3bkNMV2FHb0V3cUZpYkpZME1TRDJWdHcvNjQw?x-oss-
process=image/format,png) 这里我们可以看出女性的生存率远大于男性,这也很符合电影的情节。

1.2.2 仓位等级(社会等级)与生存率

我们还可以猜测不同仓位的乘客应有不同的获救率:

    #draw a bar plot of survival by Pclass
    sns.barplot(x="Pclass", y="Survived", data=train)
    
    #print percentage of people by Pclass that survived
    print("Percentage of Pclass = 1 who survived:", train["Survived"][train["Pclass"] == 1].value_counts(normalize = True)[1]*100)
    
    print("Percentage of Pclass = 2 who survived:", train["Survived"][train["Pclass"] == 2].value_counts(normalize = True)[1]*100)
    
    print("Percentage of Pclass = 3 who survived:", train["Survived"][train["Pclass"] == 3].value_counts(normalize = True)[1]*100)

![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy92STluWWU5NGZzRnFwM1pON2ptM05ydEpxZUpycTBuTUVNYklvV3hhZHR5a2JpY2NhZWliOFNGSXlaZmEwYksyMzQzMHZEM2ZRUGFZWGJCajV6R3U3ZDZ3LzY0MA?x-oss-
process=image/format,png)

    Percentage of Pclass = 1 who survived: 62.96296296296296
    Percentage of Pclass = 2 who survived: 47.28260869565217
    Percentage of Pclass = 3 who survived: 24.236252545824847

数据结果还是很现实的,贵的仓位自然有更高的生存率 ,不然我花这冤枉钱干嘛,生死面前不是人人平等。

As predicted, people with higher socioeconomic class had a higher rate of
survival. (62.9% vs. 47.3% vs. 24.

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值