PoCInnovation / PoCInnovation/MLBlock

Patterns & baselines drag-and-drop : CNN, clustering, classification/régression, transformers

Open
#22 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ready-for-agent
Dominant language
TypeScript
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Contexte

Demande de Pierre BAUD : le produit doit proposer des patterns prêts à l'emploi — des pipelines baseline que l'utilisateur glisse directement dans la sandbox :

un pattern = charger les données -> traitement des données -> évaluation -> visualisation
une baseline -> une pipeline que l'utilisateur peut directement drag and drop dans la sandbox, par exemple la baseline du clustering : on charge les data -> on fait une pca ou un kmeans -> une tsne qui est la visu

Patterns demandés :

  1. CNN / convolution (imagerie, etc.)
  2. Clustering (kmeans, pca, t-SNE pour la visualisation, etc.)
  3. Classification & régression (polynomiale, linéaire, knn)
  4. LLM / transformers (+ eval)

État actuel (sourcé)

Vérifié sur dev/chedli contre les signatures réelles (backend/mlblock/blocks/*) et docs/UX_Blocks_Rework/coverage.md (6/12 exos PASS) :

Pattern État Détail
CNN / imagerie ✅ OK A1 PASS (11/11 arêtes). conv2d_layer, to_tensor, normalize chaînent proprement
Clustering kmeans/pca/t-SNE ❌ Cassé B3 FAIL : scaler.scaled (ndarray) -> kmeans (df) incompatible. tsne est en modeles (S2), pas une visu : sa sortie ndarray n'a aucun consommateur (plot_predictions veut object + df). kmeans(Model) -> tsne(df) et pca(dict) -> tsne(df) rejetés
Classification / régression ⚠️ Presque polynomial_features(df)->df + linear_regression(df)->Model + evaluate(Model,df)->float OK (B1 PASS). Mais knn, decision_tree, svm retournent object au lieu de Modelevaluate les refuse (wildcard seulement côté cible dans core/types.py)
LLM / transformers ❌ Vide Seulement multihead_attention (couche nue), embedding, lstm/gru/rnn. A6 FAIL : encoder(ndarray) -> trainer(DataLoader), lstm(Tensor) -> fc(Module). Pas de bloc transformer, pas d'éval séquentielle
Baseline drag-and-drop ❌ Absent Exos au format backend {graph: {nodes, edges}}, frontend n'importe que le format plat. Pas de route /api/exos, pas de galerie. 6/12 exos ne valident pas

Travail demandé

P0 — Réparer les patterns existants
  • Retypage knn / decision_tree / svm : -> object vers -> Model (3 lignes, débloque evaluate)
  • Trancher tsne : vrai bloc visu (df + labels -> bytes) OU pont ndarray consommable ; sortir tsne de modeles si visu
  • Unifier standard_scaler / normalize (gap P0.4) : un seul comportement par famille, chaîne clustering sans rupture ndarray -> df
P1 — Baselines importables
  • Convertisseur format exo (graph: {...}) → format frontend plat (nodes, edges + positions auto-layout)
  • Route GET /api/exos (ou JSON statique frontend) + bouton galerie dans la palette/éditeur
  • Figer 4–5 baselines depuis les exos PASS : CNN (A1), clustering (B2/B3 réparé), classification (B1), régression (poly+linreg), time-series (A7)
  • Ne proposer que des baselines qui valident (validate() vert)
Hors scope
  • Pattern LLM / transformers complet (pas de briques suffisantes : ni bloc transformer, ni tokeniseur subword, ni éval séquentielle) — à spécifier séparément, ne pas promettre ici

Critères d'acceptation

  • Chaque pattern listé a une baseline qui passe validate() sans erreur
  • Chaque baseline s'importe en 1 clic dans le canvas avec positions lisibles
  • tsne branché dans la baseline clustering (en visu ou en traitement chaîné)
  • knn, decision_tree, svm évaluables via evaluate

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with docs/UX_Blocks_Rework/coverage.md and the referenced exercises, then inspect backend/mlblock/blocks/* and core/types.py to understand the current signatures and validation rules. Check how the frontend represents nodes and edges before choosing the import path. Done means the listed baselines import into the canvas, pass validate(), and satisfy the acceptance criteria without promising the out-of-scope transformer pattern.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
full-stack, machine-learning
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.