Рассчитать индекс Джини для многоходового разделения в R
Я пытаюсь вычислить индекс Джини в R. Нет проблем вычислить индекс Джини для бинарного дерева решений следующим образом.
gini_process <- function(classes,splitvar = NULL){
#Assumes Splitvar is a logical vector
if (is.null(splitvar)){
base_prob <-table(classes)/length(classes)
return(1-sum(base_prob**2))
}
base_prob <-table(splitvar)/length(splitvar)
crosstab <- table(classes,splitvar)
crossprob <- prop.table(crosstab,2)
No_Node_Gini <- 1-sum(crossprob[,1]**2)
Yes_Node_Gini <- 1-sum(crossprob[,2]**2)
return(sum(base_prob * c(No_Node_Gini,Yes_Node_Gini)))
}
Теперь я хочу вычислить индекс Джини для дерева решений с тремя узлами (многолинейное разбиение).
Я получил следующую таблицу:
Класс автомобиля
0 0
0 1
1 0
1 0
2 1
Можно ли рассчитать индекс Джини для автомобиля колонки (с тремя узлами) в R?
Можно ли рассчитать индекс Джини для более чем трех узлов с одинаковой функцией?