-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrf_titanic_kaggle_r.R
93 lines (72 loc) · 3.09 KB
/
rf_titanic_kaggle_r.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#Chamar os pacotes necessários
library(randomForest)
library(ggplot2)
#Importar os dados
train_set <- read.csv("train.csv", stringsAsFactors=T)
test_set <- read.csv("test.csv", stringsAsFactors=T)
#Check dados faltantes
colSums(is.na(train_set))
colSums(is.na(test_set))
colSums(train_set =="")
colSums(test_set =="")
#Criar coluna faltante no test_set
test_set$Survived <- NA
#Criando uma coluna para identificar se o dado é treino ou teste
train_set$IsTrainSet <-T
test_set$IsTrainSet <-F
#Agrupar os datasets usando rbind
titanic_set <- rbind(train_set, test_set)
#Descritiva do conjunto
summary(titanic_set)
#Check dados faltantes
colSums(is.na(titanic_set))
colSums(is.na(titanic_set))
colSums(titanic_set =="")
#Transformações simples ETL/4Cs (Cleaning, completing, coreting, creating)
titanic_set$Survived <- as.factor(titanic_set$Survived)
titanic_set$Pclass <- as.factor(titanic_set$Pclass)
titanic_set$Age[is.na(titanic_set$Age)] <- median(titanic_set$Age, na.rm = T)
titanic_set$SibSp <- as.numeric(titanic_set$SibSp)
titanic_set$Parch <- as.numeric(titanic_set$Parch)
titanic_set$Fare[is.na(titanic_set$Fare)] <- median(titanic_set$Fare, na.rm = T)
titanic_set$Embarked[titanic_set$Embarked==""] <-"S"
titanic_set$Embarked <-as.factor(as.character(titanic_set$Embarked))
table(titanic_set$Embarked)
#Construir o modelo
titanic_train <- titanic_set[titanic_set$IsTrainSet==T,]
titanic_test <- titanic_set[titanic_set$IsTrainSet==F,]
#Criando a formula
survived_formula <- as.formula("Survived ~ Sex + Pclass + Age + SibSp + Parch + Fare + Embarked")
#Criando o modelo
titanic_model <- randomForest(formula = survived_formula,
data = titanic_train,
ntree = 65,
importance = T)
#Interpretando resultados
titanic_model
#Mostrando graficos curva
plot(titanic_model)
#Gerando a matriz de importância das variáveis
importance_var <- importance(titanic_model, type=1)
importance_var
#Dando uma formatada na tabela
tabela_de_importancia <- data.frame(variaveis=row.names(importance_var),
importancia=importance_var[,1]);tabela_de_importancia
#Gerando o grafico
grafico <- ggplot(tabela_de_importancia,
aes(x=reorder(variaveis,importancia), y=importance_var)) +
geom_bar(stat="identity", fill="#5cc9c1") +
coord_flip() +
theme_light(base_size=20) +
xlab("") +
ylab("Importância") +
ggtitle("Importância das variáveis no Modelo RF") +
theme(plot.title=element_text(size=18))
grafico
#Preparando material para submissão
#Cria um data frame com o campo PassengerId
submission <- data.frame(PassengerId = test_set$PassengerId,
Survived = predict(titanic_model, newdata = titanic_test))
#View nos dados de saida
View(submission)
write.csv(submission, file = "titanic_kaggle_r.csv", row.names=F)