作者:黄天元,复旦大学博士在读,目前研究涉及文本挖掘、社交网络分析和机器学习等。希望与大家分享学习经验,推广并加深R语言在业界的应用。
微信:hope9057
Kaggle上最经典的泰坦尼克号入门级教程,我们这里尝试玩转它(https://www.kaggle.com/c/titanic)。先讲数据背景,我们有各种各样的乘客数据,想要利用这些数据,预测在泰坦尼克号沉船的时候,这个乘客是否能够存活。具体的数据字典可以参照:
https://www.kaggle.com/c/titanic/data。
先导入数据
#数据导入 set.seed(201891) library(pacman) p_load(tidyverse) p_load(caret,caretEnsemble) setwd("E:\\_data_hope\\Titanic\\data") read_csv("train.csv") -> train_raw1 read_csv("test.csv") -> test_raw1 read_csv("gender_submission.csv") -> gs
人工变量筛选
人工筛选变量是第一步,这是机器学习无法逾越的高度,因为我们知道哪些变量是真正“有关”的,哪些即使是真的提高了预测精度也只是假象而已。我们应该知道,乘客的ID号码,乘客叫什么名字,乘客在哪里上船,还有买票的号码,是与存活率完全没有直接关系的,直接删除掉。
train_raw1 %>% select(-PassengerId,-Name,-Ticket,-Embarked) -> train_raw2 test_raw1 %>% select(-PassengerId,-Name,-Ticket,-Embarked) -> test_raw2
缺失值可视化和处理
如果数据中有一些属性含有大量缺失值,那么它对预测的贡献几乎为零,甚至具有不良的干扰。当然有的时候缺和不缺本来就是一种信息,但是这里我们无法深入判断。首先我们先看看是否有缺失值,有的话缺多少?
p_load(VIM,Amelia) missmap(train_raw2)
missmap(test_raw2)
train_raw2 %>% aggr()
test_raw2 %>% aggr()