All life is game of luck,数据挖掘告诉你生存是不是考运气

    泰坦尼克号(RMS Titanic):20世纪初,由英国白星航运公司制造的一艘巨大豪华客轮。是当时世界上最大的豪华客轮,被称为是“永不沉没的”或是“梦幻客轮”。但她却在1912年4月15日从南安普顿至纽约的处女航中,在北大西洋撞上冰山而沉没,由于缺少足够的救生艇,1500人葬生海底,造成了在和平时期最严重的一次航海事故,也是迄今为止最著名的一次。派拉蒙电影公司与20世纪福克斯电影公司于1997年将“泰坦尼克号”的事件改编为电影,在全球各地上映,轰动全球,也让她变得家喻户晓。

    根据kaggle提供的数据集 ,总共样本1392,分为训练集,892个样本,其中存活乘客392人,测试样本,419个。数据集可以从kaggle官方网站下载,也可以从我的百度云盘下载。

    首先对数据进行概览,数据集中包含字段,

PassengerId:乘客编号

Survived  :存活情况(存活:1 ; 死亡:0)

Pclass:客舱等级(1,2,3)

Name:乘客姓名(姓+称谓+名)

Sex:性别(male男,female女性)

Age:年龄(乘客年龄)

SibSp:同乘的兄弟姐妹/配偶数()

Parch:同乘的父母/小孩数(小孩和保姆会算为0)

Ticket:船票编号(船票号,有多个人公用一个船票号)

Fare:船票价格(乘船费用)

Cabin:客舱号(客舱编号)

Embarked  : 登船港口(C = Cherbourg, Q = Queenstown, S = Southampton)

其中根据数据概览中可以看出,其他Age、Fare、Cabin和Embarked有缺失值:

下面对缺失值进行处理:

乘客年龄:由于缺失值较多,暂不做处理。

Fare根据kaggle上的多种模型验证一致认为缺失的乘客的数值为:8.05,

Cabin有相同Ticket号的具有相同的Cabin,根据这条规则填充了12条数据,其余填充为Unknown;

Embarked有两个缺失值,用C进行填充;

trainset <- read.csv('./train.csv', stringsAsFactors = F)

testset <- read.csv('./test.csv', stringsAsFactors = F)

fullset  <-bind_rows(trainset, testset)#

str(fullset)#

fullset$Embarked[c(62,830)] <-'C'

fullset$Fare[1044] <-median(fullset[fullset$Pclass =='3'&fullset$Embarked =='S', ]$Fare,na.rm =TRUE)

CabinNA<-subset(fullset,fullset$Cabin=="")

CabinY<-subset(fullset,fullset$Cabin!="")

samet<-intersect(CabinNA$Ticket,CabinY$Ticket)

x<-match(samet,CabinY$Ticket)

for (i in x) {CabinNA$Cabin[i]<-CabinY$Cabin[i]}

fullset<- rbind(CabinNA,CabinY)

fullset$Cabin[fullset$Cabin=="NA"]<-"Unknown"

age预测

factor_vars <-c('PassengerId','Pclass','Sex','Embarked')

fullset[factor_vars] <-lapply(fullset[factor_vars], function(x)as.factor(x))

# Set a random seed

set.seed(129)

# Perform mice imputation, excluding certain less-than-useful variables:

mice_mod <- mice(fullset[, !names(fullset) %in% c('PassengerId','Name','Ticket','Cabin','Survived')], method='rf')

mice_output <-complete(mice_mod)

fullset$Age <-mice_output$Age


trainfullc <-full[1:891,]

testfullc <-full[892:1309,]

下面我选择随机森林(RandomForest)、决策树(DecisionTree)、logit 模型和支持向量机,建立模型,先建立一个预测的基准。

# Set a random seed

set.seed(754)

# Build the model (note: not all possible variables are used)

rf_model <-randomForest(factor(Survived) ~Pclass +Sex +Age +SibSp +Parch +Fare +Embarked +Title +FsizeD +Child +Mother,data =train)

# Show model errorplot(rf_model,ylim=c(0,0.36))legend('topright',colnames(rf_model$err.rate),col=1:3,fill=1:3)

# Get importanceimportance <-importance(rf_model)

varImportance <-data.frame(Variables =row.names(importance),Importance =round(importance[ ,'MeanDecreaseGini'],2))

# Create a rank variable based on importance

rankImportance <-varImportance %>%mutate(Rank =paste0('#',dense_rank(desc(Importance))))# Use ggplot2 to visualize the relative importance of variables

ggplot(rankImportance,aes(x =reorder(Variables, Importance),y =Importance,fill =Importance)) +geom_bar(stat='identity') +geom_text(aes(x =Variables,y =0.5,label =Rank),hjust=0,vjust=0.55,size =4,colour ='red') +labs(x ='Variables') +coord_flip() +theme_few()

# Predict using the test set

prediction <-predict(rf_model, test)

# Save the solution to a dataframe with two columns: PassengerId and Survived (prediction)

solution <-data.frame(PassengerID =test$PassengerId,Survived =prediction)

# Write the solution to file

write.csv(solution,file ='rf_mod_Solution.csv',row.names =F)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容