泰坦尼克号⽣存预测分析
此⽂发表在简书,复制过来,在下⽅放上链接。
泰坦尼克号⽣存预测
1.背景与挖掘⽬标
“泰坦尼克号”的沉没是历史上最臭名昭著的海难之⼀。1912年4⽉15⽇,泰坦尼克号在处⼥航中与冰⼭相撞后沉没,2224名乘客和机组⼈员
中有1502⼈死亡。这场耸⼈听闻的悲剧震惊了国际社会,并导致了更好的船舶安全条例。
造成沉船事故的原因之⼀是没有⾜够的救⽣艇供乘客和机组⼈员使⽤。虽然在沉没中幸存了⼀些运⽓,但⼀些⼈⽐其他⼈更容易⽣存,如妇
⼥、⼉童和上层阶级。
请根据这些数据(见数据来源)实现以下⽬标。
在这个挑战中,我们要求你们完成对什么样的⼈可能⽣存的分析。特别是,我们要求你运⽤机器学习的⼯具来预测哪些乘客在悲剧中幸存下
来。
2.分析⽅法与过程
泰坦尼克号⽣存预测主要包括以下步骤。
1)数据描述性统计
2)对步骤1)进⾏数据探索分析(寻找特征值)与预处理,包括数据缺失值的探索分析,数据的属性规约,清洗和变换
3)利⽤2)中形成的已完成数据预处理的建模数据训练模型
4)针对模型结果预测测试集⼈的⽣存情况
2.1数据来源和含义
数据来⾃于知名机器学习竞赛⽹站kaggle:
说明:
PasngerId=>乘客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进⾏预测并保存
结果:
评估指标
#查看得分
simportaccuracy_score
predictions=t(x)
score=accuracy_score(y,predictions)
print(score)
#绘制ROC曲线
asplt
simportroc_curve,auc
#y_test:实际的标签,datat_pred:预测的概率值。
fpr,tpr,thresholds=roc_curve(y,predictions)
roc_auc=auc(fpr,tpr)
#画roc曲线,只需要(fpr,tpr),变量roc_auc只是记录auc的值,通过auc()函数能计算出来
fig=()
(fpr,tpr,lw=1,label='ROC(area=%0.2f)'%(roc_auc))
("FPR(FalPositiveRate)")
("TPR(TruePositiveRate)")
("ReceiverOperatingCharacteristic,ROC(AUC=%0.2f)"%(roc_auc))
()
#画ks曲线
(tpr)
(fpr)
(tpr-fpr)
()
#AUC得分
simportroc_auc_score
#y_test:实际的标签,datat_pred:预测的概率值。
score=roc_auc_score(y,predictions)
print(score)
0.81
本文发布于:2022-12-29 22:52:19,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/55904.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |