泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_数据


在kaggle 上下载泰坦尼克号数据,完成数据挖掘部分的作业。泰坦尼克号是许多数据科学和机器学习的新手比较喜欢选择的案例。

数据说明:

泰坦尼克号的沉没是历史上最臭名昭着的沉船之一。 1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并导致了更好的船舶安全规定。

造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,比如女人,孩子和上流社会。

在这个任务中,我们对原始数据进行分析,看看到底哪些人更容易存活。然后用机器学习的工具来预测哪些乘客幸免于难。

数据导入:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_02


显示前两行数据:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_03


一共有12个特征,其中5个特征是字符串。

用describe函数显示数据基本信息:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_04


可以看出与ID相比,年龄字段只有714个值,是有缺失的。

缺失只可以删除,插值,这里选择用平均值填充年龄:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_05


查看性别类型,发现只有两类male、female,用0和1替代:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_06


查看Embarked的情况,结果有S、C、Q、nan四类,说明有缺失值,查看数据,发现大多数都是S值,于是用S值填充缺失值。最后将字符串数值化。


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_07


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_08


先选取'Pclass','Sex','Age','SibSp','Parch','Fare','Embarked'七个特征进行建模,用python库sklearn进行预测,选取交叉检验:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_09


线性模型:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_10


模型预测结果,准确率为26%,效果不好,比随便猜还差,随便猜也有50%的准确率。

逻辑回归:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_11


准确率为78%,勉强过的去。

随机森林:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据挖掘数据集下载_12


随机森林模型准确率也为78%

改变随机森林的参数:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_13


改变随机森林模型的参数后,模型的预测的准确率上升为82%,有明显的提升,说明在数据挖掘建模过程中,模型参数设置很重要。

在之前的建模过程中,利用现有的参数进行分析。在接下来,试着去尝试用新的特征向量来建立模型。

将原来的特征:SibSp、Parch合并为FamilySize,增加一个特征名字长度nameLength,好像在欧美,名字长度和社会地位有一定关系。


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_14


增加一个名字称呼的变量Title,查看数据中的Title:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_15


后面8个比较少,考虑了一下,将'Lady', 'Countess','Capt', 'Col','Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'用rare取代。在将其数字化"Mr": 1, "Miss": 2, "Mrs": 3, "Master": 4, "Rare": 5。


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据挖掘数据集下载_16


完成结果:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_17


将票价分为四类:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据挖掘数据集下载_18


然后将票价用0、1、2、3取代,便于建模:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_19


同样的操作,将年龄分类,在用数字代替:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_20


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_21


处理结果:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_22


重新选取数据建模:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_23


去掉特征:passengerid,name,ticket,cabin,sibsp,categoricalage,categoricalfare七个特征。得到结果:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_24


数据可视化:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_25


特征相关性:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_sklearn 相关性分析_26


从Pearson Correlation图可以知道,选择的特征没有强烈相关。 从将这些特征提供到学习模型中的观点来看,这是很好的,因为这意味着我们的训练集中没有太多冗余或多余的数据。

分析选取特征对存活率的重要程度:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_27


结果如下:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_28


从图中可以看出,Pclass ,Sex ,Fare ,NameLength ,Title五个特征比较重要,所以建模选取这五个特征。

开始建模,定义训练集与测试集:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_29


SVC模型:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_建模_30


结果准确率为78%。

线性SVC模型:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_31


结果准确率为75%。

随机森林:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_32


结果准确率为82%。

逻辑回归:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_33


结果准确率为75%。

K邻近:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_数据_34


结果准确率为76%.

XGBoost 模型:


泰坦尼克号数据挖掘数据集下载 数据分析泰坦尼克号_泰坦尼克号数据集_35


结果准确率为77%。

从分析结果来看,在理论上优秀的算法不一定在一个实际的案例中由于其他算法,在同样的数据预处理情况下,简单的算法可能表现更高的准确率,在本例中,进行新的特征创建和新特征融合的情况下,预测结果并没有得到明显的改善,这一点没有想明白。

当然,更好一点的可能是组合不同的分类器,并赋予不同分类器一定权重,让我们的分类器更“聪明”,比如构建人工神经网络,可能使得学习的结果更优异,当然这也需要更大的样本。

对于本例来说,研究泰坦尼克号中哪些人更有利存活,一者这是一个过时问题,二者是这个研究本身没有多大的实际意义,更多的是用来练习学到的知识。