#Insertar la base de datos Diabetes

diabetes_m=read.csv("https://raw.githubusercontent.com/VictorGuevaraP/Mineria-de-datos-2019-2/master/diabetes_m.csv",sep = ";")
#Observar  los datos como minimo hasta el maximo de los valores
summary(diabetes_m)
##        n         NumeroEmbarazos  Concentrac.blucosa.plama
##  Min.   :  1.0   Min.   : 0.000   Min.   :  0.0           
##  1st Qu.:192.8   1st Qu.: 1.000   1st Qu.: 99.0           
##  Median :384.5   Median : 3.000   Median :117.0           
##  Mean   :384.5   Mean   : 3.845   Mean   :120.9           
##  3rd Qu.:576.2   3rd Qu.: 6.000   3rd Qu.:140.2           
##  Max.   :768.0   Max.   :17.000   Max.   :199.0           
##                                                           
##  Presión.arterial.diastólica Tríceps.espesor.del.pliegue.cutáneo
##  Min.   :  0.00              Min.   : 0.00                      
##  1st Qu.: 62.00              1st Qu.: 0.00                      
##  Median : 72.00              Median :23.00                      
##  Mean   : 69.05              Mean   :20.41                      
##  3rd Qu.: 80.00              3rd Qu.:32.00                      
##  Max.   :122.00              Max.   :99.00                      
##  NA's   :84                  NA's   :66                         
##  X2.horas.suero.insulina Índice.de.masa.corporal
##  Min.   :  0.00          Min.   : 0.00          
##  1st Qu.:  0.00          1st Qu.:27.30          
##  Median : 24.00          Median :32.00          
##  Mean   : 78.23          Mean   :31.99          
##  3rd Qu.:127.75          3rd Qu.:36.60          
##  Max.   :680.00          Max.   :67.10          
##  NA's   :70                                     
##  Función.pedigrí.de.la.diabetes      edad          resultado  
##  Min.   :0.0780                 Min.   :21.00   Negativo:500  
##  1st Qu.:0.2437                 1st Qu.:24.00   Positivo:268  
##  Median :0.3725                 Median :29.00                 
##  Mean   :0.4719                 Mean   :33.24                 
##  3rd Qu.:0.6262                 3rd Qu.:41.00                 
##  Max.   :2.4200                 Max.   :81.00                 
## 

#Insertar las siguientes librerias #Amelia #VIM #DMwR

library(Amelia)
missmap(diabetes_m)
library(VIM)

miss=aggr(diabetes_m)

#Observar  los datos como minimo hasta el maximo de los valores del miss
summary(miss)
## 
##  Missings per variable: 
##                             Variable Count
##                                    n     0
##                      NumeroEmbarazos     0
##             Concentrac.blucosa.plama     0
##          Presión.arterial.diastólica    84
##  Tríceps.espesor.del.pliegue.cutáneo    66
##              X2.horas.suero.insulina    70
##              Índice.de.masa.corporal     0
##       Función.pedigrí.de.la.diabetes     0
##                                 edad     0
##                            resultado     0
## 
##  Missings in combinations of variables: 
##         Combinations Count    Percent
##  0:0:0:0:0:0:0:0:0:0   569 74.0885417
##  0:0:0:0:0:1:0:0:0:0    55  7.1614583
##  0:0:0:0:1:0:0:0:0:0    52  6.7708333
##  0:0:0:0:1:1:0:0:0:0     8  1.0416667
##  0:0:0:1:0:0:0:0:0:0    71  9.2447917
##  0:0:0:1:0:1:0:0:0:0     7  0.9114583
##  0:0:0:1:1:0:0:0:0:0     6  0.7812500
library(DMwR)
#Modificar todos los NA si en caso se tiene
diabetes2=knnImputation(diabetes_m)
#Observar  los datos como minimo hasta el maximo de los valores
summary(diabetes2)
##        n         NumeroEmbarazos  Concentrac.blucosa.plama
##  Min.   :  1.0   Min.   : 0.000   Min.   :  0.0           
##  1st Qu.:192.8   1st Qu.: 1.000   1st Qu.: 99.0           
##  Median :384.5   Median : 3.000   Median :117.0           
##  Mean   :384.5   Mean   : 3.845   Mean   :120.9           
##  3rd Qu.:576.2   3rd Qu.: 6.000   3rd Qu.:140.2           
##  Max.   :768.0   Max.   :17.000   Max.   :199.0           
##  Presión.arterial.diastólica Tríceps.espesor.del.pliegue.cutáneo
##  Min.   :  0.00              Min.   : 0.00                      
##  1st Qu.: 63.34              1st Qu.: 0.00                      
##  Median : 71.26              Median :22.93                      
##  Mean   : 68.89              Mean   :20.48                      
##  3rd Qu.: 78.15              3rd Qu.:32.00                      
##  Max.   :122.00              Max.   :99.00                      
##  X2.horas.suero.insulina Índice.de.masa.corporal
##  Min.   :  0.00          Min.   : 0.00          
##  1st Qu.:  0.00          1st Qu.:27.30          
##  Median : 42.78          Median :32.00          
##  Mean   : 79.21          Mean   :31.99          
##  3rd Qu.:127.55          3rd Qu.:36.60          
##  Max.   :680.00          Max.   :67.10          
##  Función.pedigrí.de.la.diabetes      edad          resultado  
##  Min.   :0.0780                 Min.   :21.00   Negativo:500  
##  1st Qu.:0.2437                 1st Qu.:24.00   Positivo:268  
##  Median :0.3725                 Median :29.00                 
##  Mean   :0.4719                 Mean   :33.24                 
##  3rd Qu.:0.6262                 3rd Qu.:41.00                 
##  Max.   :2.4200                 Max.   :81.00
library(caret)
#Se obtiene el train y test mediante la evaluacion de la columna resultado
#de la base de datos, todo es guardado en una nueva variable "participio"
set.seed(111)
particio=createDataPartition(y=diabetes2$resultado, p=0.7, list = F,times = 1)
train=diabetes2[particio,]
test=diabetes2[-particio,]

dim(diabetes2)
## [1] 768  10
#Obtener los resultados de Train y Test
dim(train)
## [1] 538  10
dim(test)
## [1] 230  10
library(rpart)
modeloarbol=rpart(resultado~., data=train, method = "class")
modeloarbol
## n= 538 
## 
## node), split, n, loss, yval, (yprob)
##       * denotes terminal node
## 
##   1) root 538 188 Negativo (0.65055762 0.34944238)  
##     2) Concentrac.blucosa.plama< 123.5 332  63 Negativo (0.81024096 0.18975904)  
##       4) edad< 28.5 183  13 Negativo (0.92896175 0.07103825) *
##       5) edad>=28.5 149  50 Negativo (0.66442953 0.33557047)  
##        10) Índice.de.masa.corporal< 26.35 30   0 Negativo (1.00000000 0.00000000) *
##        11) Índice.de.masa.corporal>=26.35 119  50 Negativo (0.57983193 0.42016807)  
##          22) Concentrac.blucosa.plama< 103.5 59  15 Negativo (0.74576271 0.25423729)  
##            44) Función.pedigrí.de.la.diabetes< 0.6355 48   8 Negativo (0.83333333 0.16666667) *
##            45) Función.pedigrí.de.la.diabetes>=0.6355 11   4 Positivo (0.36363636 0.63636364) *
##          23) Concentrac.blucosa.plama>=103.5 60  25 Positivo (0.41666667 0.58333333)  
##            46) NumeroEmbarazos< 6.5 42  20 Negativo (0.52380952 0.47619048)  
##              92) X2.horas.suero.insulina< 140 30  11 Negativo (0.63333333 0.36666667)  
##               184) Índice.de.masa.corporal>=33.75 16   3 Negativo (0.81250000 0.18750000) *
##               185) Índice.de.masa.corporal< 33.75 14   6 Positivo (0.42857143 0.57142857) *
##              93) X2.horas.suero.insulina>=140 12   3 Positivo (0.25000000 0.75000000) *
##            47) NumeroEmbarazos>=6.5 18   3 Positivo (0.16666667 0.83333333) *
##     3) Concentrac.blucosa.plama>=123.5 206  81 Positivo (0.39320388 0.60679612)  
##       6) Índice.de.masa.corporal< 29.95 62  22 Negativo (0.64516129 0.35483871)  
##        12) edad< 26.5 17   1 Negativo (0.94117647 0.05882353) *
##        13) edad>=26.5 45  21 Negativo (0.53333333 0.46666667)  
##          26) edad>=56 9   0 Negativo (1.00000000 0.00000000) *
##          27) edad< 56 36  15 Positivo (0.41666667 0.58333333)  
##            54) Índice.de.masa.corporal>=28.8 10   2 Negativo (0.80000000 0.20000000) *
##            55) Índice.de.masa.corporal< 28.8 26   7 Positivo (0.26923077 0.73076923) *
##       7) Índice.de.masa.corporal>=29.95 144  41 Positivo (0.28472222 0.71527778)  
##        14) edad< 28.5 51  24 Positivo (0.47058824 0.52941176)  
##          28) Concentrac.blucosa.plama< 165.5 38  15 Negativo (0.60526316 0.39473684)  
##            56) Presión.arterial.diastólica>=72.86945 15   2 Negativo (0.86666667 0.13333333) *
##            57) Presión.arterial.diastólica< 72.86945 23  10 Positivo (0.43478261 0.56521739)  
##             114) NumeroEmbarazos>=0.5 14   5 Negativo (0.64285714 0.35714286) *
##             115) NumeroEmbarazos< 0.5 9   1 Positivo (0.11111111 0.88888889) *
##          29) Concentrac.blucosa.plama>=165.5 13   1 Positivo (0.07692308 0.92307692) *
##        15) edad>=28.5 93  17 Positivo (0.18279570 0.81720430) *
#insertar la libreria para mostrar el grafico de arbol
library(partykit)
plot(as.party(modeloarbol))

#predecir segun el modelo arbol 
predichos=predict(modeloarbol, test, type = "class")
predichos
##        2        8       12       14       29       34       36       39 
## Negativo Positivo Positivo Positivo Negativo Negativo Negativo Negativo 
##       42       44       46       48       49       58       60       62 
## Positivo Positivo Positivo Negativo Negativo Positivo Negativo Positivo 
##       63       64       65       66       71       75       78       82 
## Negativo Negativo Positivo Negativo Negativo Negativo Negativo Negativo 
##       87       89       94       96       98      101      102      106 
## Positivo Positivo Negativo Positivo Negativo Positivo Negativo Negativo 
##      110      111      114      116      117      121      122      124 
## Negativo Positivo Negativo Positivo Positivo Negativo Negativo Negativo 
##      125      126      131      134      135      136      140      149 
## Negativo Negativo Negativo Negativo Negativo Positivo Negativo Positivo 
##      150      151      152      155      158      164      165      167 
## Negativo Negativo Negativo Positivo Negativo Negativo Positivo Negativo 
##      168      169      170      175      176      182      185      188 
## Positivo Positivo Positivo Negativo Positivo Negativo Positivo Positivo 
##      190      192      195      206      208      210      216      218 
## Negativo Positivo Negativo Negativo Positivo Positivo Positivo Positivo 
##      224      225      228      232      234      241      244      245 
## Negativo Negativo Negativo Positivo Negativo Negativo Positivo Positivo 
##      247      249      250      252      253      257      262      264 
## Positivo Positivo Negativo Positivo Negativo Positivo Negativo Positivo 
##      266      268      278      279      282      283      284      286 
## Positivo Negativo Negativo Negativo Positivo Positivo Positivo Positivo 
##      287      290      291      292      294      297      299      301 
## Positivo Negativo Negativo Negativo Negativo Positivo Negativo Positivo 
##      305      312      319      320      329      332      335      338 
## Positivo Negativo Negativo Negativo Negativo Negativo Negativo Positivo 
##      339      340      346      347      355      356      357      359 
## Positivo Positivo Positivo Negativo Negativo Positivo Negativo Negativo 
##      364      369      376      377      379      380      383      384 
## Positivo Negativo Positivo Negativo Positivo Positivo Negativo Negativo 
##      386      390      399      402      420      427      433      439 
## Negativo Negativo Negativo Positivo Positivo Negativo Negativo Negativo 
##      443      446      450      451      452      453      456      458 
## Negativo Positivo Negativo Negativo Negativo Negativo Positivo Negativo 
##      466      470      471      478      480      492      494      506 
## Negativo Negativo Negativo Negativo Negativo Negativo Negativo Negativo 
##      509      517      518      528      529      536      539      555 
## Negativo Positivo Positivo Negativo Negativo Negativo Negativo Negativo 
##      556      558      562      572      575      576      577      579 
## Positivo Positivo Positivo Negativo Negativo Negativo Negativo Positivo 
##      580      581      583      586      587      590      596      603 
## Positivo Negativo Positivo Negativo Positivo Negativo Positivo Positivo 
##      607      610      613      615      619      622      623      627 
## Positivo Negativo Positivo Positivo Positivo Negativo Positivo Negativo 
##      628      629      631      633      634      637      638      639 
## Negativo Positivo Positivo Negativo Negativo Positivo Negativo Positivo 
##      646      657      659      667      671      675      676      678 
## Positivo Negativo Positivo Positivo Positivo Negativo Positivo Negativo 
##      682      684      685      687      688      689      695      696 
## Negativo Negativo Negativo Negativo Positivo Negativo Negativo Positivo 
##      697      699      700      704      707      708      710      713 
## Negativo Negativo Negativo Positivo Negativo Negativo Negativo Positivo 
##      716      717      719      722      725      736      743      745 
## Positivo Positivo Negativo Negativo Positivo Negativo Negativo Positivo 
##      747      748      751      752      759      762 
## Negativo Positivo Negativo Negativo Negativo Positivo 
## Levels: Negativo Positivo
#matriz de confusion
table(predichos, test$resultado)
##           
## predichos  Negativo Positivo
##   Negativo      105       29
##   Positivo       45       51
#Utilizar los indicadores
library(caret)
str(test$resultado)
str(predichos)
test$resultado=as.factor(test$resultado)
indicadores=confusionMatrix(predichos,test$resultado)
indicadores