《泰坦尼克号分析报告.docx》由会员分享,可在线阅读,更多相关《泰坦尼克号分析报告.docx(14页珍藏版)》请在优知文库上搜索。
1、编号:IoCoo88厦门华厦学院泰坦尼克号生存预测结构化分析与数据建模流程学期:2022-2023学年下学期课程名称:数据挖掘(IOCOO88)姓名(学号):杨金涛(211075141)所属学院:商务与管理学院专业(班级):21级电子商务1班任课教师:郭丽清泰坦尼克号生存预测结构化分析与数据建模流程(作业目的:基于泰坦尼克号数据进行数据探索和分析,并建立合理的分类模型)摘要:本作业对泰坦尼克号数据集进行探索性数据分析,以EDA、和图形分析等处理方式对不同的特征属性进行分析。针对预测乘船人员的生死分类问题,本作业基于随机森林算法实现了简单高效的分类器,作业表明该分类器准确率为82.96%o1.1
2、.1 数据集说明泰坦尼克号沉船事故。1912年,当时隶属于英国的世界级豪华客轮泰坦尼克号,因在处女航行中不幸撞上北大西洋冰山而沉没。这场事故使得1500多名乘客罹难。后来,这场震惊世界的惨剧被详细地调查,而且遇难乘客的信息也逐渐被披露。在当时的救援条件下,无法在短时间内确认每位乘客生还的可能性。而今,许多科学家试图通过计算机模拟和分析找出潜藏在数据背后的生还逻辑,通过人工智能算法,尝试揭开这尘封了100多年的数据的面纱。titanic泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉。然而不幸的是,在它的处女航中,泰坦尼克号便遭厄运,1912年4月14日23时40
3、分左右,泰坦尼克号与一座冰山相撞,造成右舷船艄至船中部破裂,在2224名船员及乘客中,造成1517人丧生。此次沉船事件如此严重,主要是因为当时没有足够的救生艇。有些人被获救,除了有运气因素之外,还有一些其他的因素值得分析,比如妇女、儿童、上层阶级等角色人员更可能会被获救。而titanic数据集记录了当时的状况,它被用来实现分类任务,是否获救二分类预测,预测泰坦尼克号上人员的是否获救状况。本作业我采用的是老师发的泰坦尼克号数据集“ttnk.csv,以下是数据集“ttnk.csv”各字段描述及简介:VariableDefinition中文含义数据值描述survivalSurvival该乘客是否获救
4、是否生还(数字0、1)0(no)x1(yes)1是获救pclassTicketclass客舱等级(数字1、2、3)乘客船票等级1、2、3对应一、二、三等舱1/2/3等舱位,一等票/二等票/三等票class客舱等级(字符描述)三类:FirstsSecondxThirdsexSex乘客性另Umale、femaleAgeAgeinyears乘客年龄,以年为单位浮点,177条记录此字段缺失sibsp#ofsiblings/spousesaboardtheTitanic船上兄弟姐妹的人数乘客在泰坦尼克号上的堂兄妹/配偶的个数整数,283条记录此字段值Aoparch#ofparents/childrena
5、boardtheTitanic船上父母和孩子的人数乘客,在泰坦尼克号上的父母/孩子个数整数,213条记录此字段值0ticketTicketnumber乘客船票信息farePassengerfare客运票价乘客船票价格浮点cabinCabinnumber乘客船舱信息embarkedPortofEmbarkation登船港口(单个字符)乘客登船港口三类:S、C、QS=Southampton,C=Cherbourg,Q=Queenstown经常将S、C、Q分别编码为0、1、2embarkedjown登船港口全名共三个港口who类型三类:man、womanxchildadult_male是否成年男性T
6、ruexFalsedeck舱面ACDEGalone是否单独一人TrUe(537条)、FaISe(354条)1.2 基本信息介绍InInInIn 4:Out 4:In 5:Out 5:1:In 17: df. isnull (). sum()导入需要库importnumpyasnpimportpandasaspd2:#(1)选择泰坦尼克号存活率数据集df=Q.rea4fsnQTt忝.)力利用PandaS的read_csv模块读取数据3:#(2)数据集的基本信息介绍#;杳看数据基本信息df.info()#杳看前5列的数据df.head()#育看数据维度df.shape(891,12)Passeng
7、erldSurvivedPclassAgeSibSpParchFarecount891.000000891.0000891.000000714.0000891.000000891.000000891.000000mean446.0000000.383832.30864229.6991180.5230080.38159432.204208std257.3538420.4865920.83607114.5264971.1027430.80605749.693429min1.0000000.00001.0000000.42000.00000.0000000.00000025%223.50000.00
8、002.00000020.1250000.00000.0000007.91040050%446.000000O.OOO(XK)3.00000028.00000.00000.00000014.45420075%668.50001.00003.00000038.00001.00000.00000031.000000max891.0000001.00003.00000080.00008.00006.000000512.329200斗包看数据描述(数值型)df.describe()2.1. 数据预处理In7:#(3.1数据预处理)#根据对泰坦尼克号事件的了解,选取sex、age和PClaSS3个决定是
9、否牛.还的关健因素X=df,Pclass,Age,Sex,y=df,Survived,X.infoORangeindex:891entries,0to890Datacolumns(total3columns):#ColumnNon-NullCountDtype0Pclass891non-nullint641Age714non-nullfloat642Sex891non-nullobjectdtypes:float64(l),int64(l),object(1)memoryusage:21.0+KBIn13:triage字段进行缺失值填充X,Age.fi1Ina(X,Age*.mean0)X.i
10、nfo()In16:#删除缺失严重的Cabin变量df.dropna(subset=,Age*,inpIace=True)df.dropna(subset=,Cabin,inplace=True)df.dropna(subset=,Embarked,inplace=True)31数据描述分析(可视化呈现)InIB:(3.2)数据描述分析(可视化?现)利用PandaS的数据可视化功能我们可以简单地进行探索性数据分析EDA来分析存活率iportDatplotlib.pyplotaspitax=df,Survived.value.counts().plot(kind=bar,figsize=(10,
11、6),fontsize=10,rot=0)ax.set_ylabel(,Counts,fontsize=10)ax.set.xlabelCSurvived*,fontsize=10)pit.ShOf()1SurvivedOIn19:#数据图形可视化分析importmatplotlib.pyplotaspitpit.rcParams,font,sans-serif,=,SimHei,#显示中文标签pit.rcParams,font,family*=*sans-serif,pit.rcParams,axes,unicode-minus,=False#显示仇号In20:fig=pit.figure(
12、)fig.set(alpha=0.2)#设定图表颜色alpha参数pit.subplot2grid(2,3),(0,0)#在一张大图眼分列几个小图df.Survived.value_counts().plot(kind=bar,)力柱状佟Iplt.title(获救宿况(1为获救)#标题plt.ylabel(u人数)RY轴标签pit.subplot2grid(2,3),(0,1)df.Pclass.value_counts().plot(kind=bar)广柱状图显示pit.ylabel(u人勃”)pit.title3乘客等级分布“)pit.subplot2grid(2,3),(0,2)pit.
13、scatter(df.Survived,df.Age)#为散点图传入数据pit.ylabel(uz)#设定纵金费名繇pit.grid(which=*major,axis-y,)ph.title(u”按年龄看获救分布(1为获救)”)Out20:Text(0.5,1.0,按年龄看获救分布(1为获救)In21:pit.subplot2grid(2,3),(1,0),colspan=2)df.Agedf.Pclass=1.plot(kind=kde*)#密发图df.Agedf.Pclass=2.plot(kind=kde,)df.Agedf.Pclass3.plot(kind-kde,)pit.XIabeI(Ir年龄”)pit.ylabel(u密度”)pit.title(u”各等级的乘客年龄分布)pit.legend(u头等舱,u,2等舱,u*3等舱),loc=best,)Out21:各等级的乘客年龄分布In22:#针对性别,绘制年龄字段的箱线图importseabornassnssns.boxplot(xSex,y=Age,data=X)Out22:In23:Survived_O=df.PclassEdf.Survived=0.value-counts()W未张救Survived_l=df.Pclassdf.Survived-1.value_count