Documentos de Académico
Documentos de Profesional
Documentos de Cultura
com/VictorGuevaraP/ME-Machine-
Learning/master/Desafiliado.csv", sep = ";")
head(empresa)
empresa$Desafiliado=as.factor(empresa$Desafiliado)
str(empresa$Desafiliado)
plot(empresa, col=empresa$Desafiliado,pch=19)
library(caret)
particion <- createDataPartition(y = empresa$Desafiliado, p = 0.70, list = FALSE,
times = 1)
train <- empresa[particion, ]
test <- empresa[-particion, ]
dim(train)
dim(test)
#Estimar el árbol
library(rpart)
arbol1=rpart(Desafiliado~.,data=train,method="class")
arbol1
# Graficando el arbol
plot(arbol1,margin=.25)
text(arbol1,use.n=T)
#installed.packages('rattle')
library(rattle)
drawTreeNodes(arbol1)
library(rpart.plot)
prp(arbol1, type=1, extra = 101, box.palette = "auto")
rpart.plot(arbol1)
rpart.plot(arbol1,
extra = 104,
box.palette = "GnBu",
branch.lty = 4,
shadow.col = "gray",
nn = TRUE)
###############################
#Podar el árbol
arbol5
arbol7=prune(arbol5,cp=.1)
plot(as.party(arbol7), tp_args = list(id = FALSE))
printcp(arbol7)
plotcp(arbol7)
arbol8=prune(arbol5,cp=.017)
plot(as.party(arbol8), tp_args = list(id = FALSE))
printcp(arbol8)
plotcp(arbol8)
#Valor óptimo de CP
arbol.completo <- rpart(Desafiliado~.,data=train,method="class",
cp=0, minbucket=0)
arbol.completo
xerr <- arbol.completo$cptable[,"xerror"]
minxerr <- which.min(xerr)
mincp <- arbol.completo$cptable[minxerr, "CP"]
arbol.prune <- prune(arbol.completo,cp=mincp)
plot(as.party(arbol.prune), tp_args = list(id = FALSE))
#PREDICHOS
#Calculamos los valores predichos utilizando el ultimo arbol costruido
pred=predict(arbol.prune,test,type="class")
#Calcular el error de mala clasificación
error=mean(pred!=test$Desafiliado)
error
# Matriz de perdidas
library(gmodels)
CrossTable(pred, test$Desafiliado)
#Indicadores
library(caret)
indicadores=confusionMatrix(pred, test$Desafiliado)
indicadores
##################################
#curva roc
pred_prob<-predict(arbol.prune, test, type = "prob")[,2]
library(ROCR)
predR1 <- prediction(pred_prob, test$Desafiliado)
predR2<-performance(predR1, "tpr", "fpr")
plot(predR2, colorize = T)
lines(x=c(0, 1), y=c(0, 1), col=" blue", lwd=1, lty=3);
lines(x=c(1, 0), y=c(0, 1), col="red", lwd=1, lty=4)
#Indice GINI
ROCRN <- round(performance(predR1, measure = "auc")@y.values[[1]]*100, 2)
giniRN <- (2*ROCRN - 100)
giniRN
############################################
#overfitting o sobreajuste
arbol.completo
pred1=predict(arbol.completo, train, type="class")
table(pred1, train$Desafiliado)
pred2=predict(arbol.completo, test, type="class")
table(pred2, test$Desafiliado)
indicadores1=confusionMatrix(pred1, train$Desafiliado)
indicadores2=confusionMatrix(pred2, test$Desafiliado)
indicadores1
indicadores2
#############################################
##################################################
# Random Forests
##################################################
library(randomForest)
library(ISLR)
library(tree)
set.seed(111)
res1 <- randomForest( Desafiliado ~ ., data = train,
mtry = 2, importance = TRUE,
do.trace = 10)
print(res1)
importance(res1)
varImpPlot(res1)
predichos<-predict(res1, test, type="response")
table(pred,test$Desafiliado)
mean(pred!=test$Desafiliado)
##################################################
#Boosting
##################################################
library(gbm)
library(adabag)
# Boosting
data("iris")
view(iris)
#############################