Рассчитать индекс Джини для многоходового разделения в 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?
Можно ли рассчитать индекс Джини для более чем трех узлов с одинаковой функцией?

0 ответов

Другие вопросы по тегам