Clemylia commited on
Commit
89aa3fe
·
verified ·
1 Parent(s): 327d699

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +134 -0
README.md ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ language:
4
+ - fr
5
+ pipeline_tag: tabular-regression
6
+ tags:
7
+ - Saveurs
8
+ - ML
9
+ - Prix articles
10
+ ---
11
+ .# 📜 Carte Modèle : Prixa-regression (V2)
12
+
13
+ ![Prixa](http://www.image-heberg.fr/files/17592589351737387422.jpg)
14
+
15
+ ## 🎯 Aperçu du Modèle
16
+
17
+ Ce modèle est un **Régresseur Linéaire Multi-Variable** simple développé avec **PyTorch**. Son objectif principal est de prédire le prix d'un produit (Yaourt, Tiramisu, Crème) en fonction de deux caractéristiques d'entrée : l'**Article** et la **Saveur**.
18
+
19
+ Il a été entraîné *from scratch* (à partir de zéro) pour illustrer la capacité d'un modèle simple à déduire des relations de prix complexes, en séparant la contribution du type de produit et celle de l'arôme.
20
+
21
+ * **Auteur :** Clemylia
22
+ * **Framework :** PyTorch (`torch.nn`)
23
+ * **Type de Tâche :** Régression (Prédiction de prix continu)
24
+ * **Version :** V2 (avec encodage Article + Saveur)
25
+
26
+ -----
27
+
28
+ ## 🛠️ Utilisation et Implémentation
29
+
30
+ Ce modèle est un module `nn.Linear` qui attend un vecteur d'entrée de taille 8, encodé en **One-Hot Encoding (OHE)**.
31
+
32
+ ### 1\. Structure du Modèle
33
+
34
+ La classe Python est simple :
35
+
36
+ ```python
37
+ import torch.nn as nn
38
+
39
+ class PricePredictor(nn.Module):
40
+ def __init__(self, input_size, output_size):
41
+ super(PricePredictor, self).__init__()
42
+ # Couche Linéaire unique (Régression Linéaire)
43
+ self.fc = nn.Linear(input_size, output_size)
44
+
45
+ def forward(self, x):
46
+ return self.fc(x)
47
+ ```
48
+
49
+ ### 2\. Mappings des Données (CRUCIAL)
50
+
51
+ Pour que le modèle fonctionne, l'utilisateur doit encoder les articles et les saveurs dans l'ordre exact utilisé lors de l'entraînement. L'entrée de taille **8** est la concaténation des deux vecteurs OHE (`[Saveur OHE] + [Article OHE]`).
52
+
53
+ #### Mappings des 5 Saveurs (Index 0 à 4)
54
+
55
+ | Saveur | Index (Pos. 0-4) |
56
+ | :--- | :--- |
57
+ | `fraise` | 0 |
58
+ | `banane` | 1 |
59
+ | `pêche` | 2 |
60
+ | `framboise` | 3 |
61
+ | `moyen` | 4 |
62
+
63
+ #### Mappings des 3 Articles (Index 5 à 7)
64
+
65
+ | Article | Index (Pos. 5-7) |
66
+ | :--- | :--- |
67
+ | `yaourt` | 5 |
68
+ | `tiramisu` | 6 |
69
+ | `crème` | 7 |
70
+
71
+ ### 3\. Exemple d'Inférence (Prédiction)
72
+
73
+ Pour prédire le prix d'un **Tiramisu à la Pêche** :
74
+
75
+ * **Pêche** est à l'index 2.
76
+ * **Tiramisu** est à l'index 6 (soit la position 1 dans le vecteur Article, ou 5+1).
77
+
78
+ Le vecteur d'entrée doit être :
79
+ $$\mathbf{X}_{\text{Tiramisu Pêche}} = [0, 0, 1, 0, 0, \quad 0, 1, 0]$$
80
+
81
+ **Code d'Infèrence :**
82
+
83
+ ```python
84
+ from huggingface_hub import hf_hub_download
85
+ import torch
86
+
87
+ # 1. Télécharger le modèle (Exemple de chargement)
88
+ downloaded_path = hf_hub_download(repo_id="Clemylia/Prixa-regression", filename="pytorch_model.bin")
89
+
90
+ # 2. Définir l'architecture (INPUT_SIZE = 8)
91
+ INPUT_SIZE = 8
92
+ model = PricePredictor(INPUT_SIZE, 1)
93
+ model.load_state_dict(torch.load(downloaded_path))
94
+ model.eval()
95
+
96
+ # 3. Créer le Tenseur d'Entrée
97
+ # Pour Tiramisu Pêche: [0, 0, 1, 0, 0, 0, 1, 0]
98
+ input_data = [0, 0, 1, 0, 0, 0, 1, 0]
99
+ input_tensor = torch.tensor([input_data], dtype=torch.float32)
100
+
101
+ # 4. Prédiction
102
+ with torch.no_grad():
103
+ predicted_price = model(input_tensor).item()
104
+ print(f"Prix prédit : {predicted_price:.2f}€") # Résultat attendu ≈ 5.78€
105
+ ```
106
+
107
+ -----
108
+
109
+ ## 📊 Performances et Limites
110
+
111
+ ### Performances (Résultats de la Déduction)
112
+
113
+ Le modèle a montré une bonne capacité à déduire le prix des combinaisons non vues en apprenant deux concepts distincts :
114
+
115
+ 1. **Prime de l'Article :** Les prix du Tiramisu sont supérieurs à ceux du Yaourt, et ceux de la Crème sont les plus élevés.
116
+ 2. **Prime de la Saveur :** La saveur Framboise ajoute un coût significatif, tandis que la Banane ajoute très peu.
117
+
118
+ | Prédiction | Résultat du Modèle | Comportement |
119
+ | :--- | :--- | :--- |
120
+ | **Crème Framboise** | 9.80€ | Combinaison la plus chère (Crème + Framboise) |
121
+ | **Tiramisu Banane** | 6.14€ | Prix intermédiaire (Base Tiramisu + Saveur Banane) |
122
+
123
+ ### Limites
124
+
125
+ Étant un modèle de régression **strictement linéaire**, il présente des limites :
126
+
127
+ * **Pas d'Interaction Non-Linéaire :** Il ne peut pas apprendre que **l'effet d'une saveur dépend de l'article**. Par exemple, il ne peut pas apprendre que l'arôme "Moyen" est seulement utilisé pour les desserts haut de gamme, car il traite l'Article et la Saveur comme des variables indépendantes.
128
+ * **Petit Jeu de Données :** L'entraînement s'est fait sur un jeu de données très limité, ce qui le rend sujet à l'**overfitting** (surapprentissage) si les données étaient plus complexes.
129
+
130
+ -----
131
+
132
+ ## 📚 Références
133
+
134
+ * **Auteur :** Clemylia