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
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.
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.