-
Notifications
You must be signed in to change notification settings - Fork 0
/
rpart e carat.r
73 lines (49 loc) · 1.49 KB
/
rpart e carat.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
## **Importando Bibliotecas**
library(readr)
library(tidyverse)
library(rpart)
library(fastDummies)
library(caret)
library(rattle)
```
## **Importando dados**
dados <- read_csv("acessov2.csv")
dados
## **Tratando os dados**
table(dados$busca)
### Metodo de separaçao em Dummies, para poder trabalhar com a coluna busca.
dados <- dummy_cols(dados, remove_selected_columns = T)
dados
set.seed(17)
idx <- createDataPartition(dados$comprou, p = 0.80, list = F)
dados.train <- dados[idx,]
dados.train <- dados.train[c(1,2,4,5,6,3)]
dados.test <- dados[-idx,]
dados.test.r <- dados.test[3]
dados.test <- dados.test[-3]
### **Checando proporçoes**
# Proporçao dos dados inicias
prop.table(table(dados$comprou))
# Proporçao do treino
prop.table(table(dados.train$comprou))
# Proporçao do teste
prop.table(table(dados.test.r$comprou))
## **Modelo Decision Tree Rpart**
### Funçao para categorizar em 0 e 1.
# 0.375 0.611111111111111 0.704697986577181 0.795275590551181 1
bins <- function(df)map_dbl(df, function (x){
if (x <= 0.704697986577181){
return(0)
}
else{
return(1)
}})
modelo1 <- rpart(comprou~., dados.train, method = "anova")
previsao_rpart <- predict(modelo1, dados.test)
dados.test.r["previsao_rpart"] <- bins(previsao_rpart)
## **Grafico do modelo rpart**
fancyRpartPlot(modelo1, main = "Arvore de Decisoes", sub = "")
## **Matriz de confusao**
confusionMatrix(table(dados.test.r$comprou,
dados.test.r$previsao_rpart),
positive = "1")