Está en la página 1de 8

Presentación KDD

Christiam Pistala - Brayan Pantoja - Sandra Benavides- Jorge Suarez

2022-04-19

1 – Abstracción del escenario


Titanic es un paquete R que contiene conjuntos de datos que brindan informació n
sobre el destino de los pasajeros en el fatal viaje inaugural del transatlá ntico “Titanic”,
con variables como el estado econó mico (clase), el sexo, la edad y la supervivencia.
Estos conjuntos de datos a menudo se usan como una introducció n al aprendizaje
automá tico.
• Variables
PassengerId: nù mero de identificaciò n del pasajero.
Survived: Indica si el pasajero sobrevive o no.
Pclass: clase en la que viaja el pasajero.
Name: Nombre del pasajero
Sex: Sexo del pasajero.
Age: Edad del pasajero.
SibSp: Nú mero de hermanos / có nyuges a bordo.
Parch:Nú mero de padres/niñ os a bordo.
Ticket: Nú mero de tiquete.
Fare: Tarifa de pasajero.
Cabin: Referencia de cabina.
Embarked: Puerto de embarque.
• Importar datos: Una vez instalada la librería “titanic”, se obtiene la base de
datos “titanic_train” así:
#library(tidyverse)
library(titanic)
data("titanic_train")
head(titanic_train)

## PassengerId Survived Pclass


## 1 1 0 3
## 2 2 1 1
## 3 3 1 3
## 4 4 1 1
## 5 5 0 3
## 6 6 0 3
## Name Sex Age SibSp
Parch
## 1 Braund, Mr. Owen Harris male 22 1
0
## 2 Cumings, Mrs. John Bradley (Florence Briggs Thayer) female 38 1
0
## 3 Heikkinen, Miss. Laina female 26 0
0
## 4 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1
0
## 5 Allen, Mr. William Henry male 35 0
0
## 6 Moran, Mr. James male NA 0
0
## Ticket Fare Cabin Embarked
## 1 A/5 21171 7.2500 S
## 2 PC 17599 71.2833 C85 C
## 3 STON/O2. 3101282 7.9250 S
## 4 113803 53.1000 C123 S
## 5 373450 8.0500 S
## 6 330877 8.4583 Q

2 – Selección de los datos


En esta base de datos se descarta las variables “Cabin” y “Ticket”, ya que no son de
interés para nuestro objetivo.
titanic_train$Cabin<-NULL
titanic_train$Ticket<-NULL

3 – Limpieza y pre-procesamiento
Una vez eliminadas las variables que no será n ú tiles en nuestra investigació n, se
observa las variables que tienen datos faltantes así:
colSums(is.na(titanic_train))

## PassengerId Survived Pclass Name Sex


Age
## 0 0 0 0 0
177
## SibSp Parch Fare Embarked
## 0 0 0 0

Se observa que la variable edad tiene 177 datos faltantes, por lo cual se decide
completar los datos faltantes en esta variable con la media de la variable, usamos
summary para calcular la media y luego la asignamos en los datos faltantes así:
summary(titanic_train)

## PassengerId Survived Pclass Name


## Min. : 1.0 Min. :0.0000 Min. :1.000 Length:891
## 1st Qu.:223.5 1st Qu.:0.0000 1st Qu.:2.000 Class :character
## Median :446.0 Median :0.0000 Median :3.000 Mode :character
## Mean :446.0 Mean :0.3838 Mean :2.309
## 3rd Qu.:668.5 3rd Qu.:1.0000 3rd Qu.:3.000
## Max. :891.0 Max. :1.0000 Max. :3.000
##
## Sex Age SibSp Parch
## Length:891 Min. : 0.42 Min. :0.000 Min. :0.0000
## Class :character 1st Qu.:20.12 1st Qu.:0.000 1st Qu.:0.0000
## Mode :character Median :28.00 Median :0.000 Median :0.0000
## Mean :29.70 Mean :0.523 Mean :0.3816
## 3rd Qu.:38.00 3rd Qu.:1.000 3rd Qu.:0.0000
## Max. :80.00 Max. :8.000 Max. :6.0000
## NA's :177
## Fare Embarked
## Min. : 0.00 Length:891
## 1st Qu.: 7.91 Class :character
## Median : 14.45 Mode :character
## Mean : 32.20
## 3rd Qu.: 31.00
## Max. :512.33
##

titanic_train$Age[is.na(titanic_train$Age)]<-29
colSums(is.na(titanic_train))

## PassengerId Survived Pclass Name Sex


Age
## 0 0 0 0 0
0
## SibSp Parch Fare Embarked
## 0 0 0 0

titanic_train=na.omit(titanic_train)

4 – Transformación de los datos


Se transforma las variables “sex” y “embarque” a variables tipo dummy así:
# Sex
sex=factor(titanic_train$Sex)
dum_sex=model.matrix(~sex)
# embarque
embarque=factor(titanic_train$Embarked)
dum_embarque=model.matrix(~embarque)

#unir variables
titanic_train=data.frame(titanic_train,dum_sex[,2],dum_embarque[,2:4])

titanic_train$Sex=dum_sex[,2]
titanic_train$embarque=dum_embarque[,2:4]
titanic_train$dum_sex=NULL
titanic_train$dum_embarque=NULL

5 – Selección de la apropiada tarea de Minería de Datos


• Selecció n de muestras para entrenamiento y prueba del modelo
En la libreria titanic estas muestras ya está n realizadas por defecto. Sin embargo, con
fines académicos realizaremos las muestras de tal manera que el 70% sean para
entrenamiento y el 30% para prueba.
set.seed(10)
tamano.total <- nrow(titanic_train)
tamano.entreno <- round(tamano.total*0.7)
datos.indices <- sample(1:tamano.total , size=tamano.entreno)
datos.entreno <- titanic_train[datos.indices,]
datos.test <- titanic_train[-datos.indices, ]

• Modelo usando regresió n logística


library(caret)

## Loading required package: ggplot2

## Loading required package: lattice

RL_titanic=glm(Survived~Pclass+Sex+Age+SibSp+Fare+embarqueC+embarqueS
+embarqueQ, data = datos.entreno,family = binomial)
summary(RL_titanic)

##
## Call:
## glm(formula = Survived ~ Pclass + Sex + Age + SibSp + Fare +
## embarqueC + embarqueS + embarqueQ, family = binomial, data =
datos.entreno)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.7070 -0.6269 -0.4283 0.6607 2.4779
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 16.150568 535.411444 0.030 0.97594
## Pclass -1.096340 0.171038 -6.410 1.46e-10 ***
## Sex -2.629373 0.232181 -11.325 < 2e-16 ***
## Age -0.043586 0.009387 -4.643 3.43e-06 ***
## SibSp -0.337501 0.119510 -2.824 0.00474 **
## Fare 0.002101 0.002693 0.780 0.43517
## embarqueC -10.733693 535.411272 -0.020 0.98401
## embarqueS -11.310052 535.411245 -0.021 0.98315
## embarqueQ -10.862074 535.411366 -0.020 0.98381
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 834.27 on 623 degrees of freedom
## Residual deviance: 558.38 on 615 degrees of freedom
## AIC: 576.38
##
## Number of Fisher Scoring iterations: 12

• Predicciones y evaluació n del modelo


pred_rl=predict(RL_titanic,datos.test)
head(pred_rl)

## 2 3 14 16 21 23
## 2.4765543 0.4349063 -3.0495203 0.2842126 -1.4524194 1.3625527

mod_pred=ifelse(pred_rl>0.5,1,0)
ss<-data.frame(mod_pred,datos.test$Survived)
head(ss)

## mod_pred datos.test.Survived
## 2 1 1
## 3 0 1
## 14 0 0
## 16 0 1
## 21 0 0
## 23 1 1

# Matriz de confusión
library("caret")
datos.test$Survived=factor(datos.test$Survived)
mod_pred=factor(mod_pred)
confusionMatrix(mod_pred,datos.test$Survived)

## Confusion Matrix and Statistics


##
## Reference
## Prediction 0 1
## 0 156 39
## 1 12 60
##
## Accuracy : 0.809
## 95% CI : (0.7566, 0.8543)
## No Information Rate : 0.6292
## P-Value [Acc > NIR] : 1.334e-10
##
## Kappa : 0.5664
##
## Mcnemar's Test P-Value : 0.0002719
##
## Sensitivity : 0.9286
## Specificity : 0.6061
## Pos Pred Value : 0.8000
## Neg Pred Value : 0.8333
## Prevalence : 0.6292
## Detection Rate : 0.5843
## Detection Prevalence : 0.7303
## Balanced Accuracy : 0.7673
##
## 'Positive' Class : 0
##

• Modelo usando Á rbol de Decisió n


Para este modelo se utilizan las variables explicativas: Pclass, Sex, Age, SibSp, Fare,
embarqueC, embarqueS, embarqueQ. Con el fin de explicar la variable Survived.
library(rpart)
library(rattle)

## Loading required package: tibble

## Loading required package: bitops

## Rattle: A free graphical interface for data science with R.


## Versión 5.5.1 Copyright (c) 2006-2021 Togaware Pty Ltd.
## Escriba 'rattle()' para agitar, sacudir y rotar sus datos.

library(rpart.plot)
arbol_titanic=rpart(Survived~Pclass+Sex+Age+SibSp+Fare+embarqueC+embarque
S
+embarqueQ, data = datos.entreno,method = "class")
#grafica
rpart.plot(arbol_titanic)
• Predicciones y evaluació n del modelo
pred_arbol=predict(arbol_titanic,datos.test,type = "class")
comp2=data.frame(pred_arbol,datos.test$Survived)
head(comp2)

## pred_arbol datos.test.Survived
## 2 1 1
## 3 0 1
## 14 0 0
## 16 1 1
## 21 0 0
## 23 1 1

# Matriz de confusión
library("caret")
datos.test$Survived=factor(datos.test$Survived)
pred_arbol=factor(pred_arbol)
confusionMatrix(pred_arbol,datos.test$Survived)

## Confusión Matrix and Statistics


##
## Reference
## Prediction 0 1
## 0 157 34
## 1 11 65
##
## Accuracy : 0.8315
## 95% CI : (0.7811, 0.8743)
## No Information Rate : 0.6292
## P-Value [Acc > NIR] : 3.388e-13
##
## Kappa : 0.6207
##
## Mcnemar's Test P-Value : 0.00104
##
## Sensitivity : 0.9345
## Specificity : 0.6566
## Pos Pred Value : 0.8220
## Neg Pred Value : 0.8553
## Prevalence : 0.6292
## Detection Rate : 0.5880
## Detection Prevalence : 0.7154
## Balanced Accuracy : 0.7955
##
## 'Positive' Class : 0
##

Predicción caso particular


Para realizar la clasificació n de los dos pacientes nuevos inicialmente ingresamos
estos pacientes en un data frame así:
nuevo <- data.frame(PassengerId=c(2000,2001),
Pclass=c(3,1),Name=c("Christiam Pistala","Inés R"), Sex=c(1,0),
Age=c(28,9), SibSp=c(1,0),Parch=c(0,0),Fare=c(8.0292,37),
embarqueC=c(1,0), embarqueQ=c(0,1),embarqueS=c(0,0))
nuevo

## PassengerId Pclass Name Sex Age SibSp Parch Fare


embarqueC
## 1 2000 3 Christiam Pistala 1 28 1 0 8.0292
1
## 2 2001 1 Inés R 0 9 0 0 37.0000
0
## embarqueQ embarqueS
## 1 0 0
## 2 1 0

Ahora se realiza la predicció n para este nuevo conjunto de datos


prediccion_AR <- predict(arbol_titanic,newdata=nuevo, type = "class")
data.frame(nuevo$Name,prediccion_AR )

## nuevo.Name prediccion_AR
## 1 Christiam Pistala 0
## 2 Inés R 1

También podría gustarte