#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 = ";")
diabetes_m<-diabetes_m[,2:10]
head(diabetes_m)
## NumeroEmbarazos Concentrac.blucosa.plama Presión.arterial.diastólica
## 1 6 148 72
## 2 1 85 66
## 3 8 183 64
## 4 1 89 NA
## 5 0 137 40
## 6 5 116 74
## Tríceps.espesor.del.pliegue.cutáneo X2.horas.suero.insulina
## 1 35 0
## 2 29 0
## 3 0 0
## 4 23 94
## 5 NA 168
## 6 0 0
## Índice.de.masa.corporal Función.pedigrí.de.la.diabetes edad resultado
## 1 33.6 0.627 50 Positivo
## 2 26.6 0.351 31 Negativo
## 3 23.3 0.672 32 Positivo
## 4 28.1 0.167 21 Negativo
## 5 43.1 2.288 33 Positivo
## 6 25.6 0.201 30 Negativo
#Observar los datos como minimo hasta el maximo de los valores
summary(diabetes_m)
## NumeroEmbarazos Concentrac.blucosa.plama Presión.arterial.diastólica
## Min. : 0.000 Min. : 0.0 Min. : 0.00
## 1st Qu.: 1.000 1st Qu.: 99.0 1st Qu.: 62.00
## Median : 3.000 Median :117.0 Median : 72.00
## Mean : 3.845 Mean :120.9 Mean : 69.05
## 3rd Qu.: 6.000 3rd Qu.:140.2 3rd Qu.: 80.00
## Max. :17.000 Max. :199.0 Max. :122.00
## NA's :84
## Tríceps.espesor.del.pliegue.cutáneo X2.horas.suero.insulina
## Min. : 0.00 Min. : 0.00
## 1st Qu.: 0.00 1st Qu.: 0.00
## Median :23.00 Median : 24.00
## Mean :20.41 Mean : 78.23
## 3rd Qu.:32.00 3rd Qu.:127.75
## Max. :99.00 Max. :680.00
## NA's :66 NA's :70
## Índice.de.masa.corporal Función.pedigrí.de.la.diabetes edad
## Min. : 0.00 Min. :0.0780 Min. :21.00
## 1st Qu.:27.30 1st Qu.:0.2437 1st Qu.:24.00
## Median :32.00 Median :0.3725 Median :29.00
## Mean :31.99 Mean :0.4719 Mean :33.24
## 3rd Qu.:36.60 3rd Qu.:0.6262 3rd Qu.:41.00
## Max. :67.10 Max. :2.4200 Max. :81.00
##
## resultado
## Negativo:500
## Positivo:268
##
##
##
##
##
#Imputamos DMwR para usar el comando KNNIMPUTATION
library(DMwR)
library(nnet)
#Imputamos por KNNIMPUTATION(borra todos los NA)
diabetes1_m=knnImputation(diabetes_m)
#Observar los datos como minimo hasta el maximo de los valores
summary(diabetes1_m)
## NumeroEmbarazos Concentrac.blucosa.plama Presión.arterial.diastólica
## Min. : 0.000 Min. : 0.0 Min. : 0.00
## 1st Qu.: 1.000 1st Qu.: 99.0 1st Qu.: 63.02
## Median : 3.000 Median :117.0 Median : 71.21
## Mean : 3.845 Mean :120.9 Mean : 68.94
## 3rd Qu.: 6.000 3rd Qu.:140.2 3rd Qu.: 79.06
## Max. :17.000 Max. :199.0 Max. :122.00
## Tríceps.espesor.del.pliegue.cutáneo X2.horas.suero.insulina
## Min. : 0.0 Min. : 0.00
## 1st Qu.: 0.0 1st Qu.: 0.00
## Median :23.0 Median : 42.39
## Mean :20.5 Mean : 78.57
## 3rd Qu.:32.0 3rd Qu.:126.55
## Max. :99.0 Max. :680.00
## Índice.de.masa.corporal Función.pedigrí.de.la.diabetes edad
## Min. : 0.00 Min. :0.0780 Min. :21.00
## 1st Qu.:27.30 1st Qu.:0.2437 1st Qu.:24.00
## Median :32.00 Median :0.3725 Median :29.00
## Mean :31.99 Mean :0.4719 Mean :33.24
## 3rd Qu.:36.60 3rd Qu.:0.6262 3rd Qu.:41.00
## Max. :67.10 Max. :2.4200 Max. :81.00
## resultado
## Negativo:500
## Positivo:268
##
##
##
##
#Se obtiene la muestra de DIABETES, separando un 70% y 30% respectivamente
muestra=sample(537,231)
#La muestra me permite obtener el TRAIN y TEST
train=diabetes1_m[-muestra,]
test=diabetes1_m[muestra,]
#Con el set.seed para inicializar el generador de números aleatorios
set.seed(111)
#Evaluamos el campo resultado y con el "as.factor" con un vector numerico
diabetes1_m$resultado=as.factor(diabetes1_m$resultado)
train$resultado=as.factor(train$resultado)
test$resultado=as.factor(test$resultado)
modelo_diabe=nnet(resultado~.,data=train,size=50)
## # weights: 501
## initial value 1024.337408
## iter 10 value 323.055792
## iter 20 value 300.409765
## iter 30 value 287.354368
## iter 40 value 273.491587
## iter 50 value 258.518835
## iter 60 value 243.306240
## iter 70 value 230.276473
## iter 80 value 215.872276
## iter 90 value 212.515875
## iter 100 value 207.516118
## final value 207.516118
## stopped after 100 iterations
predichos_diabe=predict(modelo_diabe,test,type = "class")
predichos_diabe
## [1] "Negativo" "Positivo" "Positivo" "Negativo" "Positivo" "Negativo"
## [7] "Negativo" "Positivo" "Positivo" "Negativo" "Negativo" "Negativo"
## [13] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [19] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [25] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [31] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Positivo"
## [37] "Negativo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
## [43] "Negativo" "Negativo" "Positivo" "Positivo" "Positivo" "Negativo"
## [49] "Positivo" "Negativo" "Negativo" "Positivo" "Positivo" "Positivo"
## [55] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [61] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
## [67] "Negativo" "Negativo" "Negativo" "Positivo" "Positivo" "Positivo"
## [73] "Positivo" "Positivo" "Negativo" "Negativo" "Positivo" "Negativo"
## [79] "Negativo" "Negativo" "Positivo" "Positivo" "Negativo" "Positivo"
## [85] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Negativo"
## [91] "Negativo" "Positivo" "Negativo" "Positivo" "Positivo" "Negativo"
## [97] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [103] "Negativo" "Positivo" "Positivo" "Positivo" "Positivo" "Negativo"
## [109] "Negativo" "Negativo" "Positivo" "Negativo" "Positivo" "Negativo"
## [115] "Negativo" "Positivo" "Positivo" "Positivo" "Negativo" "Negativo"
## [121] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Positivo"
## [127] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Positivo"
## [133] "Positivo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [139] "Positivo" "Positivo" "Negativo" "Negativo" "Positivo" "Negativo"
## [145] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [151] "Positivo" "Positivo" "Negativo" "Negativo" "Negativo" "Negativo"
## [157] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
## [163] "Negativo" "Negativo" "Positivo" "Negativo" "Positivo" "Positivo"
## [169] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Positivo"
## [175] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [181] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [187] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [193] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [199] "Negativo" "Negativo" "Negativo" "Positivo" "Negativo" "Negativo"
## [205] "Negativo" "Negativo" "Positivo" "Negativo" "Negativo" "Negativo"
## [211] "Negativo" "Negativo" "Negativo" "Negativo" "Positivo" "Negativo"
## [217] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [223] "Negativo" "Negativo" "Negativo" "Negativo" "Negativo" "Negativo"
## [229] "Negativo" "Negativo" "Negativo"
comparando=as.data.frame(cbind(test$resultado, predichos_diabe))
fix(comparando)
table(test$resultado, predichos_diabe)
## predichos_diabe
## Negativo Positivo
## Negativo 117 30
## Positivo 53 31
#Caret: Incluye una serie de funciones que facilitan el uso de decenas #de métodos complejos de clasificación y regresión.
library(caret)
str(predichos_diabe)
## chr [1:231] "Negativo" "Positivo" "Positivo" "Negativo" "Positivo" ...
predichos_diabe=as.factor(predichos_diabe)
indicadores_diabe=confusionMatrix(predichos_diabe,test$resultado)
indicadores_diabe
## Confusion Matrix and Statistics
##
## Reference
## Prediction Negativo Positivo
## Negativo 117 53
## Positivo 30 31
##
## Accuracy : 0.6407
## 95% CI : (0.5752, 0.7026)
## No Information Rate : 0.6364
## P-Value [Acc > NIR] : 0.47522
##
## Kappa : 0.1752
##
## Mcnemar's Test P-Value : 0.01574
##
## Sensitivity : 0.7959
## Specificity : 0.3690
## Pos Pred Value : 0.6882
## Neg Pred Value : 0.5082
## Prevalence : 0.6364
## Detection Rate : 0.5065
## Detection Prevalence : 0.7359
## Balanced Accuracy : 0.5825
##
## 'Positive' Class : Negativo
##
fix(train)
predichos_prob=predict(modelo_diabe,test,type = "raw")
predichos_prob
## [,1]
## 38 2.204627e-01
## 176 9.652132e-01
## 246 7.639364e-01
## 24 6.989742e-02
## 224 9.360519e-01
## 285 7.852021e-02
## 345 5.667558e-02
## 132 9.531492e-01
## 141 5.620562e-01
## 464 3.422131e-01
## 504 4.228302e-02
## 262 9.972727e-02
## 79 9.288232e-01
## 77 2.826642e-02
## 232 3.168903e-01
## 343 2.456448e-01
## 325 3.151280e-01
## 216 3.034482e-01
## 305 4.326352e-02
## 327 4.301223e-01
## 373 2.553043e-02
## 86 4.582457e-02
## 18 2.570206e-01
## 151 1.871730e-01
## 487 3.175431e-01
## 433 1.408787e-02
## 490 4.453890e-01
## 258 4.979705e-01
## 475 2.572334e-01
## 192 1.587736e-01
## 408 1.681763e-01
## 290 2.577736e-01
## 270 1.271872e-01
## 179 9.307035e-01
## 194 9.947987e-02
## 47 9.592098e-01
## 144 2.753663e-01
## 25 9.614800e-01
## 493 2.885242e-01
## 107 1.551120e-03
## 312 1.070140e-01
## 117 3.777005e-01
## 401 2.575631e-01
## 336 3.879390e-01
## 286 9.846036e-01
## 347 7.205407e-01
## 308 8.874823e-01
## 492 1.746726e-01
## 476 5.227803e-01
## 112 1.347858e-01
## 20 2.777022e-01
## 236 9.097431e-01
## 81 8.637338e-01
## 395 7.187344e-01
## 104 1.722741e-03
## 159 7.248946e-03
## 509 2.738273e-01
## 497 2.570150e-01
## 399 2.550381e-02
## 513 4.816971e-03
## 319 3.466940e-01
## 374 2.502940e-01
## 149 4.103565e-01
## 221 8.505797e-01
## 214 1.229378e-01
## 304 2.550032e-02
## 114 2.550140e-02
## 289 8.513522e-02
## 387 1.347166e-01
## 173 9.063014e-01
## 426 7.792809e-01
## 414 7.218362e-01
## 220 9.049677e-01
## 288 8.001757e-01
## 461 9.465735e-02
## 247 4.679700e-01
## 29 9.740337e-01
## 505 3.437120e-01
## 473 4.979829e-01
## 127 4.330734e-02
## 350 5.555177e-01
## 301 8.917257e-01
## 68 8.550148e-02
## 454 9.981077e-01
## 201 2.852122e-03
## 85 2.550032e-02
## 491 1.582552e-02
## 204 7.248112e-03
## 508 6.587309e-01
## 78 1.408987e-02
## 70 2.366606e-01
## 407 5.148194e-01
## 321 1.904376e-01
## 46 8.307624e-01
## 5 9.575145e-01
## 137 7.251043e-03
## 265 7.630523e-01
## 334 4.120417e-01
## 148 4.406746e-03
## 103 6.695767e-05
## 196 2.530508e-01
## 481 3.168885e-01
## 449 2.573204e-01
## 207 9.453822e-01
## 516 9.701233e-01
## 359 7.598191e-01
## 357 7.116143e-01
## 302 4.536500e-01
## 208 2.570195e-01
## 369 5.108102e-03
## 448 6.214254e-01
## 518 4.638152e-01
## 95 6.813279e-01
## 427 4.435150e-01
## 535 1.432492e-02
## 146 9.949896e-01
## 299 8.551091e-01
## 15 9.596859e-01
## 346 2.698354e-01
## 514 2.564645e-01
## 66 4.109903e-02
## 80 4.957137e-01
## 93 2.946908e-01
## 170 2.575696e-03
## 245 6.323687e-01
## 466 9.627022e-01
## 110 1.667222e-03
## 439 7.232057e-03
## 90 7.878028e-02
## 97 6.979094e-02
## 413 3.168888e-01
## 101 9.190431e-01
## 524 7.148482e-01
## 122 3.099958e-01
## 53 1.763524e-03
## 442 8.696872e-03
## 519 7.212548e-02
## 279 2.268716e-02
## 131 9.250748e-01
## 167 8.796205e-01
## 376 1.677473e-01
## 380 7.431706e-03
## 499 9.810502e-01
## 230 1.209407e-02
## 32 3.866482e-01
## 190 3.275038e-01
## 158 6.224246e-01
## 124 2.051852e-02
## 510 9.107652e-03
## 280 3.168888e-01
## 259 8.027489e-01
## 405 9.867724e-01
## 16 9.947987e-02
## 441 2.144997e-02
## 488 1.426712e-01
## 444 4.632930e-01
## 410 3.175358e-01
## 34 6.864875e-02
## 168 2.578188e-01
## 108 7.019886e-01
## 211 1.745641e-01
## 10 7.137133e-04
## 138 1.072789e-02
## 306 2.777154e-01
## 23 8.936963e-01
## 324 5.446584e-02
## 65 7.061106e-01
## 500 6.767993e-01
## 48 1.742088e-01
## 125 2.561499e-01
## 261 8.344608e-02
## 231 2.570151e-01
## 162 6.192982e-01
## 406 9.941330e-01
## 322 6.985163e-02
## 188 1.203804e-02
## 381 2.777218e-01
## 156 4.859572e-01
## 184 2.568120e-02
## 486 3.168887e-01
## 109 6.967433e-02
## 385 2.675004e-02
## 1 5.471897e-01
## 333 9.947987e-02
## 235 5.921979e-03
## 60 4.731465e-02
## 182 2.659676e-01
## 398 3.621956e-01
## 45 9.330787e-01
## 479 6.025092e-02
## 468 4.897733e-02
## 521 1.497141e-01
## 480 1.082258e-01
## 54 1.898024e-01
## 152 4.633462e-01
## 469 9.948139e-02
## 28 3.330081e-01
## 39 7.581622e-02
## 424 4.979666e-01
## 275 2.030469e-03
## 94 6.754582e-02
## 59 5.152396e-01
## 105 1.515122e-01
## 254 1.746441e-01
## 311 2.790770e-01
## 21 3.168918e-01
## 155 9.695289e-01
## 98 6.390021e-02
## 202 2.570141e-01
## 316 2.773364e-01
## 57 6.072499e-02
## 323 7.128868e-02
## 371 3.168888e-01
## 317 4.639544e-04
## 213 5.471968e-01
## 223 1.466208e-01
## 478 2.345165e-01
## 428 1.535970e-01
## 470 1.136000e-02
## 354 7.248114e-03
## 284 4.633781e-01
## 219 1.737917e-01
## 351 2.550032e-02
## 520 3.168954e-01
## 198 8.781964e-02
## 533 1.192427e-01
## 55 3.168701e-01
## 412 1.916503e-01
## 181 6.134162e-02
## 512 3.877151e-01
## 266 1.403479e-02
#Instalando libreria ROCR para visualizar el grafico y se observa una minima interseccion entra la semi curva y la linea recta
library(ROCR)
pred1=prediction(predichos_prob,test$resultado)
pred2=performance(pred1, "tpr","fpr")
plot(pred2, colorize=T)
lines(x=c(0,1), y=c(0,1))