#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