Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

library(caret)

library(pROC)

library(rpart.plot)

library("doParallel")

no_cores <- detectCores()-1

registerDoParallel(cores=no_cores)

cl<-makeCluster(no_cores)

data <- read.csv(file="c:/R/face.csv", header=T, sep=";")

######## #2 PREPARAR DATOS

data$likebinary <- factor(ifelse(data$like>median(data$like), "si", "no"))

data$Type <- factor(data$Type,level=c("Link","Photo","Status","Video"))

data$Paid <- factor(data$Paid,level=c(0,1))

data$Category<- factor(data$Category,level=c(1,2,3))

data$Post.Month<- factor(data$Post.Month,level=c(1:12))

data$Post.Weekday<- factor(data$Post.Weekday,level=c(1:7))

data$Post.Hour<- factor(data$Post.Hour)

attach(data)

df <- data.frame(Type, Category, Post.Month, Post.Weekday, Post.Hour,Paid,likebinary)

######### #1 PARTICIÓN

set.seed(1234)

partition <- createDataPartition(df$likebinary, p=0.7, list=F, times=1)

train <- df[partition,]

test <- df[-partition,]

######### MODELOS

control <-
trainControl(method="cv",number=10,summaryFunction=twoClassSummary,classProbs=T,savePredictions=T)

##optim NB

grid1 <- expand.grid(usekernel = c(T, F), fL = 0:15, adjust = seq(0, 15, by = 1))

set.seed(1234)

m1b <- train(x=subset(train, select=-likebinary),y=train$likebinary, method="nb",trControl=control,tuneGrid = grid1)


plot(m1b)

predicted1b <- predict(m1b, test)

predictedprobs1b <- predict(m1b, test,type="prob")

##optim CT

grid2 <- expand.grid(cp=c(seq(0,.1,.001), seq(.0,1,.1)))

set.seed(1234)

m2b <- train(x=subset(train, select=-likebinary),y=train$likebinary, method="rpart",trControl=control,tuneGrid =


grid2)

plot(m2b)

m2b$finalModel

rpart.plot(m2b$finalModel)

predicted2b <- predict(m2b, test)

predictedprobs2b <- predict(m2b, test,type="prob")

##optim RF

grid3 <- expand.grid(mtry=(1:20))

set.seed(1234)

m3b <- train(x=subset(train, select=-likebinary),y=train$likebinary, method="rf",trControl=control,tuneGrid = grid3)

plot(m3b)

predicted3b <- predict(m3b, test)

predictedprobs3b <- predict(m3b, test,type="prob")

######### #3 COMPARAR MODELOS

cf1b <- confusionMatrix(m1b)

cf2b <- confusionMatrix(m2b)

cf3b <- confusionMatrix(m3b)

cm1b <- confusionMatrix(predicted1b, test$likebinary)

cm2b <- confusionMatrix(predicted2b, test$likebinary)

cm3b <- confusionMatrix(predicted3b, test$likebinary)

rocg1b <- roc(m1b$pred$obs, m1b$pred$si,levels=rev(levels(test$likebinary))))

rocg2b <- roc(m2b$pred$obs, m2b$pred$si,levels=rev(levels(test$likebinary))))

rocg3b <- roc(m3b$pred$obs, m3b$pred$si,levels=rev(levels(test$likebinary))))


plot(rocg3b)

plot(rocg1b)

lines(rocg2b ,col="blue")

lines(rocg3b ,col="red")

legend("bottomright",legend=c("Naive Bayes","Rpart","Bosque aleatorio"),lty=1,col=c("black", "blue","red"),lwd=2)

compareb <- data.frame(

" " = c("Training accuracy","Test accuracy","Test Sensitivity","Test Specificity", "ROC AUC"),

"
"=c(cf1b$table[1,1]/rowSums(cf1b$table)[[1]],cm1b$overall[[1]],cm1b$byClass[[1]],cm1b$byClass[[2]],rocg1b$auc),

"
"=c(cf2b$table[1,1]/rowSums(cf2b$table)[[1]],cm2b$overall[[1]],cm2b$byClass[[1]],cm2b$byClass[[2]],rocg2b$auc),

"
"=c(cf3b$table[1,1]/rowSums(cf3b$table)[[1]],cm3b$overall[[1]],cm3b$byClass[[1]],cm3b$byClass[[2]],rocg3b$auc)

);colnames(compareb) <- c("","Naive Bayes","Classification Tree","Random Forest");compareb

You might also like