Parfait 👍 Alors, puisque vous avez vos vecteurs nutritionnels dans une colonne nutrition vector (normalisés avec un Z-score), vous pouvez utiliser l'extension pgvector pour faire une classification KNN directement dans PostgreSQL. Voici un exemple de requête complète en k-nearest neighbors (kNN) : -- Supposons que vous avez : -- table produit(id serial, nom text, famille text, nutrition vector) -- Exemple : on veut classifier un produit inconnu ```sql WITH nouveau AS ( SELECT ARRAY[ 80, -- énergie (kcal/100g) 3.5, -- protéines 12, -- glucides 11, -- sucres 2.0, -- graisses 0.8, -- graisses_saturées 0.1, -- sel 1.2, -- fibres 5, -- nutriscore numérique 0 -- nombre d'additifs ]::vector AS nutrition ) SELECT p.famille, COUNT(*) AS voisins, ROUND(AVG(p.nutrition <-> n.nutrition)::numeric, 3) AS distance_moyenne FROM produit p JOIN nouveau n ON true ORDER BY p.nutrition <-> n.nutrition -- tri par distance euclidienne LIMIT 5; -- on récupère les 5 plus proches voisins ``` ```sql Étape suivante : classification majoritaire Pour prédire la famille (yaourt ou confiture), on peut compter la famille majoritaire parmi les k plus proches voisins : WITH nouveau AS ( SELECT ARRAY[80, 3.5, 12, 11, 2.0, 0.8, 0.1, 1.2, 5, 0]::vector AS nutrition ), voisins AS ( SELECT p.famille FROM produit p JOIN nouveau n ON true ORDER BY p.nutrition <-> n.nutrition LIMIT 5 -- k=5 ) SELECT famille, COUNT(*) AS occurrences FROM voisins GROUP BY famille ORDER BY occurrences DESC LIMIT 1; -- famille prédite ```