library(readxl)
library(ggpubr)
## Loading required package: ggplot2
## Loading required package: magrittr
library(ggplot2)
library(knitr)
library(e1071)
library(naivebayes)
library(caret)
## Loading required package: lattice
library(C50)
Disparos<- read_excel("Disparos listos.xlsx")
kable (head(Disparos))
| TMRCLA | TMA1LA | TMA2LA | TACCLA | VEACLA | VERCLA | TMRCLOA | TACCLOA | VER | TTA | PAA | TAaT | TAaC | evento |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Alarma | Disparo | Alarma | Alarma | Bien | Bien | Bien | Bien | Bien | Bien | Alarma Baja | Bien | Bien | EN FALLA |
| Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Disparo Bajo | Bien | Bien | EN FALLA |
| Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Disparo Bajo | Bien | Bien | EN FALLA |
| Alarma | Disparo | Alarma | Alarma | Bien | Bien | Bien | Bien | Bien | Bien | Alarma Baja | Bien | Bien | EN FALLA |
| Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Disparo Bajo | Bien | Bien | EN FALLA |
| Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Bien | Disparo Bajo | Bien | Bien | EN FALLA |
| ## Modifi | car tabla |
Tabla<- Disparos
Tabla$TMRCLABien<- ifelse(Disparos$TMRCLA == "Bien", 1, 0)
Tabla$TMRCLAAlarma<- ifelse(Disparos$TMRCLA == "Alarma", 5, 0)
Tabla$TMRCLADisparo<- ifelse(Disparos$TMRCLA == "Disparo", 10, 0)
Tabla$TMA1LABien<- ifelse(Disparos$TMA1LA == "Bien", 1, 0)
Tabla$TMA1LAAlarma<- ifelse(Disparos$TMA1LA == "Alarma", 5, 0)
Tabla$TMA1LADisparo<- ifelse(Disparos$TMA1LA == "Disparo", 10, 0)
Tabla$TMA2LABien<- ifelse(Disparos$TMA2LA == "Bien", 1, 0)
Tabla$TMA2LAAlarma<- ifelse(Disparos$TMA2LA == "Alarma", 5, 0)
Tabla$TMA2LADisparo<- ifelse(Disparos$TMA2LA == "Disparo", 10, 0)
Tabla$TACCLABien<- ifelse(Disparos$TACCLA == "Bien", 1, 0)
Tabla$TACCLAAlarma<- ifelse(Disparos$TACCLA == "Alarma", 5, 0)
Tabla$TACCLADisparo<- ifelse(Disparos$TACCLA == "Disparo", 10, 0)
Tabla$VEACLABien <- ifelse(Disparos$VEACLA == "Bien", 1, 0)
Tabla$VEACLAAlarma<- ifelse(Disparos$VEACLA == "Alarma", 5, 0)
Tabla$VEACLADisparo<- ifelse(Disparos$VEACLA == "Disparo", 10, 0)
Tabla$VERCLABien <- ifelse(Disparos$VERCLA == "Bien", 1, 0)
Tabla$VERCLAAlarma<- ifelse(Disparos$VERCLA == "Alarma", 5, 0)
Tabla$VERCLADisparo<- ifelse(Disparos$VERCLA == "Disparo", 10, 0)
Tabla$TMRCLOABien <- ifelse(Disparos$TMRCLOA == "Bien", 1, 0)
Tabla$TMRCLOAAlarma<- ifelse(Disparos$TMRCLOA == "Alarma", 5, 0)
Tabla$TMRCLOADisparo<- ifelse(Disparos$TMRCLOA == "Disparo", 10, 0)
Tabla$TACCLOABien <- ifelse(Disparos$TACCLOA == "Bien", 1, 0)
Tabla$TACCLOAAlarma<- ifelse(Disparos$TACCLOA == "Alarma", 5, 0)
Tabla$TACCLOADisparo<- ifelse(Disparos$TACCLOA == "Disparo", 10, 0)
Tabla$VERBien <- ifelse(Disparos$VER == "Bien", 1, 0)
Tabla$VERAlarma<- ifelse(Disparos$VER == "Alarma", 5, 0)
Tabla$VERDisparo<- ifelse(Disparos$VER == "Disparo", 10, 0)
Tabla$TTABien <- ifelse(Disparos$TTA == "Bien", 1, 0)
Tabla$TTAAlarma<- ifelse(Disparos$TTA == "Alarma", 5, 0)
Tabla$TTADisparo<- ifelse(Disparos$TTA == "Disparo", 10, 0)
Tabla$PAABien <- ifelse(Disparos$PAA == "Bien", 1, 0)
Tabla$PAAAlarmaB<- ifelse(Disparos$PAA == "Alarma Baja", 5, 0)
Tabla$PAAAlarmaA<- ifelse(Disparos$PAA == "Alarma Alto", -5, 0)
Tabla$PAADisparoB<- ifelse(Disparos$PAA == "Disparo Bajo", 10, 0)
Tabla$PAADisparoA<- ifelse(Disparos$PAA == "Disparo Alto", -10, 0)
Tabla$TAaTBien <- ifelse(Disparos$TAaT == "Bien", 1, 0)
Tabla$TAaTAlarma<- ifelse(Disparos$TAaT == "Alarma", 5, 0)
Tabla$TAaTDisparo<- ifelse(Disparos$TAaT == "Disparo", 10, 0)
Tabla$TAaCBien <- ifelse(Disparos$TAaC == "Bien", 1, 0)
Tabla$TAaCAlarma<- ifelse(Disparos$TAaC == "Alarma", 5, 0)
Tabla$TAaCDisparo<- ifelse(Disparos$TAaC == "Disparo", 10, 0)
Datos_para_cluster<- Tabla[, -c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)]
kable( head(Datos_para_cluster[,c(1,2,3,4,5,6,7,8)]))
| TMRCLABien | TMRCLAAlarma | TMRCLADisparo | TMA1LABien | TMA1LAAlarma | TMA1LADisparo | TMA2LABien | TMA2LAAlarma |
|---|---|---|---|---|---|---|---|
| 0 | 5 | 0 | 0 | 0 | 10 | 0 | 5 |
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 0 | 5 | 0 | 0 | 0 | 10 | 0 | 5 |
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
set.seed(80)
cluster<- kmeans(Datos_para_cluster, centers = 10, nstart = 50)
names(cluster)
## [1] "cluster" "centers" "totss" "withinss"
## [5] "tot.withinss" "betweenss" "size" "iter"
## [9] "ifault"
sumbt<- kmeans(Datos_para_cluster, centers = 10)$betweenss
sumbt2<- kmeans(Datos_para_cluster, centers = 10)$tot.withinss
for(i in 1:20) sumbt[i]<- kmeans(Datos_para_cluster, centers = i, nstart = 50)$betweenss
for(i in 1:20) sumbt2[i]<- kmeans(Datos_para_cluster, centers = i, nstart = 50)$tot.withinss
plot(1:20, sumbt, type = "b", xlab = "numero de cluster", ylab = "Inercia entre grupos")
plot(1:20, sumbt2, type = "b", xlab = "numero de cluster", ylab = "Inercia dentro de los grupos")
cluster1<- Disparos[ cluster$cluster==1,]
cluster2<- Disparos[ cluster$cluster==2,]
cluster3<- Disparos[ cluster$cluster==3,]
cluster4<- Disparos[ cluster$cluster==4,]
cluster5<- Disparos[ cluster$cluster==5,]
cluster6<- Disparos[ cluster$cluster==6,]
cluster7<- Disparos[ cluster$cluster==7,]
cluster8<- Disparos[ cluster$cluster==8,]
cluster9<- Disparos[ cluster$cluster==9,]
cluster10<- Disparos[ cluster$cluster==10,]
datos_listos<- Disparos[-c(14)]
datos_listos$Caso<- ifelse(cluster$cluster==1, "Caso 1",
ifelse(cluster$cluster==2, "Caso 2",
ifelse(cluster$cluster==3, "Caso 3",
ifelse(cluster$cluster==4, "Caso 4",
ifelse(cluster$cluster==5, "Caso 5",
ifelse(cluster$cluster==6, "Caso 6",
ifelse(cluster$cluster==7, "Caso 7",
ifelse(cluster$cluster==8, "Caso 8",
ifelse(cluster$cluster==9, "Caso 9",
ifelse(cluster$cluster==10, "Caso 10",NaN))))))))))
datos_listos[c(1:5),]
## # A tibble: 5 x 14
## TMRCLA TMA1LA TMA2LA TACCLA VEACLA VERCLA TMRCLOA TACCLOA VER TTA
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 Alarma Dispa~ Alarma Alarma Bien Bien Bien Bien Bien Bien
## 2 Bien Bien Bien Bien Bien Bien Bien Bien Bien Bien
## 3 Bien Bien Bien Bien Bien Bien Bien Bien Bien Bien
## 4 Alarma Dispa~ Alarma Alarma Bien Bien Bien Bien Bien Bien
## 5 Bien Bien Bien Bien Bien Bien Bien Bien Bien Bien
## # ... with 4 more variables: PAA <chr>, TAaT <chr>, TAaC <chr>, Caso <chr>
# Se crea una particion aleatoria de los datos del cluster 1
ind <- sample(2,nrow(cluster1), replace = TRUE, prob = c(0.2, 0.8) ) #80% entrenamiento y 20% test
Test_C1<- cluster1[ind==1,-14]
Test_C1$Caso<- "Caso 1"
Train_C1<- cluster1[ind==2,-14]
Train_C1$Caso<- "Caso 1"
# Se crea una particion aleatoria de los datos del cluster 2
ind <- sample(2,nrow(cluster2), replace = TRUE, prob = c(0.4, 0.6) ) #80% entrenamiento y 20% test
Test_C2<- cluster2[ind==1,-14]
Test_C2$Caso<- "Caso 2"
Train_C2<- cluster2[ind==2,-14]
Train_C2$Caso<- "Caso 2"
# Se crea una particion aleatoria de los datos del cluster 3
ind <- sample(2,nrow(cluster3), replace = TRUE, prob = c(0.2, 0.8) ) #80% entrenamiento y 20% test
Test_C3<- cluster3[ind==1,-14]
Test_C3$Caso<- "Caso 3"
Train_C3<- cluster3[ind==2,-14]
Train_C3$Caso<- "Caso 3"
# Se crea una particion aleatoria de los datos del cluster 4
ind <- sample(2,nrow(cluster4), replace = TRUE, prob = c(0.2, 0.8) ) #80% entrenamiento y 20% test
Test_C4<- cluster4[ind==1,-14]
Test_C4$Caso<- "Caso 4"
Train_C4<- cluster4[ind==2,-14]
Train_C4$Caso<- "Caso 4"
# Se crea una particion aleatoria de los datos del cluster 5
ind <- sample(2,nrow(cluster5), replace = TRUE, prob = c(0.5, 0.5) ) #80% entrenamiento y 20% test
Test_C5<- cluster5[ind==1,-14]
Test_C5$Caso<- "Caso 5"
Train_C5<- cluster5[ind==2,-14]
Train_C5$Caso<- "Caso 5"
# Se crea una particion aleatoria de los datos del cluster 6
ind <- sample(2,nrow(cluster6), replace = TRUE, prob = c(0.4, 0.6) ) #80% entrenamiento y 20% test
Test_C6<- cluster6[ind==1,-14]
Test_C6$Caso<- "Caso 6"
Train_C6<- cluster6[ind==2,-14]
Train_C6$Caso<- "Caso 6"
# Se crea una particion aleatoria de los datos del cluster 7
ind <- sample(2,nrow(cluster7), replace = TRUE, prob = c(0.3, 0.7) ) #80% entrenamiento y 20% test
Test_C7<- cluster7[ind==1,-14]
Test_C7$Caso<- "Caso 7"
Train_C7<- cluster7[ind==2,-14]
Train_C7$Caso<- "Caso 7"
# Se crea una particion aleatoria de los datos del cluster 8
ind <- sample(3,nrow(cluster8), replace = TRUE, prob = c(0.1, 0.1, 0.8) ) #15% entrenamiento y 5% test
Test_C8<- cluster8[ind==1,-14]
Test_C8$Caso<- "Caso 8"
Train_C8<- cluster8[ind==2,-14]
Train_C8$Caso<- "Caso 8"
# Se crea una particion aleatoria de los datos del cluster 9
ind <- sample(2,nrow(cluster9), replace = TRUE, prob = c(0.2, 0.8) ) #80% entrenamiento y 20% test
Test_C9<- cluster9[ind==1,-14]
Test_C9$Caso<- "Caso 9"
Train_C9<- cluster9[ind==2,-14]
Train_C9$Caso<- "Caso 9"
# Se crea una particion aleatoria de los datos del cluster 10
ind <- sample(3,nrow(cluster10), replace = TRUE, prob = c(0.1, 0.1, 0.8) ) #15% entrenamiento y 5% test
Test_C10<- cluster10[ind==1,-14]
Test_C10$Caso<- "Caso 10"
Train_C10<- cluster10[ind==2,-14]
Train_C10$Caso<- "Caso 10"
#se agregan las particiones creadas al dataframe Train y Test
Test<- rbind(Test_C1,Test_C2)
Test<- rbind(Test,Test_C3)
Test<- rbind(Test,Test_C4)
Test<- rbind(Test,Test_C5)
Test<- rbind(Test,Test_C6)
Test<- rbind(Test,Test_C7)
Test<- rbind(Test,Test_C8)
Test<- rbind(Test,Test_C9)
Test<- rbind(Test,Test_C10)
Train<- rbind(Train_C1,Train_C2)
Train<- rbind(Train,Train_C3)
Train<- rbind(Train,Train_C4)
Train<- rbind(Train,Train_C5)
Train<- rbind(Train,Train_C6)
Train<- rbind(Train,Train_C7)
Train<- rbind(Train,Train_C8)
Train<- rbind(Train,Train_C9)
Train<- rbind(Train,Train_C10)
modelo <- naive_bayes(Caso ~ ., data = Test)
modelo
## ================================ Naive Bayes =================================
## Call:
## naive_bayes.formula(formula = Caso ~ ., data = Test)
##
## A priori probabilities:
##
## Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5
## 0.10769231 0.46153846 0.03076923 0.06153846 0.03076923 0.01538462
## Caso 6 Caso 7 Caso 8 Caso 9
## 0.01538462 0.04615385 0.20000000 0.03076923
##
## Tables:
##
## TMRCLA Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Caso 7 Caso 8
## Alarma 0.0 0.0 1.0 0.5 0.0 0.0 1.0 1.0 0.0
## Bien 1.0 1.0 0.0 0.5 1.0 1.0 0.0 0.0 1.0
##
## TMRCLA Caso 9
## Alarma 0.0
## Bien 1.0
##
##
## TMA1LA Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Caso 7 Caso 8
## Alarma 0.0 0.0 1.0 0.5 0.0 0.0 0.0 1.0 0.0
## Bien 1.0 1.0 0.0 0.5 1.0 0.0 0.0 0.0 1.0
## Disparo 0.0 0.0 0.0 0.0 0.0 1.0 1.0 0.0 0.0
##
## TMA1LA Caso 9
## Alarma 0.0
## Bien 1.0
## Disparo 0.0
##
##
## TMA2LA Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5
## Alarma 0.0000000 0.0000000 1.0000000 0.5000000 0.0000000 0.0000000
## Bien 1.0000000 1.0000000 0.0000000 0.5000000 1.0000000 1.0000000
##
## TMA2LA Caso 6 Caso 7 Caso 8 Caso 9
## Alarma 1.0000000 0.6666667 0.0000000 0.0000000
## Bien 0.0000000 0.3333333 1.0000000 1.0000000
##
##
## TACCLA Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Caso 7 Caso 8
## Alarma 0.0 0.0 1.0 0.5 0.0 0.0 1.0 1.0 0.0
## Bien 1.0 1.0 0.0 0.5 1.0 1.0 0.0 0.0 1.0
##
## TACCLA Caso 9
## Alarma 0.0
## Bien 1.0
##
##
## VEACLA Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5
## Alarma 0.00000000 0.03333333 0.00000000 0.50000000 0.00000000 0.00000000
## Bien 1.00000000 0.96666667 1.00000000 0.50000000 1.00000000 1.00000000
##
## VEACLA Caso 6 Caso 7 Caso 8 Caso 9
## Alarma 0.00000000 0.00000000 0.00000000 0.00000000
## Bien 1.00000000 1.00000000 1.00000000 1.00000000
##
## # ... and 8 more tables
se realiza una prueba de identificacion tomando un elemento aleatorio del set de test para verificar la correcta idntificacion de fallas
prueba<- Test[sample(1:65, 1), ]
identifico<- predict(modelo, prueba)
identifico
## [1] Caso 10
## 10 Levels: Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 ... Caso 9
comparador<- table(prueba$Caso, identifico, dnn = c("Actual", "Predicha"))
comparador
## Predicha
## Actual Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Caso 7 Caso 8
## Caso 10 0 1 0 0 0 0 0 0 0
## Predicha
## Actual Caso 9
## Caso 10 0
##Prueba completa del set de test como el sistema de identificacion de fallas funciono correctamente con una observacion del set de Test se procede a evaluar la totalidad de dicho set
pred <- predict(modelo, Test)
pred
## [1] Caso 1 Caso 1 Caso 1 Caso 1 Caso 1 Caso 1 Caso 1 Caso 2
## [9] Caso 2 Caso 3 Caso 3 Caso 3 Caso 3 Caso 4 Caso 4 Caso 5
## [17] Caso 6 Caso 7 Caso 7 Caso 7 Caso 8 Caso 8 Caso 8 Caso 8
## [25] Caso 8 Caso 8 Caso 8 Caso 8 Caso 8 Caso 8 Caso 8 Caso 8
## [33] Caso 8 Caso 9 Caso 9 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10
## [41] Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10
## [49] Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10
## [57] Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10 Caso 10
## [65] Caso 10
## 10 Levels: Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 ... Caso 9
tab <- table(Test$Caso, pred, dnn = c("Actual", "Predicha"))
confusionMatrix(tab)
## Confusion Matrix and Statistics
##
## Predicha
## Actual Caso 1 Caso 10 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Caso 7 Caso 8
## Caso 1 7 0 0 0 0 0 0 0 0
## Caso 10 0 30 0 0 0 0 0 0 0
## Caso 2 0 0 2 0 0 0 0 0 0
## Caso 3 0 0 0 4 0 0 0 0 0
## Caso 4 0 0 0 0 2 0 0 0 0
## Caso 5 0 0 0 0 0 1 0 0 0
## Caso 6 0 0 0 0 0 0 1 0 0
## Caso 7 0 0 0 0 0 0 0 3 0
## Caso 8 0 0 0 0 0 0 0 0 13
## Caso 9 0 0 0 0 0 0 0 0 0
## Predicha
## Actual Caso 9
## Caso 1 0
## Caso 10 0
## Caso 2 0
## Caso 3 0
## Caso 4 0
## Caso 5 0
## Caso 6 0
## Caso 7 0
## Caso 8 0
## Caso 9 2
##
## Overall Statistics
##
## Accuracy : 1
## 95% CI : (0.9448, 1)
## No Information Rate : 0.4615
## P-Value [Acc > NIR] : < 2.2e-16
##
## Kappa : 1
##
## Mcnemar's Test P-Value : NA
##
## Statistics by Class:
##
## Class: Caso 1 Class: Caso 10 Class: Caso 2
## Sensitivity 1.0000 1.0000 1.00000
## Specificity 1.0000 1.0000 1.00000
## Pos Pred Value 1.0000 1.0000 1.00000
## Neg Pred Value 1.0000 1.0000 1.00000
## Prevalence 0.1077 0.4615 0.03077
## Detection Rate 0.1077 0.4615 0.03077
## Detection Prevalence 0.1077 0.4615 0.03077
## Balanced Accuracy 1.0000 1.0000 1.00000
## Class: Caso 3 Class: Caso 4 Class: Caso 5
## Sensitivity 1.00000 1.00000 1.00000
## Specificity 1.00000 1.00000 1.00000
## Pos Pred Value 1.00000 1.00000 1.00000
## Neg Pred Value 1.00000 1.00000 1.00000
## Prevalence 0.06154 0.03077 0.01538
## Detection Rate 0.06154 0.03077 0.01538
## Detection Prevalence 0.06154 0.03077 0.01538
## Balanced Accuracy 1.00000 1.00000 1.00000
## Class: Caso 6 Class: Caso 7 Class: Caso 8
## Sensitivity 1.00000 1.00000 1.0
## Specificity 1.00000 1.00000 1.0
## Pos Pred Value 1.00000 1.00000 1.0
## Neg Pred Value 1.00000 1.00000 1.0
## Prevalence 0.01538 0.04615 0.2
## Detection Rate 0.01538 0.04615 0.2
## Detection Prevalence 0.01538 0.04615 0.2
## Balanced Accuracy 1.00000 1.00000 1.0
## Class: Caso 9
## Sensitivity 1.00000
## Specificity 1.00000
## Pos Pred Value 1.00000
## Neg Pred Value 1.00000
## Prevalence 0.03077
## Detection Rate 0.03077
## Detection Prevalence 0.03077
## Balanced Accuracy 1.00000