library(readxl)
Propietarios <- read_excel("Propietarios.xlsx")
Propietarios <- data.frame(Propietarios)
library(dplyr)
Propietarios <- Propietarios%>%
mutate(Clase = as.factor(Clase))
library(caret)
folds <- createFolds(Propietarios$Clase, k = 4)
entrenamiento <- Propietarios[c(folds$Fold1,folds$Fold2,folds$Fold3),]
prueba <- Propietarios[folds$Fold4,]
library(kknn)
modelo <- train.kknn(Clase ~ ., data = entrenamiento, kmax = 4)
modelo
##
## Call:
## train.kknn(formula = Clase ~ ., data = entrenamiento, kmax = 4)
##
## Type of response variable: nominal
## Minimal misclassification: 0.05555556
## Best kernel: optimal
## Best k: 4
library(stats)
Pres <- predict(modelo, entrenamiento[,-4])
tt <- table(entrenamiento[,4],Pres)
tt
## Pres
## No propietario Propietario
## No propietario 9 0
## Propietario 0 9
TA <- (sum(diag(tt)))/sum(tt)
round(TA,2)
## [1] 1
Se puede observar una precisión del 100% y un error del 0%.
Pred <- predict(modelo, prueba[,-4])
table <- table(prueba[,4],Pred)
table
## Pred
## No propietario Propietario
## No propietario 3 0
## Propietario 0 3
clas <- (sum(diag(table)))/sum(table)
clas
## [1] 1
Encontramos que el modelo logra predecir un 67% los datos de prueba.
plot(Propietarios[,1:2],main="Propietarios",xlab="Ingreso", ylab="Tamano ",col=Propietarios$Clase,pch=24)
legend("topright",legend=c("1","2"),pch=19,col=c(1,2,3))
data <- Propietarios
N <- nrow(data)
n <- round(N*0.83)
set.seed(2468)
indices <- sample(1:N,n)
entrenamiento <- data[indices,]
prueba <- data[-indices,]
library(rpart)
modelo1 <- rpart(Clase ~ ., data = entrenamiento)
modelo1
## n= 20
##
## node), split, n, loss, yval, (yprob)
## * denotes terminal node
##
## 1) root 20 10 No propietario (0.5000000 0.5000000)
## 2) Hogar>=12.5 10 0 No propietario (1.0000000 0.0000000) *
## 3) Hogar< 12.5 10 0 Propietario (0.0000000 1.0000000) *
library(rpart.plot)
rpart.plot(modelo1)
Se pudo observar que utilizando la variable Clase (Propietario y No Propietario), y cuando Hogar es mayor que 13 todos los datos son propietario.
pred<- predict(modelo1,entrenamiento[,-4],type="class")
tt<- table(pred,entrenamiento[,4])
tt
##
## pred No propietario Propietario
## No propietario 10 0
## Propietario 0 10
TA <- (sum(diag(tt)))/sum(tt)
round(TA,2)
## [1] 1
La tassa de acierto es de un 100%. Puede significar que el modelo ha predicho correctamente todas las instancias en el conjunto de datos de prueba “perfectamente”, pero este caso es porque hay muy pocos datos.
Pred1 <- predict(modelo1, prueba[,-4],type="class")
table <- table(prueba[,4],Pred1)
table
## Pred1
## No propietario Propietario
## No propietario 2 0
## Propietario 0 2
(sum(diag(table)))/sum(table)
## [1] 1
library(C50)
modelo2 <- C5.0(Clase ~ ., data = entrenamiento)
modelo2
##
## Call:
## C5.0.formula(formula = Clase ~ ., data = entrenamiento)
##
## Classification Tree
## Number of samples: 20
## Number of predictors: 3
##
## Tree size: 2
##
## Non-standard options: attempt to group attributes
plot(modelo2)