.
# C5.0 Árbol de clasificación
 
library(C50)
data(iris)
 
# Acortamiento de nombres de setosa, versicolor y virginica
especie <- vector(length = dim(iris)[1])
especie[iris$Species=="setosa"] <-"se"
especie[iris$Species=="virginica"] <-"vi"
especie[iris$Species=="versicolor"] <-"ve"
iris$Species <- factor(especie)
 
# Selección de una submuestra de 105 (el 70% de los datos)
set.seed(101)
iris.indices <- sample(1:nrow(iris),size=105)
iris.entrenamiento <- iris[iris.indices,]
iris.test <- iris[-iris.indices,]
 
modelo <- C5.0(Species ~ .,data = iris.entrenamiento)
summary(modelo) # Información sobre el modelo
plot(modelo) # Gráfico
 
plot(modelo, subtree=3)  #Muestra un nodo en particular
 
# predicción
prediccion <- predict(modelo,newdata=iris.test)
# Matriz de confusión
tabla <- table(prediccion, iris.test$Species)
tabla
# % correctamente clasificados
100 * sum(diag(tabla)) / sum(tabla)
 
# Sepal no interviene, por lo tanto no necesita un valor
nuevo <- data.frame(Sepal.Length=NA,Sepal.Width=NA,Petal.Length=5,Petal.Width=1)
predict(modelo,nuevo, type = "prob")
predict(modelo,nuevo)
 
Probar programa (los gráficos no funcionan)
> # C5.0 Árbol de clasificación
>
> library(C50)
> data(iris)
>
> # Acortamiento de nombres de setosa, versicolor y virginica
> especie <- vector(length = dim(iris)[1])
> especie[iris$Species=="setosa"] <-"se"
> especie[iris$Species=="virginica"] <-"vi"
> especie[iris$Species=="versicolor"] <-"ve"
> iris$Species <- factor(especie)
>
> # Selección de una submuestra de 105 (el 70% de los datos)
> set.seed(101)
> iris.indices <- sample(1:nrow(iris),size=105)
> iris.entrenamiento <- iris[iris.indices,]
> iris.test <- iris[-iris.indices,]
>
> modelo <- C5.0(Species ~ .,data = iris.entrenamiento)
> summary(modelo) # Información sobre el modelo
 
Call:
C5.0.formula(formula = Species ~ ., data = iris.entrenamiento)
 
 
C5.0 [Release 2.07 GPL Edition]      Fri Jul 10 21:31:43 2015
-------------------------------
 
Class specified by attribute outcome
 
Read 105 cases (5 attributes) from undefined.data
 
Decision tree:
 
Petal.Length <= 1.9: se (35)
Petal.Length > 1.9:
:...Petal.Width > 1.6: vi (30/1)
    Petal.Width <= 1.6:
    :...Petal.Length <= 4.9: ve (36)
        Petal.Length > 4.9: vi (4/1)
 
 
Evaluation on training data (105 cases):
 
        Decision Tree
      ----------------
      Size      Errors
 
         4    2( 1.9%)   <<
 
 
       (a)   (b)   (c)    <-classified as
      ----  ----  ----
        35                (a): class se
              36     2    (b): class ve
                    32    (c): class vi
 
 
    Attribute usage:
 
    100.00%    Petal.Length
     66.67%    Petal.Width
 
 
Time: 0.0 secs
 
> plot(modelo) # Gráfico
>
> plot(modelo, subtree=3)  #Muestra un nodo en particular
>
> # predicción
> prediccion <- predict(modelo,newdata=iris.test)
> # Matriz de confusión
> tabla <- table(prediccion, iris.test$Species)
> tabla
 
prediccion se ve vi
        se 15  0  0
        ve  0 11  0
        vi  0  1 18
> # % correctamente clasificados
> 100 * sum(diag(tabla)) / sum(tabla)
[1] 97.77778
>
> # Sepal no interviene, por lo tanto no necesita un valor
> nuevo <- data.frame(Sepal.Length=NA,Sepal.Width=NA,Petal.Length=5,Petal.Width=1)
> predict(modelo,nuevo, type = "prob")
          se       ve        vi
1 0.06666667 0.272381 0.6609524
> predict(modelo,nuevo)
[1] vi
Levels: se ve vi





c50.png



c50_nodo3.png