泰坦尼克号分析报告.docx

上传人:李司机 文档编号:6749883 上传时间:2024-01-20 格式:DOCX 页数:14 大小:169.54KB
返回 下载 相关 举报
泰坦尼克号分析报告.docx_第1页
第1页 / 共14页
泰坦尼克号分析报告.docx_第2页
第2页 / 共14页
泰坦尼克号分析报告.docx_第3页
第3页 / 共14页
泰坦尼克号分析报告.docx_第4页
第4页 / 共14页
泰坦尼克号分析报告.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《泰坦尼克号分析报告.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.XIa

14、beI(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_countsO获救dflpd.DataFram

15、e(u获救:Survived_l,u,未交救:SUrViVed_0)df1.plot(kind=bar.stacked=True)pit.title(u,各乘分等级的获救情况)ph.Xlabel(U乘客等级)pit.ylabel(u,人数)pit.show()各乘客等级的获救情况乘客等级In24:SUrViVed_m=df.SurvivedCdf.Sex=,male*.value_counts()Survived_f=df.SurvivedCdf.Sex=female*.value_countsOdfl=pd.DataFrame(u,力件:Survived_m,u,!M.:Survived_f

16、)dfl.plot(kind=,bar,stacked-True)pit.title(u按性别行我救情况)pit.xlabel(u,M;.WJ)pit.ylabel(u,人数)pit.show()按性别看获救情况In39:pd.crosstab(df.Sex,df.Survived,df.Pclass,marginsTrue).style,backgrOUndgradient(CIDaPJSUnmer_r)Out39:718382492354354241I1581510183I3126Pclass123AllSexSurvivedfemalemaleAll我们可以从以上图中形象的了解到乘客的信

17、息,获救人数少于未获救人数,三等舱乘客人数最多,获救人员各年龄段分布等等。这时,我们就要将乘客各属性与其是否获救联系起来:获救情况和乘客等级是否有关?获救情况和乘客性别、年龄是否有关?(人性本善:妇人、孩童和老人家会优先搭乘救生艇)我们可以得出:虽然三等舱的人数最多,但头等舱生还的比例最高;虽然男性的人数多于女性,但女性的生还占比远高于男性;头等舱女性的生还比例远高于三等舱女性的生还比例;15-40岁的青年人数最多,生还率最高的是Cn5岁的少年;三等舱范围内的人数最多,但头等舱的人生还占比最高。3. 2,深度数据分析通过对以上数据我们再做进一步分析,深入了解泰坦尼克号幸存者的影响因素:1 .头

18、等舱的重要性,有钱可以保命。可以明显的看出随着船舱等级的下降乘客的生还率呈现出显著的下降趋势,也就是说在泰坦尼克号事件中,乘坐1等舱的有钱人可以有效生存。而3等舱的平民死亡率最高。2 .女士优先,面临死亡之际,女性依旧得到了照顾。在面临死亡危机是,男性依旧表现了高尚的品质,将生的希望传递给了女性,所以在此事件中,身为女性可以有效成为幸存者。3 .年龄的影响一一保住孩子优先。面对灾难时,老人孩子的应对能力差,在泰坦尼克号中,那个年龄段的生存概率最大?通过图表显示,将年龄输出为4类,0T5岁为少年,15-40为青年,40-60为中年人,60以后为老年人。由表可知,15-40岁的青年人数最多,生还率

19、最高的是015岁的少年。青年中年则概率相差不多。这说明在面临灾难时,船上的成年人们,把未成年人作为优先保护的对象。这说明,未成年年龄能有效成为泰坦尼克号上的幸存者。4.1. 数据模型In25::叫JF始奏坦尼克号隹立模型*划分涌愎*与漫试必.并爵数据中的类别电痔跖S行编科froaSkleanLMdelselectioniaporttraintestsplits跑fi份双X-train,X_tesr,y-irain.兀test=train,test.split(X,y.test,size=O.25,ran.:W使用SCikiLl酶m经丞8_尔皿0!1中的待怔转换器froaSldearafeatu

20、rjextractioniaportDictVectorizervec=Dictvectorizer(Sparse=False)In27:=转换存怔后,我发现凡是类别国的特怔番单独对高出来,建成果特怔.OWW.Strain.to_dict(orienf,record)C,fS-recordsXjrain=vec.fit.transfor(Xjrain.to.dict(orient=records)print(vec.featurejaes一)F同样需耍对酒M改据的特怔遵行转级.Xjest=vec.transfora(X-test.to.dict(orien:=records)Age.Pclas

21、s.,SexfeHle.SexaleIn28:f:财达整电遗疗调练.k;支持向最机SMfil前机翁林不如遗为什么巷是IiltS)了构建随机库林freesklearn.ensembleiaportRaiKloaForestClassifierrfc=RandotfOrestClassifier()rfc.fit(X_train,y.train)rfc_y_pred=rfc.predict(X_test)In29J:#对分类器进行评估fromsklearn.metricsimportclassification_reportprint(,Theaccuracyofrandomforest,rfc.

22、score(X_test,y_test)print(classification_report(rfc_y_pred,y_test)Theaccuracyofrandomforest:0.8295964125560538precisionrecallfl-scoresupport00.870.850.8613810.760.800.7885accuracy0.83223macroavg0.820.820.82223weightedavg0.830.830.83223针对预测乘船人员的生死分类问题,本作业基于随机森林算法实现了简单高效的分类器,作业表明该分类器准确率为82.96%0In301:f

23、romskiearn.IinearjnOdelimportLinearRegressionpredictors=,Pclass,Sex,Age,Cabin,LR=LinearRegression()In312:fromskiearn.linear_modelimportLogisticRegressionLR=LogisticRegression(random_state=0)LR.fit(X_train,y_train) LogisticRegressionLogisticRegression(random-state=0)Out311:匚一TC;nIn32:4这边我乂使用最简单的SeQUe

24、ntiaL按层顺序模型:importtensorflowastffromtensorflow,kerasimportmodels,layerstf.keras.backend.clear_session()model=models.SequentialOmodel,add(layers.Dense(20,activation=relu,input_shape=(15,)model.add(larers.Dense(10,activation=,relu,)model,add(layers.Dense(1,activation=,sigmoid,)model,summary()Model:*se

25、quential*Layer(type)OutputShapeParam#dense(Dense)(None,20)320dense_l(Dense)(None,10)210dense_2(Dense)(None,1)11Totalparams:541Trainableparams:541Non-trainableparams:O最后,这边我又使用了最简单的SeqUentia1,按层顺序建立了一个模型。5.L心得体会通过对泰坦尼克号的数据进行建模,我选择了随机森林算法进行作业。随机森林是一种强大的机器学习算法,能够处理分类和回归问题,并具有较好的鲁棒性和准确性。在这个作业中,我首先拆分数据集为

26、训练集和测试集。随机森林算法能够自动选择特征,并且对缺失值和异常值具有较好的处理能力,因此我没有进行过多的数据预处理,而是直接使用了原始数据。然后,我根据模型需要,将数据集划分为特征集和目标变量集。接着,我使用随机森林算法训练模型。随机森林通过构建多个决策树,并取其结果的平均值来减小过拟合的风险。经过多次作业和调优,我最终找到了一个表现良好的随机森林模型。在测试集上的表现结果显示,该模型具有较高的准确性和鲁棒性,对泰坦尼克号乘客的生存预测较为准确。此外,在验证集上的预测结果也表明,该模型具有较好的泛化能力。通过这次作业,我对随机森林算法有了更深入的理解。它不仅可以用于二分类问题,还可以用于多分

27、类和回归问题。在实际应用中,随机森林算法的可解释性也很高,能够告诉我们哪些特征对预测结果有重要影响。这对于决策分析和特征选择非常有帮助。总而言之,利用随机森林算法进行泰坦尼克号数据建模的作业是一次很有收获的经历。通过实践,我熟悉了随机森林的原理和参数调优方法,并且得到了一个高性能的模型。这次作业不仅提高了我的数据建模能力,也加深了我对机器学习算法的理解。6.1. 参考文献 网页:https:WWW利用python分析泰坦尼克号数据集 网页:httpsTensorFlow2.9泰坦尼克号生存预测一结构化数据建模流程 教材:Python数据挖掘与机器学习一一P248泰坦尼克号乘客生还预测*杳看各字段的缺失值df.isnull().sum()

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号