This commit is contained in:
Ladebeze66 2025-02-22 18:49:33 +01:00
parent 4e321348d7
commit 5b0e50bcb2
7 changed files with 36 additions and 41 deletions

View File

@ -1,19 +0,0 @@
# Ignorer le dossier Git et les fichiers de versioning
.git/
.gitignore
# Ignorer les fichiers Python temporaires
__pycache__/
*.pyc
*.pyo
*.pyd
# Ignorer lenvironnement virtuel (si jamais recréé)
venv/
ftline/
# Ignorer les fichiers générés
model.npy
data/data.normalized.csv
ft_linear_subject.pdf

2
.gitignore vendored
View File

@ -1,5 +1,5 @@
# Ignorer l'environnement virtuel
ftline/
ftlinear/
# Ignorer les fichiers de cache Python
__pycache__/

View File

@ -1,14 +0,0 @@
# Utilisation d'une image Python officielle
FROM python:3.12
# Définition du répertoire de travail
WORKDIR /app
# Copier tous les fichiers du projet dans le conteneur
COPY . /app
# Installer les dépendances du projet
RUN pip install --no-cache-dir -r requirements.txt
# COMMANDE PAR défaut : Exécuter "main.py"
CMD ["python", "main.py"]

View File

@ -5,7 +5,6 @@ import os
sys.path.append(os.path.abspath("src"))
from src.training_model import train_model
from src.prediction import predict_price # Peut maintenant être importé dès le début
from src.gui import show_gui # Import propre et structuré
def main():
@ -15,7 +14,7 @@ def main():
# Entraîner le modèle
train_model()
print("Modèle entraîné avec succès !")
from src.prediction import predict_price
# Lancer l'interface graphique après l'entraînement
print("Lancement de l'interface graphique...")
show_gui(predict_price)

27
run.sh Normal file
View File

@ -0,0 +1,27 @@
#!/bin/bash
echo "🚀 Activation de l'environnement virtuel..."
# Vérifier si l'environnement virtuel existe
if [ ! -d "ftlinear" ]; then
echo "🛠 Création de l'environnement virtuel..."
python3 -m venv ftlinear
fi
# Détecter si le système est Debian/Ubuntu avec PEP 668 (éviter l'erreur `externally-managed-environment`)
if grep -q "externally-managed" /usr/lib/python*/EXTERNALLY-MANAGED 2>/dev/null; then
echo "⚠️ Système avec gestion des paquets restreinte. Utilisation de '--break-system-packages'."
PIP_EXTRA="--break-system-packages"
else
PIP_EXTRA=""
fi
# Activer l'environnement virtuel
source ftlinear/bin/activate
echo "📦 Installation des dépendances..."
pip install --upgrade pip $PIP_EXTRA
pip install -r requirements.txt $PIP_EXTRA
echo "🎯 Exécution du programme..."
python main.py

View File

@ -1,15 +1,17 @@
import numpy as np
import pandas as pd
import os
# Charger les valeurs min/max pour la dé-normalisation
df = pd.read_csv("data/data_normalized.csv")
# Génère le chemin absolu basé sur lemplacement du script
file_path = os.path.abspath(os.path.join(os.getcwd(), "data", "data_normalized.csv"))
df = pd.read_csv(file_path)
km_min, km_max = df["km"].min(), df["km"].max()
price_min, price_max = df["price"].min(), df["price"].max()
def predict_price(km):
"""Prédit le prix d'une voiture en fonction du kilométrage donné en entrée."""
# Charger les paramètres optimisés (entraînés sur des données normalisées)
theta_0, theta_1 = np.load("model.npy")
theta_0, theta_1 = np.load("data/model.npy")
# Normaliser le kilométrage
km_norm = (km - km_min) / (km_max - km_min)

View File

@ -17,13 +17,13 @@ def train_model():
theta_0_init = 0
theta_1_init = 1
learning_rate = 0.1 # Taux d'apprentissage
iterations = 10000
iterations = 1000
# Exécuter la descente de gradient
theta_0_opt, theta_1_opt, cost_history = gradient_descent(X, y, theta_0_init, theta_1_init, learning_rate, iterations)
# Sauvegarder les paramètres optimisés
np.save("model.npy", [theta_0_opt, theta_1_opt]) # Sauvegarde des paramètres optimisés dans un fichier .npy
np.save("data/model.npy", [theta_0_opt, theta_1_opt]) # Sauvegarde des paramètres optimisés dans un fichier .npy
print("Modèle entraîné et paramètres sauvegardés.")
print(f"Paramètre optimisé θ₀ = {theta_0_opt}")
print(f"Paramètre optimisé θ₁ = {theta_1_opt}")