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

更新时间:2023-06-18 22:35:52 阅读: 评论:0

泰坦尼克号⽣存预测(python)1 探索性分析
对数据进⾏⼀个整体的理解
1.1 查看数据都有⼀些什么特征脆皮炸鸡腿
将测试集和训练集合并,⽅便后续的数据处理
import pandas as pd
import aborn as sns
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
数字歌train = pd.read_csv('G:\\titanic\\train.csv')
test = pd.read_csv('G:\\titanic\\test.csv')
testId = test["PasngerId"]
datat = pd.concat(objs = [train,test],axis = 0).ret_index(drop=True)
train_len = len(train)
PasngerId => 乘客ID
Pclass => 乘客等级(1/2/3等舱位)
Name => 乘客姓名
Sex => 性别
Age => 年龄
SibSp => 堂兄弟/妹个数
Parch => ⽗母与⼩孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱
Embarked => 登船港⼝
查看数据集的信息,可以看到age、cabin、enkarked、fare都是存在缺失值的
datat.info()
1.2 各特征与survived之间的关系
1.2.1 Age
采⽤训练集数据进⾏观察分析,可以看到最后存活下来的年龄会整体偏低⼀些,但是特征不够明显sns.boxplot(y=train["Age"],x=train["Survived"])
1.2.2 Sex
lady first
获救⼈数⾥⼥性占⽐更⼤
fig = plt.figure()
fig.t(alpha=0.2)  # 设定图表颜⾊alpha参数
Survived_m = train.Survived[train.Sex == 'male'].value_counts()
Survived_f = train.Survived[train.Sex == 'female'].value_counts()
df=pd.DataFrame({'male':Survived_m, 'female':Survived_f})
今后的努力方向
df.plot(kind='bar', stacked=True)
plt.xlabel("survived")
plt.ylabel("number")
1.2.3 Pclass
船舱等级为1的获救⼏率更⼤
sns.barplot(x=train["Pclass"],y=train["Survived"])
1.2.4 SibSp/Parch
灾难来临家庭⼈数多的获救⼏率⾼还是低?
将兄弟姐妹和⽗母合并得到家庭总⼈数
可以看到家庭⼈数在2-4⼈之间获救可能性更⾼些,单⾝⼀⼈缺少帮助,家庭⼈数多的需要照顾更多家⼈
train["Fsize"] = train["SibSp"] + train["Parch"] + 1
sns.barplot(x = train["Fsize"],y = train["Survived"])
1.2.5 Fare
新年的古诗票价⾼的获救⼏率⽐较⼤,但是不明显。
同时可以看到Fare中存在⼀个异常值,需要将其剔除
sns.boxplot(y=train["Fare"],x=train["Survived"])
train["Fare"]=train["Fare"].replace(train["Fare"].max(),train["Fare"].median())
1.2.6 Name
乘客名字中带有相应的称呼,称呼可能代表这他的社会地位
其中Mr Miss Mrs Master 所占数量最多,其他⽐较少的都统⼀替换为rare
name_list = [i.split(",")[1].split(".")[0].strip() for i in datat["Name"]]
#按指定字符将字符串切⽚为列表
datat["Title"] = pd.DataFrame(name_list)
# g = untplot(datat["Title"])
# g = plt._xticklabels(),rotation=45)
孩子胆小怎么办datat["Title"] = datat["Title"].replace(['Lady', 'the Countess','Countess','Capt',
'Col','Don', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'],"rare")
# datat["Title"] = datat["Title"].map({"rare":0,"Master":1, "Miss":2, "Ms" : 2 , "Mme":2, "Mlle":2, "Mrs":2, "Mr":3,"Dr":3}) sns.barplot(x = datat["Title"],y = datat["Survived"])
datat["Title"].unique()
datat.drop(labels = ["Name"],axis = 1 ,inplace = True)
#将name列丢掉
datat = pd.get_dummies(datat,columns = ["Title"])幼儿园谈话活动
#将title列给分列
1.2.7 Cabin
客舱号代表着所处船上的位置,可能不同的客舱位置跑到救援船上的⼏率有⼀定的相关性湿地公园设计
缺失的客舱可能是没有客舱,统⼀替换为X
有客舱的整体来说⽐没有客舱的获救⼏率更⾼些
#Cabin
datat["Cabin"]=pd.DataFrame([i[0] if not pd.isnull(i) el"X"for i in datat["Cabin"]])
#可以考虑加⼊客舱号字母后⾯的数字,可能有些数字⾥逃⽣⼝较近
datat.Cabin.unique()
sns.barplot(x=datat["Cabin"],y=datat["Survived"])
datat = pd.get_dummies(datat,columns = ["Cabin"])
1.2.8 Embarked
从图中看出登船港⼝不同之间的获救⼏率差别不⼤,客⼈登船后基本都会到⾃⼰的客舱,猜测是不同的登船港⼝会分有⽆客舱或者船票类别登船,但是对是否获救影响不⼤
sns.barplot(x=train["Embarked"],y=train["Survived"])
1.2.9 Ticket
#Ticket
Ticket = []
for i in list(datat.Ticket):形容荷花的句子
if not i.isdigit():
Ticket.place(".","").replace("/","").strip().split("")[0])
el:
Ticket.append("X")
#按船票的字母和数字将船票区分
datat["Ticket"] = Ticket
datat.Ticket.unique()
datat = pd.get_dummies(datat,columns = ["Ticket"],prefix = "T")
#prefix将Ticket改名
2 特征⼯程
2.1 Age Sex
年龄会跟⽗母和兄弟姐妹有很⼤关系,因此将SibSp,Parch,Pclass⼀样的平均值做为部分填充
其余填充剩余值的平均值,并将x转化为0 1 数值型
将年龄分段

本文发布于:2023-06-18 22:35:52,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1044652.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:客舱   家庭   可能   获救
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图