Tutte le sfide
Facile 0 risolte 0% di accettazione

Impurità di Gini

Misura quanto sono mescolate le etichette di un gruppo, il punteggio con cui gli alberi decisionali scelgono le divisioni.

Cosa imparerai

  • Misurare quanto è mescolato un gruppo di etichette
  • Contare le proporzioni delle classi
  • Capire come gli alberi scelgono le divisioni

Problema

Gli alberi decisionali dividono i dati in gruppi il più possibile puri. L'impurità di Gini misura quanto sono mescolate le etichette di un gruppo:

Gini = 1 - Σ pₖ²

dove pₖ è la frazione di etichette della classe k. Un gruppo con una sola classe ha impurità 0; un mix uguale di due classi ha impurità 0.5.

Implementa gini_impurity(labels).

Input

labels: Le etichette di classe del gruppo.

Output

Restituisci l'impurità di Gini come numero decimale.

Vincoli

1 ≤ lunghezza ≤ 10.000

Ogni etichetta ha da 1 a 20 caratteri

Esempi

Esempio 1
Input:
labels = ["yes", "yes", "no", "no"]

Output atteso:
expected = 0.5
Input:
std::vector<std::string> labels = {"yes", "yes", "no", "no"};

Output atteso:
double expected = 0.5;
Input:
string[] labels = new string[] {"yes", "yes", "no", "no"};

Output atteso:
double expected = 0.5;

Spiegazione

Metà sono yes e metà no: 1 - (0.5² + 0.5²) = 1 - 0.5 = 0.5, il massimo mescolamento per un gruppo a due classi.

Esempio 2
Input:
labels = ["cat", "cat", "cat"]

Output atteso:
expected = 0.0
Input:
std::vector<std::string> labels = {"cat", "cat", "cat"};

Output atteso:
double expected = 0.0;
Input:
string[] labels = new string[] {"cat", "cat", "cat"};

Output atteso:
double expected = 0.0;

Spiegazione

Una sola classe: 1 - 1² = 0. Il gruppo è puro.

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.