背景:
泰坦尼克号(RMS Titanic)作为英国白星航运公司下的一艘奥林匹克级邮轮,是20世纪最著名的邮轮之一,这不仅因为其在建成后是当时世界上最大的豪华客运轮船,还因为这艘被誉为‘永不沉没’的轮船竟然在其处女航中就遭遇了厄运。在1912年4月15号,载有2224人的泰坦尼克号因与冰山相撞而沉没,这次事故造成了1502人死亡,同时也震惊了世界。在这次事故中,造成如此多的伤亡主要原因之一是由于船上没有配备足够的救生船,但是对于幸存者而言还有一些其他的因素导致了他们更有可能比别人活下来。那么,哪些因素会使得存活率较高?好,下面就开始运用R软件进行数据分析和预测。
目的
:预测泰坦尼克号中存活率与哪些因素有关?
数据来源
:Kaggle上的一篇名为“Titanic: Machine Learning from Disaster”的Competitions:Titanic: Machine Learning from Disaster
何为kaggle,如何入手?Kaggle竞赛入门教程之Kaggle简介(新手向) – CSDN博客;在注册kaggle时,总是无法验证?可查考:解决kaggle邮箱验证不能confirm的问题 – CSDN博客。如果不想注册kaggle,可以直接从中获取数据练习:链接: https://pan.baidu.com/s/1RKMKyQ4R1RSCYI0FWQVAFQ 密码: tgjp
目录:
一、数据的导入和整理
二、数据分析(哪个变量对存活率影响更重要?)
三、建模(logistics regression、randomForest、SVM)
四、预测(predict)
五、上传kaggle
一、数据的导入和整理
(一)变量解释:
(二)先载入需要的安装包
tidyverse包的介绍:为“Tidyverse”疯狂打call!
#tidyverse是万能包,里面包含很多包,所以只要加载这个包,可以省去很多包的加载
library("tidyverse") #ggplot2/dplyr/stringrb等万能包
library("randomForest")
library("mice")
(.packages()) #查看已安装的包
(三)数据获取
具体的获取内容,上面已讲述,直接将数据载入R中即可。
数据集总共有三个,一个训练集(train)+一个测试集(test),还有一个是提交预测结果到kaggle的格式要求。现在将这两个数据集合并才一起进行数据预处理,保证数据集格式的一致性。
#数据导入
train<-read.csv("C:Program FilesRstudioTitanictrain.csv",header = TRUE,sep=",")
test<-read.csv("C:Program FilesRstudioTitanictest.csv",header = TRUE,sep=",")
dim()查看数据集有几行和多少变量,colnames()是参看数据集变量都有哪些,通过下面,可以发现train与test两个数据集,相差一个变量Survived。
运用
bind_rows()
函数合并train与test数据集,可以发现合并后test中少的Survived变量,系统默认用NA填充。head()指查看数据集full前六行,tail()指查看数据集后六行。
full<-bind_rows(train,test)
(四)数据预处理
1、转换数据类型
参看数据集中的变量都是哪些数据类型?运用str()函数可以参看变量的属性
通过上述,可以看出数据集full有1309个观测值12个变量,survived,pclass.变量为int,需要转为factor类型,因为这些是分类变量,0,1不是实际的数值,如:survived中的0指死亡,1指存活,所以要将整型变量转为因子类型。运用as.factor();
sibsp,parch默认为int类型,要转换为数值类型:as.numeric()
full$Survived<-as.factor(full$Survived)
full$Pclass<-as.factor(full$Pclass)
full$SibSp<-as.numeric(full$SibSp)
full$Parch<-as.numeric(full$Parch)
2、处理缺失值
在运用随机森林建模时,数据集是不能存在缺失值的,所以,下面开始进行处理缺失值
(1)查看哪些变量存在缺失值或空值?
从图中,可以看出survived变量有418个缺失值,个数正好为test数据集的个数,这个缺失值为正常现象,是因为train与test合并所导致的。
Age变量有263个缺失值;Fare变量有1个缺失值;Cabin有1014个空值,Embarked有两个空值。这四个变量都是要处理的变量,我们先从较少的缺失值开始。
(2)处理缺失值或空值