Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Impureza de Gini

Mide cuán mezcladas están las etiquetas de un grupo, la puntuación que usan los árboles de decisión para elegir divisiones.

Lo que aprenderás

  • Medir lo mezclado que está un grupo de etiquetas
  • Contar las proporciones de cada clase
  • Entender cómo eligen divisiones los árboles

Problema

Ver original (inglés)

Los árboles de decisión dividen los datos en grupos lo más puros posible. La impureza de Gini mide cuán mezcladas están las etiquetas de un grupo:

Gini = 1 - Σ pₖ²

donde pₖ es la proporción de etiquetas de la clase k. Un grupo con una sola clase tiene impureza 0; una mezcla igual de dos clases tiene impureza 0.5.

Implementa gini_impurity(labels).

Entrada

labels: Las etiquetas de clase del grupo.

Salida

Devuelve la impureza de Gini como número decimal.

Restricciones

1 ≤ longitud ≤ 10 000

Cada etiqueta tiene de 1 a 20 caracteres

Ejemplos

Ejemplo 1
Entrada:
labels = ["yes", "yes", "no", "no"]

Salida esperada:
expected = 0.5
Entrada:
std::vector<std::string> labels = {"yes", "yes", "no", "no"};

Salida esperada:
double expected = 0.5;
Entrada:
string[] labels = new string[] {"yes", "yes", "no", "no"};

Salida esperada:
double expected = 0.5;

Explicación

La mitad son yes y la mitad no: 1 - (0.5² + 0.5²) = 1 - 0.5 = 0.5, la mayor mezcla posible en un grupo de dos clases.

Ejemplo 2
Entrada:
labels = ["cat", "cat", "cat"]

Salida esperada:
expected = 0.0
Entrada:
std::vector<std::string> labels = {"cat", "cat", "cat"};

Salida esperada:
double expected = 0.0;
Entrada:
string[] labels = new string[] {"cat", "cat", "cat"};

Salida esperada:
double expected = 0.0;

Explicación

Una sola clase: 1 - 1² = 0. El grupo es puro.

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.