基于R语言的Kaggle案例分析学习笔记(一)
来源:互联网 发布:远程网络教育四川大学 编辑:程序博客网 时间:2024/05/23 00:07
泰坦尼克号沉船事件
本案例提纲:
1、了解题目背景
2、特征工程
3、模型选择
4、基于R实现模型
1、了解题目背景
0 = No, 1 = Yes
sex性别 age年龄 sibsp:Sibling兄弟姐妹 Sibsp:Spouse配偶(包二奶和未婚夫被忽略)Parch:Parent
母亲和父亲Parch:Child
女儿,儿子,继女,继子
有些孩子只和保姆一起旅行,因此对他们来说PARCH= 0
pclass
船舱等级 ticket number船票号码 fare费用embarked
登船地点C = Cherbourg, Q = Queenstown, S =Southampton
cabin
舱室本案例主要从家庭规模和称谓两个方面进行,创造新的特征列,感兴趣的伙伴可以创造其他特征,欢迎留言交流。家庭规模=子女人数+配偶+自己,家庭人数小于2的为小家庭,大于6的为大家庭,在2和6之间的为中等家庭。外国人的称谓体现一定的社会地位,所以可以把称谓作为一个特征列,从Name中提取称谓,并将同一称谓的不同表达进行统一,如" Capt"," Don"," Major"," Sir"都可以表示成"sir"。
3、模型选择
本案例是一个分类问题,根据目前的特征列,对乘客分为存活、不存活两类。本案例选择决策树进行,当然感兴趣的伙伴可以尝试其他算法欢迎留言交流。决策树算法是根据信息增益的大小来选择作为分类的特征,信息增益是不存在该特征的情况下的信息熵和存在该特征的信息熵的差值。
4、R语言实现
先解释这部分用到的R语言函数:
1、rpart ( formula, data, weights, subset,na. action =na.rpart, method, model= FALSE, x= FALSE, y=TRUE,parms, control, cost, . . . )
参数:x,rpart对象。唯一需要的参数。
以下是实现代码:
train=read.csv('D:\\R语言kaggle案例实战\\Kaggle第一节课\\train.csv')test=read.csv('D:\\R语言kaggle案例实战\\Kaggle第一节课\\test.csv')combi<-rbind(train,test)#合并训练集和测试集,便于对全部数据进行预处理和特征提取mode(combi$Name)#查看数据类型combi$Name<-as.character(combi$Name)#将数值类型置成字符类型combi$title<-sapply(combi$Name,FUN=function(x){strsplit(x,split ='[,.]' )[[1]][2]})#对所有数据进行称谓分隔开data.frame(table(train$title))#查看各称谓的频率combi$title[combi$title %in% c(" Mlle"," Mme")]<-"Mlle"#将称谓统一成一个称谓combi$title[combi$title %in% c(" Capt"," Don"," Major"," Sir")]<-"Sir"#将称谓统一成一个称谓combi$title[combi$title %in% c(" Jonkheer"," the Countess"," Lady")]<-"Lady"#将称谓统一成一个称谓data.frame(table(combi$title))#查看统一称谓以后各个称谓的个数combi$title<-as.factor(combi$title)#将称谓置成因子型combi$familysize<-combi$SibSp+combi$Parch+1#家庭规模=兄弟姐妹+配偶+自己combi$familysize[combi$familysize>6]<-'large'#家庭规模大于6人称为大型家庭combi$familysize[combi$familysize<=2]<-'small'#家庭规模小于2人称为小型家庭combi$familysize[combi$familysize>2 & combi$familysize<=6]<-'Middle'#家庭规模大于2人,小于6人称为小型家庭combi$familysize<-as.factor(combi$familysize)#将家庭规模置为因子型train<-combi[1:891,]#再次将数据划分为训练集test<-combi[892:1309,]#再次将数据划分为测试集library(rpart)library(rpart.plot)titanic_tree<-rpart(Survived~Pclass+Sex+Age+SibSp+Parch+Fare+Embarked+title+familysize,data=train,method='class')#构建模型prediction<-predict(titanic_tree,test,type='class')#因变量为离散型的,所以type为classtest$Survived<-NAsubmit<-data.frame(Id=test$PassengerId,Survived=prediction)rpart.plot(titanic_tree,cex = 0.8,type=3)#type表示树的类型,cex表示字体大小
关于决策树的原理,给大家提供一个牛人的博客链接:
http://www.cnblogs.com/pinard/p/6050306.html
http://www.cnblogs.com/pinard/p/6053344.html
- 基于R语言的Kaggle案例分析学习笔记(一)
- 基于R语言的Kaggle案例分析学习笔记(二)
- 基于R语言的Kaggle案例分析学习笔记(三)
- 基于R语言的Kaggle案例分析学习笔记(四)
- 基于R语言的Kaggle案例分析学习笔记(五)
- 基于R语言的Kaggle案例分析学习笔记(六)
- 基于R语言的Kaggle案例分析学习笔记(七)
- 基于R语言的Kaggle案例分析学习笔记(八)
- 基于R语言的Kaggle案例分析学习笔记(九)
- 基于Python的Kaggle案例分析(一)
- 【R语言学习笔记】探索ggplot的排列组合(一)
- R语言学习笔记(一)
- R语言学习笔记(一)
- R语言学习笔记(一)
- R语言学习笔记(一)
- R语言学习笔记(一)
- R 语言学习笔记(一)
- R语言学习笔记(一)
- FPGA前世今生(一)
- git已经push代码到gitlab如何回退
- Math类四个常用方法辨析,floor、ceil、round、rint
- BZOJ1046 上升序列 [二分][贪心]
- P1170 兔八哥与猎人(简单数论,GCD)
- 基于R语言的Kaggle案例分析学习笔记(一)
- 懒人读算法(十)-区间总结
- MySQL-索引可能失效场景
- 微分-跟踪器(tracking
- Openstack容器化部署研究之:Kolla离线制作Openstack服务的Docker容器镜像
- 两个有序数组合并为一个有序数组
- Android踩坑日记:监听软键盘多次调用和刷新系统相册和获取所有相片
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)
- 给定一个有序的链表或者数组,构造一棵二叉搜索树