泰坦尼克号生存预测分析

此文发表在简书,复制过来,在下方放上链接。

https://www.jianshu.com/p/a09b4dc904c9

泰坦尼克号生存预测

1.背景与挖掘目标

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

造成沉船事故的原因之一是没有足够的救生艇供乘客和机组人员使用。虽然在沉没中幸存了一些运气,但一些人比其他人更容易生存,如妇女、儿童和上层阶级。

请根据这些数据(见数据来源)实现以下目标。

在这个挑战中,我们要求你们完成对什么样的人可能生存的分析。特别是,我们要求你运用机器学习的工具来预测哪些乘客在悲剧中幸存下来。

2.分析方法与过程

泰坦尼克号生存预测主要包括以下步骤。

1) 数据描述性统计

2) 对步骤1)进行数据探索分析(寻找特征值)与预处理,包括数据缺失值的探索分析,数据的属性规约,清洗和变换

3) 利用2)中形成的已完成数据预处理的建模数据训练模型

4) 针对模型结果预测测试集人的生存情况

2.1数据来源和含义

数据来自于知名机器学习竞赛网站kaggle:

https://www.kaggle.com/c/titanic/data

说明:

  • PassengerId => 乘客ID
  • Pclass => 乘客等级(1/2/3等舱位)
  • Name => 乘客姓名
  • Sex => 性别
  • Age => 年龄
  • SibSp => 堂兄弟/妹个数
  • Parch => 父母与小孩个数
  • Ticket => 船票信息
  • Fare => 票价
  • Cabin => 客舱
  • Embarked => 登船港口

3数据探索

3.1数据初窥

导入数据

   

发现数据总数有891条,其中Age,Cabin,Embarked有缺失。

进行描述性统计

可以发现乘客平均获救的概率为38%,乘客主要集中在2,3等舱,乘客平均年龄是29.7岁。

探讨乘客总体分布情况

整体上看出获救人数300多人,人数分布情况三等舱人数最多,接下来是一等舱,二等舱,死亡和获救的人数分布较广,头等舱平均年龄偏大,40岁左右的人数较多,三等舱平均年龄偏小,20岁左右的人数较多,登船口岸人数按照S,C,Q递减。

3.2挖掘与乘客是否生存的特征值

3.2.1舱位和获救关系

事故发生后一等舱和二等舱获救概率大,三等舱死亡人数明显多于获救人数,获救概率小,可见客舱等级越高,生还率越高。

3.2.2性别和获救关系

事故发生后,女性获救人数多于死亡人数,男性获救人数少于死亡人数,女性获救概率大

3.2.3登船口岸和获救的关系

事故发生后,C口岸获救人数多于死亡人数,S口岸获救人数远小于死亡人数,Q口岸获救人数较小于死亡人数,C口岸获救概率大

3.3数据分析总结

本次分析主要探寻泰坦尼克号上的生还率和各因素(客舱等级、年龄、性别、上船港口等)的关系。

样本数量为 891,海难发生后,生还者还剩 342 人,生还率为 38%。

泰坦尼克号上有一\二\三等舱三种船舱类型。海难发生前,一等舱有 216 人,二等舱 184 人,三等舱 491 人。事故发生后,一等舱、二等舱、三等舱的乘客人数变为136、87、119人。一等舱生还率为 63%,二等舱为 47%,三等舱为 24%。可见客舱等级越高,生还率越高。

891 人中,891人中,男性共577人,女性314人。事故发生后,男性变为109人,女性变为233人。男性生还109人,生还率仅为 19%。女性生还 233 人,生还率为 74%,远远高于男性的 19%。可见女性比男性在这次事故中更容易生还。

S 港口生还人数最多,C 次之, Q 最少。从生还率来看, C 港上船的生还率最高, Q 次之, S 生还率最低。

4数据预处理

查看数据缺失情况

本数据中Age,Cabin缺失严重,我们首先对Age数据利用scikit-learn中的RandomForest对缺失Age进行拟合,对Cabin按照有无标签进行分类

将特征‘Pclass‘,‘Cabin‘,‘Embarked‘拆分并将特征因子数值化

将Age,Cabin数据进行标准化处理,数值变化范围下降到[-1,1]之间。

5建立模型

导入数据,使用逻辑回归模型对数据进行训练

6模型结果

对需要预测的乘客test集进行同样的数据预处理

用训练好的模型对处理好的乘客ID进行预测并保存

结果:

评估指标

#查看得分
from sklearn.metrics import accuracy_score
predictions = lr.predict(x)
score = accuracy_score(y,predictions)
print(score)
#绘制ROC曲线
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
# y_test:实际的标签, dataset_pred:预测的概率值。
fpr, tpr, thresholds = roc_curve(y, predictions)
roc_auc = auc(fpr, tpr)
#画roc曲线,只需要plt.plot(fpr,tpr),变量roc_auc只是记录auc的值,通过auc()函数能计算出来
fig = plt.figure()
plt.plot(fpr, tpr, lw=1, label=‘ROC(area = %0.2f)‘ % (roc_auc))
plt.xlabel("FPR (False Positive Rate)")
plt.ylabel("TPR (True Positive Rate)")
plt.title("Receiver Operating Characteristic, ROC(AUC = %0.2f)"% (roc_auc))
plt.show()
#画ks曲线
plt.plot(tpr)
plt.plot(fpr)
plt.plot(tpr - fpr)
plt.show()
#AUC得分
from sklearn.metrics import roc_auc_score
# y_test:实际的标签, dataset_pred:预测的概率值。
score = roc_auc_score(y, predictions)
print(score)

0.81

原文地址:https://www.cnblogs.com/linjie1123/p/11518031.html

时间: 2024-11-08 14:43:45

泰坦尼克号生存预测分析的相关文章

泰坦尼克号生存预测(python)

1 数据探索 对数据进行一个整体的理解 1.1 查看数据都有一些什么特征 import pandas as pd import seaborn as sns %matplotlib inline titanic = pd.read_csv('G:\\titanic\\train.csv')titanic.sample(10) 获取数据的10行记录进行观察,初步了解数据的组成,可以看到Age.Cabin里面是存在缺失值的,在进一步理解数据的统计量后再进行数据处理,观察各特征的最大最小值等,可以发现

泰坦尼克号生存预测

从Kaggle官网下载数据:train .test. 赛事描述: 泰坦尼克号的沉没是历史上最臭名昭著的沉船之一.1912年4月15日,泰坦尼克号在处女航时与冰山相撞沉没,2224名乘客和船员中有1502人遇难.这一耸人听闻的悲剧震惊了国际社会,并导致更好的船舶安全法规.船难造成如此巨大的人员伤亡的原因之一是船上没有足够的救生艇供乘客和船员使用.虽然在沉船事件中幸存下来是有运气因素的,但有些人比其他人更有可能存活下来.比如妇女.儿童和上层阶级. 在此次比赛中,我们需要参赛者预测哪一类人更有可能存活

机器学习第一步——用逻辑回归及随机森林实现泰坦尼克号的生存预测

1.实验背景 本次实验是Kaggle上的一个入门比赛——Titanic: Machine Learning from Disaster.比赛选择了泰坦尼克号海难作为背景,并提供了样本数据及测试数据,要求我们根据样本数据内容建立一个预测模型,对于测试数据中每个人是否获救做个预测.样本数据包括891条乘客信息及获救情况,测试数据有418条乘客信息.样本数据的样例如下: Passenger:乘客唯一识别id Survived:是否存活,0为否,1为是 Pclass:船舱等级,1.2.3等 Name:姓

Titanic幸存预测分析(Kaggle)

分享一篇kaggle入门级案例,泰坦尼克号幸存遇难分析. 参考文章: 技术世界,原文链接 http://www.jasongj.com/ml/classification/ 案例分析内容: 通过训练集分析预测什么人可能生还,并对测试集中乘客做出预测判断 案例分析 加载包 1 library(dplyr) #bind_rows() 2 library(ggplot2) #绘图 3 library(ggthemes) 4 library(InformationValue) #计算WOE和IV 5 l

js写的体彩足球预测分析

最近室友在玩世界杯的预测,我顺手写点分析:下面直接给出代码,很简单的,拷贝代码直接存为html文件就可以了.---------mq0036 说明下:需要你自己去找个Jquery引用到当前页面就可以了 <html> <head> <script src="jquery-1.4.2.min.js"></script> <script> function js() { //$("tr").children(&qu

网络信息安全风险态势预测分析方法探讨

1.研究背景 安全风险态势预测分析是信息安全技术和管理领域中的重要内容,传统的方法一般会按如下几个方面独立地或者混合进行分析: 1.获取历史上安全攻击相关信息,利用概率模型或者使用历史数据进行训练,根据结果进行风险预测[1] [2]: 2.根据各种信息资产的安全脆弱性进行分析: 3.根据各种信息资产的安全属性,包括保密性.完整性.可用性等: 4.根据网络拓扑模型进行分析,其手段主要是分析各种网络之间的关联关系,主要是联通性. 但上述分析方法显然存在一定问题,这主要表现在如下几个方面: 1.仅根据

大数据和预测分析:数据是否越多越好?

Michael Berry对大数据的浮夸之词颇不以为然.身为旅游网站TripAdvisor的分析总监,他认为更多的数据未必带来正面的业务影响,比如大数据和预测分析的例子. “很多预测分析的应用其实并不需要所有的数据.”Berry在Predictive Analytics World做主题演讲时说到.因此,对于数据科学家来说,重要的不是想着怎样分析所有的数据,而是看通过哪些数据可以得出真正有价值的结果.那么到底该怎么办呢?“对于这个问题,没有直截了当的答案.”Berry说. 但是,通过每次增加一些

编译原理:LL(1)文法 语法分析器(预测分析表法)

设计要求:对于任意输入的一个LL(1)文法,构造其预测分析表,并对指定输入串分析其是否为该文法的句子. 思路:首先实现集合FIRST(X)构造算法和集合FOLLOW(A)构造算法,再根据FIRST和FOLLOW集合构造出预测分析表,并对指定的句子打印出分析栈的分析过程,判断是否为该文法的句子. 指定文法: //文法 E->TK K->+TK K->$ T->FM M->*FM M->$ F->i F->(E) 对于输入串i+i*i# ,这里我们先给出实验结果

分享《Python机器学习—预测分析核心算法》高清中文版PDF+高清英文版PDF+源代码

下载:https://pan.baidu.com/s/1sfaOZmuRj14FWNumGQ5ahw 更多资料分享:http://blog.51cto.com/3215120 <Python机器学习-预测分析核心算法>高清中文版PDF+高清英文版PDF+源代码高清中文版,338页,带目录和书签,文字能够复制粘贴.高清英文版,361页,带目录和书签,文字能够复制粘贴.中英文两版对比学习.配套源代码.经典书籍,讲解详细. 其中,高清中文版如图所示: 原文地址:http://blog.51cto.c