Aller au contenu

Démarrage rapide

1. Des données

N'importe quel fichier CSV, Excel (.xlsx) ou Parquet avec une ligne par exemple convient. Ici, les fleurs d'iris fournies avec scikit-learn :

python -c "from sklearn.datasets import load_iris; d = load_iris(as_frame=True); d.frame.assign(species=d.target_names[d.target]).drop(columns='target').to_csv('iris.csv', index=False)"

2. Décrire l'expérience

Enregistrez ceci dans fitrank.yaml :

data:
  path: iris.csv
  target: species         # la colonne à prédire
task: classification      # prédire une catégorie (regression : prédire un nombre)
models:
  - name: logistic_regression
  - name: decision_tree
  - name: svm

Ou laissez FitRank écrire un fichier commenté à partir de vos données :

fitrank init --data iris.csv --target species

Il écrit config.yaml avec vos colonnes, quatre modèles rapides et chaque option expliquée en commentaire.

3. Vérifier, puis lancer

fitrank validate fitrank.yaml   # vérifie la configuration et les données, n'entraîne rien
fitrank run fitrank.yaml

validate est instantané : utilisez-le après chaque modification. Il signale tous les problèmes d'un coup, par exemple un nom de modèle inconnu avec le nom valide le plus proche, ou une colonne avec des valeurs manquantes et le YAML de preprocessing qui la traite.

4. Lire le classement

Voici l'exemple Iris, qui compare 4 modèles avec et sans ACP :

| # | model               | reduction | cv f1_weighted | cv std | test f1_weighted |  time | best params / error                     |
|---+---------------------+-----------+----------------+--------+------------------+-------+-----------------------------------------|
| 1 | svm                 | none      |         0.9749 | 0.0205 |           0.9333 | 1.3 s | C=0.1, class_weight=None, kernel=linear |
| 2 | knn                 | none      |         0.9665 | 0.0167 |           0.9327 | 0.8 s | n_neighbors=3, weights=uniform          |
| 3 | logistic_regression | none      |         0.9663 | 0.0316 |           1.0000 | 1.1 s | C=10, class_weight=None                 |
| 4 | random_forest       | none      |         0.9580 | 0.0268 |           0.9666 | 2.2 s | max_depth=3, n_estimators=100           |
...
Best model: svm + none (f1_weighted = 0.9749)
Results saved to runs/iris_2026-11-01_15-36-06/
  • cv f1_weighted : le score moyen sur les plis de validation croisée, avec les meilleurs paramètres trouvés. Le classement n'utilise que cette colonne.
  • cv std : à quel point le score varie d'un pli à l'autre. Quand deux modèles sont plus proches que leur cv std, ils se valent sur ces données.
  • test f1_weighted : le score sur des lignes mises de côté dès le départ (20 % par défaut). Il indique à quoi s'attendre sur de nouvelles données ; il ne décide jamais du rang.
  • best params / error : les paramètres choisis par la recherche, ou la raison de l'échec du modèle.

5. Le dossier de résultats

Chaque exécution a son propre dossier : rien n'est jamais écrasé.

runs/iris_2026-11-01_15-36-06/
├── config.yaml          la configuration telle que FitRank l'a lue, valeurs par défaut comprises
├── leaderboard.csv      ┐
├── leaderboard.json     ├ les formats listés dans output.formats
├── leaderboard.md       ┘
├── best_model.joblib    si output.save_best_model vaut true
└── metadata.json        versions, date, durée, meilleur candidat

Le meilleur modèle est un Pipeline scikit-learn entraîné, prétraitement compris. Utilisez-le sur de nouvelles données qui ont les mêmes colonnes :

fitrank predict runs/iris_2026-11-01_15-36-06/best_model.joblib nouvelles_fleurs.csv -o predictions.csv

6. Des données réelles

Les vraies données sont rarement propres. L'exemple Titanic a des âges, des tarifs et des ports manquants, et des colonnes texte. FitRank ne les corrige pas en silence : sans section preprocessing, fitrank validate liste chaque problème et le YAML qui y répond. L'exemple déclare tout :

data:
  path: examples/data/titanic.csv
  target: Survived
  features: all
  exclude: [PassengerId, Name, Ticket, Cabin, HomeDest]   # identifiants et texte libre
preprocessing:
  numeric:
    columns: [Age, Fare, SibSp, Parch]
    steps: [{imputer: {strategy: median}}, scaler]
  categorical:
    columns: [Sex, Pclass, Embarked]
    steps: [{imputer: {strategy: most_frequent}}, {encoder: onehot}]

La référence de la configuration explique chaque clé.