Tous les défis
Facile 0 résolus 0 % de réussite

Impureté de Gini

Mesurez à quel point les étiquettes d'un groupe sont mélangées, le score qu'utilisent les arbres de décision pour choisir leurs divisions.

Ce que vous allez apprendre

  • Mesurer à quel point un groupe d'étiquettes est mélangé
  • Compter les proportions de chaque classe
  • Comprendre comment les arbres choisissent leurs coupures

Problème

Les arbres de décision divisent les données en groupes aussi purs que possible. L'impureté de Gini mesure à quel point les étiquettes d'un groupe sont mélangées :

Gini = 1 - Σ pₖ²

où pₖ est la proportion d'étiquettes de la classe k. Un groupe d'une seule classe a une impureté de 0 ; un mélange égal de deux classes a une impureté de 0.5.

Implémentez gini_impurity(labels).

Entrée

labels : les étiquettes de classe du groupe.

Sortie

Renvoyez l'impureté de Gini sous forme de nombre décimal.

Contraintes

1 ≤ longueur ≤ 10 000

Chaque étiquette compte de 1 à 20 caractères

Exemples

Exemple 1
Entrée :
labels = ["yes", "yes", "no", "no"]

Sortie attendue :
expected = 0.5
Entrée :
std::vector<std::string> labels = {"yes", "yes", "no", "no"};

Sortie attendue :
double expected = 0.5;
Entrée :
string[] labels = new string[] {"yes", "yes", "no", "no"};

Sortie attendue :
double expected = 0.5;

Explication

La moitié sont yes et l'autre moitié no : 1 - (0.5² + 0.5²) = 1 - 0.5 = 0.5, le mélange maximal pour un groupe à deux classes.

Exemple 2
Entrée :
labels = ["cat", "cat", "cat"]

Sortie attendue :
expected = 0.0
Entrée :
std::vector<std::string> labels = {"cat", "cat", "cat"};

Sortie attendue :
double expected = 0.0;
Entrée :
string[] labels = new string[] {"cat", "cat", "cat"};

Sortie attendue :
double expected = 0.0;

Explication

Une seule classe : 1 - 1² = 0. Le groupe est pur.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.