Tu veux les meilleurs outils IA avant les autres ?
On teste et on décrypte les nouveaux outils IA chaque soir, en 5 min. Gratuit.
Inclus dès l'inscription : notre sélection des meilleurs guides & comparatifs IA.
Choisis ton rythme
Gratuit · Pas de spam · Désabonnement en 1 clic
Des extraits générés par IA s’exécutent sans erreur, mais nombre de décisions sont prises à votre place par les bibliothèques. Cinq paramètres standards de scikit-learn, souvent laissés implicites, ont des effets directs sur la variance des ensembles, la force de la régularisation, la validité des validations croisées, la qualité des partitions et la persistance des colonnes.
Clustering : n_init automatique n’offre qu’une seule tentative
Avec init="k-means++", n_init="auto" dans KMeans correspond à une seule exécution complète. L’algorithme démarre avec des centres initiaux, assigne chaque point au centre le plus proche et met à jour jusqu’à convergence, mais une mauvaise initialisation peut conduire à un minimum local dont il ne sortira pas. Fixer n_init=10 lance dix exécutions et retient celle à inertie minimale, alors qu’une seule exécution ne garantit pas d’obtenir la meilleure solution. Le réglage automatique applique une règle liée à l’initialisation sans examiner les résultats ni relancer si la solution n’est pas optimale. Augmenter max_iter ne remplace pas ces redémarrages, cela ne fait qu’ajouter des itérations à une tentative donnée. Définir random_state=42 rend l’initialisation reproductible, mais ne teste pas d’autres points de départ. Pour obtenir plusieurs essais, il faut fixer explicitement n_init à une valeur comme 10, en acceptant le coût de calcul supplémentaire.
Prétraitement : des colonnes peuvent disparaître avec SimpleImputer
SimpleImputer, configuré par défaut avec une stratégie de moyenne, supprime une caractéristique qui ne contient aucune valeur observée à l’ajustement, car aucune moyenne ne peut être calculée. Dans un jeu d’entraînement à 20 colonnes dont une entièrement manquante, le modèle en aval apprend en réalité sur 19 colonnes. Si des données ultérieures renseignent cette colonne, l’imputer entraîné continue de l’éliminer et ces nouvelles informations n’atteignent pas le modèle. Le pipeline conserve la même dimension entre apprentissage et prédiction, évitant les erreurs de forme, mais la décision provient de keep_empty_features=False.
Évaluation : cv=5 ne précise pas la construction des plis
Fixer cv=5 dans cross_val_score indique seulement le nombre de plis. En régression, scikit-learn applique KFold avec shuffle=False, produisant des blocs consécutifs selon l’ordre des lignes. Un dataframe trié par date, client ou région transfère cet ordre dans la conception d’évaluation. Par exemple, avec 100 semaines, le premier pli évalue les semaines 1 à 20 après apprentissage sur 21 à 100, ce qui fait prédire le passé par le futur, alors que la prévision réelle n’utilise que les données passées pour prédire le futur. Activer shuffle=True mélangerait passé et futur. Le séparateur doit refléter ce que signifie « non vu » : KFold mélangé pour des observations indépendantes, un schéma temporel pour la prévision, ou un split groupé pour tester sur de nouveaux clients. En classification, StratifiedKFold est utilisé par défaut sans mélange et ne prend pas en compte d’emblée le temps ni les groupes. En choisissant cv=5, on a défini la fréquence d’évaluation mais laissé sa structure implicite.
Régularisation : LogisticRegression impose L2 avec C=1.0
LogisticRegression ajuste par défaut un modèle pénalisé L2 avec C=1.0, où des valeurs plus petites de C renforcent la régularisation et des valeurs plus grandes desserrent la contrainte. La taille numérique d’un coefficient dépend des unités de la variable : un revenu exprimé en euros peut produire 0.0001, alors qu’en milliers d’euros il faut 0.1 pour une contribution identique, 50 000 × 0.0001 et 50 × 0.1 valant chacun 5. La pénalité L2 au carré rend ces changements d’unités déterminants pour le compromis d’optimisation si C est laissé inchangé. Un point de départ consiste à standardiser les variables continues dans un Pipeline ajusté pli par pli, puis à régler C avec une validation appropriée.
Ensembles : RandomForestRegressor n’échantillonne pas les variables par défaut
RandomForestClassifier utilise max_features="sqrt" alors que RandomForestRegressor fixe max_features=1.0, rendant toutes les variables disponibles à chaque séparation. Le bootstrap des lignes demeure, mais l’aléa sur les caractéristiques est neutralisé. Avec un prédicteur dominant, plusieurs arbres issus de jeux bootstrap différents peuvent quand même sélectionner les mêmes premières scissions et se corréler, limitant la réduction de variance par l’agrégation. Forcer un sous-échantillonnage des variables amène des séparations alternatives ; ajouter des arbres n’élimine pas la variance liée à la corrélation. Régler max_features=0.33 rétablit cet aléa en exposant environ un tiers des variables à chaque séparation. La question clé devient : si l’aléa des caractéristiques est recherché, pourquoi le laisser inactif ?
Assistants : un code qui tourne masque des choix non discutés
Un assistant peut générer en quelques lignes une implémentation de modèle qui s’exécute. Les bibliothèques comblent les paramètres omis avec leurs valeurs par défaut, transformant une demande incomplète en pipeline opérationnel. Les modèles de langage, entraînés à prédire le prochain jeton, reproduisent des schémas d’implémentation fréquents où des arguments sont laissés à leur valeur standard. Un code qui fonctionne ne signifie pas que ces arbitrages ont été passés en revue. Des retours d’expérience en production ont montré que ces oublis ont causé des difficultés de débogage. La pratique recommandée est d’examiner systématiquement l’impact de chaque valeur par défaut acceptée sans discussion.






