【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址

泰坦尼克号

  • 前言
    • 1 导入包
    • 2 加载并合并数据
    • 3 查看数据
    • 4 处理数据
      • 4.1 删除Cabin => 客舱、Ticket => 船票信息、PassengerId => 乘客ID
      • 4.2 处理Age => 年龄的缺失值
        • 4.2.1 平均值来填充
        • 4.2.2 随机选取平均值加减标准差范围的数来填充
      • 4.3 接着,我们需要从年龄中提取一个特征出来,即:孩子。尊老爱幼
      • 4.4 处理Embarked => 登船港口的缺失值
      • 4.5 填补Fare => 票价 缺失值
      • 4.6 Pclass => 乘客等级(1/2/3等舱位)
      • 4.7 老规矩,首先看看Sex与Survived的关系:
      • 4.8 Name(姓名),Parch(父母/孩子的数量),SibSp(配偶的数量):
      • 4.9 对Embarked进行变量转换
      • 4.10 再观察一下数据,看看还有那些特征可以用到,整理出三个新特征:称谓、家庭大小、姓。
        • 4.10.1 处理姓
        • 4.10.2 处理称谓
        • 4.10.3 处理家庭大小
    • 5 提取模型需要的数据
    • 6 对数据进行标准化、降维等操作
      • 6.1 离差标准化
      • 6.2 标准差标准化数据
      • 6.3 对特征进行二值化处理
      • 6.4 对定性特征进行独热编码处理
      • 6.5 PCA降维
    • 7 可视化研究不同特征的影响
    • 8 删去影响较小的特征--Q
    • 9 网格搜索最优参数
    • 10 模型构建
      • 10.1 随机森林
      • 10.2 GBDT
      • 10.3 SVM模型
      • 10.4 逻辑回归Logistic Regression
    • 11 验证结果
    • 12 实验报告和源代码下载地址

前言

泰坦尼克号的沉没是历史上最臭名昭著的海难之一。
1912年4月15日,在她的处女航中,被普遍认为“沉没”的RMS泰坦尼克号与冰山相撞后沉没。不幸的是,船上没有足够的救生艇供所有人使用,导致2224名乘客和机组人员中的1502人死亡。
尽管幸存有一些运气,但似乎有些人比其他人更有可能生存。
在这一挑战中,我们要求您建立一个预测模型来回答以下问题:“什么样的人更有可能生存?” 使用乘客数据(即姓名,年龄,性别,社会经济阶层等)

竞赛地址:https://www.kaggle.com/c/titanic
文末有源代码、实验报告以及该代码需要的数据(train.csv和test.csv)

作者:东北大学软件工程1704张志浩

1 导入包

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第1张图片

2 加载并合并数据

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第2张图片

3 查看数据

在这里插入图片描述
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第3张图片
在这里插入图片描述
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第4张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第5张图片

我们知道了总的数据一共有1309行,也知道了每个特征的数据类型,很多数据都出现了缺失,总结一下:

1、Age缺失 263个,不算多,处理数据
2、Survived缺失418个,不用处理,因为test.csv中的数据本来就是没有Survived的。
3、Cabin缺失1014个,缺失太多,丢弃这个特征
4、Fare缺失1个
5、Embarked缺失2个

4 处理数据

在数据中出现缺失或者错误的Value是很正常的事,一些预测模型可以很好的处理缺失数据,如神经网络(neural networks),有些则需要单独处理他们。但是我们使用的随机森林(Random Forest)来做预测模型,随机森林(自身并不能对付缺失数据,所以我们需要对缺失值单独进行处理。

4.1 删除Cabin => 客舱、Ticket => 船票信息、PassengerId => 乘客ID

在这里插入图片描述

4.2 处理Age => 年龄的缺失值

4.2.1 平均值来填充

Age(年龄)有263个缺失项,就简单地用平均值来填充,并看看填充前后的直方图:

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第6张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第7张图片

4.2.2 随机选取平均值加减标准差范围的数来填充

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第8张图片
在这里插入图片描述
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第9张图片

4.3 接着,我们需要从年龄中提取一个特征出来,即:孩子。尊老爱幼

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第10张图片

4.4 处理Embarked => 登船港口的缺失值

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第11张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第12张图片

4.5 填补Fare => 票价 缺失值

Fare(票价)只有1个缺失项,直接用平均值填充:
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第13张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第14张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第15张图片

可以看出票价集中在10左右,幸存的人的票价平均在48。

4.6 Pclass => 乘客等级(1/2/3等舱位)

可视化
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第16张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第17张图片

得到Pclass与Survived的关系,可以看出Pclass为3的生存率很低,我们试试把它的Dummy Variables去掉:
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第18张图片

4.7 老规矩,首先看看Sex与Survived的关系:

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第19张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第20张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第21张图片

4.8 Name(姓名),Parch(父母/孩子的数量),SibSp(配偶的数量):

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第22张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第23张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第24张图片

4.9 对Embarked进行变量转换

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第25张图片

4.10 再观察一下数据,看看还有那些特征可以用到,整理出三个新特征:称谓、家庭大小、姓。

4.10.1 处理姓

在这里插入图片描述

4.10.2 处理称谓

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第26张图片

4.10.3 处理家庭大小

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第27张图片

5 提取模型需要的数据

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第28张图片

6 对数据进行标准化、降维等操作

我只使用了离差标准化,其他的没有离差标准化准确率高,注释掉的代码是我没有使用的方法

6.1 离差标准化

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第29张图片

6.2 标准差标准化数据

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第30张图片

6.3 对特征进行二值化处理

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第31张图片

6.4 对定性特征进行独热编码处理

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第32张图片

6.5 PCA降维

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第33张图片

7 可视化研究不同特征的影响

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第34张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第35张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第36张图片

从图中可以看出Q影响较小,删去

8 删去影响较小的特征–Q

在这里插入图片描述

9 网格搜索最优参数

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第37张图片
我得到n_estimators=26,max_depth=6,最优

10 模型构建

我试了几乎所以的模型,但是只有随机森林的准确率最高,可能我处理得到的数和这个模型比较匹配

10.1 随机森林

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第38张图片
【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第39张图片

10.2 GBDT

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第40张图片

10.3 SVM模型

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第41张图片

10.4 逻辑回归Logistic Regression

【Python sklearn】kaggle Titanic生死预测--0.81准确率--python超详细数据分析--附源代码和报告的下载地址_第42张图片

11 验证结果

在这里插入图片描述

12 实验报告和源代码下载地址

泰坦尼克号0.81准确率python源代码
泰坦尼克号0.81准确率实验报告

你可能感兴趣的:(python,详细到不能再详细),机器学习)