Clemylia commited on
Commit
d6f1ee1
·
verified ·
1 Parent(s): 17f8011

Upload README-5.md

Browse files
Files changed (1) hide show
  1. README-5.md +422 -0
README-5.md ADDED
@@ -0,0 +1,422 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ # 🧠 Sitiai
3
+
4
+ > **Framework Python léger pour créer et entraîner des IA simples**
5
+
6
+ [![Python](https://img.shields.io/badge/Python-3.11%2B-blue.svg)](https://python.org)
7
+ [![NumPy](https://img.shields.io/badge/NumPy-2.3.3%2B-orange.svg)](https://numpy.org)
8
+ [![License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
9
+ [![Version](https://img.shields.io/badge/Version-0.1.0-red.svg)](pyproject.toml)
10
+
11
+ ---
12
+
13
+ ## 📖 Table des matières
14
+
15
+ - [🚀 Installation](#-installation)
16
+ - [✨ Fonctionnalités](#-fonctionnalités)
17
+ - [🤖 IA Génératives](#-ia-génératives)
18
+ - [📊 IA de Prédiction Linéaire](#-ia-de-prédiction-linéaire)
19
+ - [🧬 Couches de Neurones SitiNEUR](#-couches-de-neurones-sitinetur)
20
+ - [📚 Exemples Complets](#-exemples-complets)
21
+ - [⚙️ Configuration Avancée](#️-configuration-avancée)
22
+ - [🔧 API Reference](#-api-reference)
23
+ - [📝 Licence](#-licence)
24
+
25
+ ---
26
+
27
+ ## 🚀 Installation
28
+
29
+ ### Option 1: Depuis GitHub (Recommandé)
30
+
31
+ ```bash
32
+ # Cloner le repository
33
+ git clone https://github.com/clem27game/Sitiaia.git
34
+ cd Sitiaia
35
+
36
+ # Installer les dépendances
37
+ pip install numpy>=2.3.3
38
+
39
+ # Installer le package en mode développement
40
+ pip install -e .
41
+ ```
42
+
43
+ ### Option 2: Installation directe
44
+
45
+ ```bash
46
+ pip install git+https://github.com/clem27game/Sitiaia.git
47
+ ```
48
+
49
+ ### Vérification de l'installation
50
+
51
+ ```python
52
+ import Sitiaia
53
+ print(f"Sitiai version: {sitiaia.__version__}")
54
+ # Output: Sitiaia version: 0.1.0
55
+ ```
56
+
57
+ ---
58
+
59
+ ## ✨ Fonctionnalités
60
+
61
+ | Fonctionnalité | Description | Status |
62
+ |----------------|-------------|--------|
63
+ | 🎨 **IA Génératives** | Génération de noms, textes, contenus | ✅ |
64
+ | 📈 **IA de Prédiction** | Régression linéaire et non-linéaire | ✅ |
65
+ | 🧠 **Couches Neuronales** | API simple inspirée de PyTorch | ✅ |
66
+ | 🔥 **Activations** | ReLU, Sigmoid, Tanh, Linear | ✅ |
67
+ | 📦 **Léger** | Seulement NumPy comme dépendance | ✅ |
68
+ | 🎓 **Éducatif** | Code clair et accessible | ✅ |
69
+
70
+ ---
71
+
72
+ ## 🤖 IA Génératives
73
+
74
+ ### 🏷️ Générateur de Noms
75
+
76
+ Créez des IA capables de générer des noms originaux à partir d'exemples :
77
+
78
+ ```python
79
+ import sitiai
80
+
81
+ # 1. Créer une IA générative
82
+ ai = sitiai.create.ai('generative', mode='name_generator')
83
+
84
+ # 2. Charger vos données d'exemples
85
+ noms_francais = [
86
+ "Alexandre", "Sophie", "Marie", "Pierre", "Julien",
87
+ "Camille", "Lucas", "Emma", "Hugo", "Léa"
88
+ ]
89
+ ai.load_data(noms_francais)
90
+
91
+ # 3. Entraîner le modèle
92
+ ai.train(epochs=100)
93
+
94
+ # 4. Générer de nouveaux noms
95
+ nouveau_nom = ai.generate()
96
+ print(f"Nouveau nom: {nouveau_nom}")
97
+
98
+ # 5. Générer plusieurs noms avec créativité
99
+ noms_creatifs = ai.generate_batch(n=5, temperature=0.8)
100
+ for nom in noms_creatifs:
101
+ print(f"✨ {nom}")
102
+ ```
103
+
104
+ ### 🎛️ Contrôler la créativité
105
+
106
+ ```python
107
+ # Faible créativité (plus proche des exemples)
108
+ noms_conservateurs = ai.generate_batch(n=3, temperature=0.3)
109
+
110
+ # Haute créativité (plus original)
111
+ noms_originaux = ai.generate_batch(n=3, temperature=1.5)
112
+ ```
113
+
114
+ ---
115
+
116
+ ## 📊 IA de Prédiction Linéaire
117
+
118
+ ### 📈 Régression Simple
119
+
120
+ Créez des modèles de prédiction pour vos données numériques :
121
+
122
+ ```python
123
+ import sitiai
124
+ import numpy as np
125
+
126
+ # 1. Préparer vos données
127
+ # Exemple: prédire le prix d'une maison selon surface, chambres, âge
128
+ X_train = np.array([
129
+ [100, 3, 5], # 100m², 3 chambres, 5 ans
130
+ [80, 2, 10], # 80m², 2 chambres, 10 ans
131
+ [120, 4, 2], # 120m², 4 chambres, 2 ans
132
+ # ... plus de données
133
+ ])
134
+ y_train = np.array([250000, 180000, 320000]) # Prix en euros
135
+
136
+ # 2. Créer une IA de prédiction
137
+ ai = sitiai.create.ai(
138
+ 'linear',
139
+ input_size=3, # 3 caractéristiques
140
+ output_size=1, # 1 prédiction (prix)
141
+ hidden_layers=[16, 8] # Couches cachées
142
+ )
143
+
144
+ # 3. Entraîner le modèle
145
+ ai.train(X_train, y_train, epochs=200, learning_rate=0.01)
146
+
147
+ # 4. Faire des prédictions
148
+ nouvelle_maison = np.array([[90, 2, 7]]) # 90m², 2 chambres, 7 ans
149
+ prix_predit = ai.predict(nouvelle_maison)
150
+ print(f"Prix prédit: {prix_predit[0, 0]:.0f}€")
151
+ ```
152
+
153
+ ### 📊 Évaluation du modèle
154
+
155
+ ```python
156
+ # Évaluer sur des données de test
157
+ X_test = np.array([[110, 3, 3], [75, 2, 15]])
158
+ y_test = np.array([280000, 150000])
159
+
160
+ mse, r2 = ai.evaluate(X_test, y_test)
161
+ print(f"Erreur quadratique: {mse:.2f}")
162
+ print(f"Score R²: {r2:.3f}")
163
+ ```
164
+
165
+ ---
166
+
167
+ ## 🧬 Couches de Neurones SitiNEUR
168
+
169
+ ### 🔗 Utilisation Directe
170
+
171
+ Pour un contrôle fin, utilisez directement les couches neuronales :
172
+
173
+ ```python
174
+ from sitiai import SitiNEUR
175
+ import numpy as np
176
+
177
+ # Créer une couche de neurones
178
+ layer = SitiNEUR(
179
+ input_size=10,
180
+ output_size=5,
181
+ activation='relu'
182
+ )
183
+
184
+ # Données d'entrée (batch de 3 exemples)
185
+ input_data = np.random.randn(3, 10)
186
+
187
+ # Propagation avant
188
+ output = layer.forward(input_data)
189
+ print(f"Forme d'entrée: {input_data.shape}")
190
+ print(f"Forme de sortie: {output.shape}")
191
+ ```
192
+
193
+ ### 🔄 Entraînement Manuel
194
+
195
+ ```python
196
+ # Simulation d'un gradient
197
+ grad_output = np.random.randn(3, 5)
198
+
199
+ # Rétropropagation
200
+ grad_input = layer.backward(grad_output, learning_rate=0.01)
201
+ print(f"Gradient d'entrée: {grad_input.shape}")
202
+ ```
203
+
204
+ ---
205
+
206
+ ## 📚 Exemples Complets
207
+
208
+ ### 🎯 Exemple 1: Prédiction de Température
209
+
210
+ ```python
211
+ import sitiai
212
+ import numpy as np
213
+
214
+ # Données: [humidité, pression, vent] -> température
215
+ X = np.random.randn(1000, 3)
216
+ y = 20 + 2*X[:, 0] - 0.5*X[:, 1] + 0.1*X[:, 2] + np.random.randn(1000)*2
217
+
218
+ # Séparer train/test
219
+ split = 800
220
+ X_train, X_test = X[:split], X[split:]
221
+ y_train, y_test = y[:split], y[split:]
222
+
223
+ # Créer et entraîner le modèle
224
+ ai = sitiai.create.ai('linear', input_size=3, output_size=1)
225
+ ai.train(X_train, y_train, epochs=150, verbose=True)
226
+
227
+ # Évaluer
228
+ mse, r2 = ai.evaluate(X_test, y_test)
229
+ print(f"🌡️ Précision du modèle météo: R² = {r2:.3f}")
230
+ ```
231
+
232
+ ### 🏷️ Exemple 2: Générateur de Marques
233
+
234
+ ```python
235
+ import sitiai
236
+
237
+ # Noms de marques technologiques
238
+ marques_tech = [
239
+ "Google", "Apple", "Microsoft", "Amazon", "Meta",
240
+ "Tesla", "Netflix", "Spotify", "Adobe", "Oracle"
241
+ ]
242
+
243
+ # Créer l'IA
244
+ brand_ai = sitiai.create.ai('generative', mode='name_generator')
245
+ brand_ai.load_data(marques_tech)
246
+ brand_ai.train(epochs=150)
247
+
248
+ # Générer de nouvelles marques
249
+ print("🚀 Nouvelles marques générées:")
250
+ for i, marque in enumerate(brand_ai.generate_batch(n=5), 1):
251
+ print(f" {i}. {marque}")
252
+ ```
253
+
254
+ ---
255
+
256
+ ## ⚙️ Configuration Avancée
257
+
258
+ ### 🔧 Paramètres d'Entraînement
259
+
260
+ ```python
261
+ # Configuration fine pour LinearAI
262
+ ai = sitiai.create.ai('linear', input_size=5, output_size=1, hidden_layers=[32, 16, 8])
263
+
264
+ ai.train(
265
+ X_train, y_train,
266
+ epochs=300, # Nombre d'époques
267
+ learning_rate=0.001, # Taux d'apprentissage
268
+ batch_size=32, # Taille des mini-batches
269
+ verbose=True # Affichage des logs
270
+ )
271
+ ```
272
+
273
+ ### 🎨 Paramètres Génératifs
274
+
275
+ ```python
276
+ # Configuration pour GenerativeAI
277
+ ai = sitiai.create.ai('generative', mode='name_generator')
278
+ ai.load_data(data)
279
+ ai.train(epochs=200, ngram_size=3) # Trigrammes au lieu de bigrammes
280
+
281
+ # Génération avec contrôle
282
+ result = ai.generate(
283
+ max_length=15, # Longueur maximale
284
+ temperature=1.2 # Créativité
285
+ )
286
+ ```
287
+
288
+ ---
289
+
290
+ ## 🔧 API Reference
291
+
292
+ ### 📋 Fonctions d'Activation Supportées
293
+
294
+ | Activation | Formule | Usage |
295
+ |------------|---------|--------|
296
+ | `'relu'` | `max(0, x)` | Couches cachées (défaut) |
297
+ | `'sigmoid'` | `1/(1+e^(-x))` | Classification binaire |
298
+ | `'tanh'` | `tanh(x)` | Données centrées |
299
+ | `'linear'` | `x` | Couche de sortie |
300
+
301
+ ### 🏗️ Architecture des Modèles
302
+
303
+ ```python
304
+ # LinearAI avec architecture personnalisée
305
+ ai = sitiai.create.ai(
306
+ 'linear',
307
+ input_size=10, # Taille d'entrée
308
+ output_size=1, # Taille de sortie
309
+ hidden_layers=[64, 32, 16] # Couches cachées
310
+ )
311
+
312
+ # Structure résultante: 10 -> 64 -> 32 -> 16 -> 1
313
+ print(ai) # Affiche l'architecture
314
+ ```
315
+
316
+ ### 📊 Métriques d'Évaluation
317
+
318
+ ```python
319
+ # Obtenir les métriques détaillées
320
+ predictions = ai.predict(X_test)
321
+ mse, r2 = ai.evaluate(X_test, y_test)
322
+
323
+ # Calculs manuels
324
+ mae = np.mean(np.abs(predictions - y_test)) # Erreur absolue moyenne
325
+ print(f"MAE: {mae:.4f}")
326
+ ```
327
+
328
+ ---
329
+
330
+ ## 🎓 Utilisation Éducative
331
+
332
+ Sitiai est parfait pour :
333
+
334
+ - 📚 **Apprentissage** des concepts de ML
335
+ - 🔬 **Prototypage** rapide d'idées
336
+ - 🎯 **Projets étudiants** en IA
337
+ - 🚀 **Applications légères** sans complexité
338
+
339
+ ### 💡 Exemple pour Débutants
340
+
341
+ ```python
342
+ # Super simple: prédire y = 2x + 1
343
+ import sitiai
344
+ import numpy as np
345
+
346
+ # Données simples
347
+ X = np.array([[1], [2], [3], [4], [5]])
348
+ y = np.array([3, 5, 7, 9, 11]) # y = 2x + 1
349
+
350
+ # Créer et entraîner
351
+ ai = sitiai.create.ai('linear', input_size=1, output_size=1)
352
+ ai.train(X, y, epochs=100)
353
+
354
+ # Tester
355
+ test_x = np.array([[6]])
356
+ prediction = ai.predict(test_x)
357
+ print(f"Pour x=6, y prédit = {prediction[0,0]:.1f}") # Devrait être ~13
358
+ ```
359
+
360
+ ---
361
+
362
+ ## 🤝 Contribution
363
+
364
+ Envie de contribuer ? Voici comment :
365
+
366
+ 1. 🍴 Fork le repository
367
+ 2. 🌿 Créez une branche pour votre feature
368
+ 3. ✏️ Commitez vos changements
369
+ 4. 📤 Push vers la branche
370
+ 5. 🔄 Ouvrez une Pull Request
371
+
372
+ ---
373
+
374
+ ## 📝 Licence
375
+
376
+ Ce projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.
377
+
378
+ ---
379
+
380
+ ## 👨‍💻 Auteur
381
+
382
+ **Clemylia** - Créateur de Sitiai
383
+
384
+ ---
385
+
386
+ <div align="center">
387
+
388
+ **⭐ N'oubliez pas de donner une étoile si Sitiai vous aide ! ⭐**
389
+
390
+ [🐛 Reporter un Bug](https://github.com/clemylia/sitiai/issues) | [💡 Demander une Feature](https://github.com/clem27game/sitiaia/issues) | [📖 Documentation](https://github.com/clem27game/sitiaia)
391
+
392
+ </div>
393
+
394
+ 🛑 **Attention** : Remplacez sitiai par Sitiaia dans les codes pour que la version obtenu avec le repos github fonctionne
395
+
396
+ **Exemple de code pour sauvegarder votre modèle dans un fichier npz** :
397
+
398
+ ```
399
+ import Sitiaia
400
+ import numpy as np
401
+
402
+ # Create a simple AI (e.g., a linear AI)
403
+ simple_ai = Sitiaia.create.ai('linear', input_size=2, output_size=1)
404
+
405
+ # You might want to train it first, but for saving, just creating it is enough
406
+ # X_train = np.random.randn(10, 2)
407
+ # y_train = np.random.randn(10, 1)
408
+ # simple_ai.train(X_train, y_train, epochs=10)
409
+
410
+ # Save the AI weights to a .npz file
411
+ filename = 'simple_ai_model.npz'
412
+ simple_ai.save_weights(filename)
413
+
414
+ print(f"Simple AI saved to {filename}")
415
+
416
+ # You can optionally load the weights back to verify
417
+ # loaded_ai = Sitiaia.create.ai('linear', input_size=2, output_size=1)
418
+ # loaded_ai.load_weights(filename)
419
+ # print(f"Simple AI loaded from {filename}")
420
+ ```
421
+
422
+ Pour plus d'informations et d'exemples, consulter les fichiers Demo.py et example_save_load.py.