File size: 4,502 Bytes
38ecbb8
 
 
f3edb3b
38ecbb8
 
 
f3edb3b
426cf2f
 
38ecbb8
f3edb3b
426cf2f
 
38ecbb8
f3edb3b
 
 
 
86c3394
f3edb3b
91dafc5
 
86c3394
f3edb3b
 
 
91dafc5
 
f3edb3b
 
 
 
 
 
 
 
91dafc5
 
 
 
86c3394
91dafc5
 
 
 
 
86c3394
91dafc5
f3edb3b
426cf2f
38ecbb8
f3edb3b
 
38ecbb8
f3edb3b
 
 
 
 
 
 
 
 
38ecbb8
f3edb3b
 
86c3394
426cf2f
86c3394
 
426cf2f
86c3394
f3edb3b
 
38ecbb8
 
86c3394
38ecbb8
f3edb3b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38ecbb8
 
f3edb3b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import gradio as gr
import numpy as np
import pickle
import pandas as pd
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.linear_model import Ridge

# Charger le modèle Ridge sauvegardé
with open('ridge_model.pkl', 'rb') as file:
    ridge_model = pickle.load(file)

# Charger le scaler sauvegardé
with open('scaler.pkl', 'rb') as file:
    scaler = pickle.load(file)

# Initialisation des encodeurs pour les variables catégorielles
label_encoder_fuel = LabelEncoder()
label_encoder_seller = LabelEncoder()
label_encoder_trans = LabelEncoder()

# Fonction pour effectuer une prédiction manuelle
def predict(Kms_Driven, Present_Price, Fuel_Type, Seller_Type, Transmission, Age):
    try:
        # Encoder les variables catégorielles
        Fuel_Type_encoded = label_encoder_fuel.fit_transform([Fuel_Type])[0]
        Seller_Type_encoded = label_encoder_seller.fit_transform([Seller_Type])[0]
        Transmission_encoded = label_encoder_trans.fit_transform([Transmission])[0]

        # Préparer les caractéristiques d'entrée
        input_features = np.array([
            Kms_Driven,
            Present_Price,
            Fuel_Type_encoded,
            Seller_Type_encoded,
            Transmission_encoded,
            Age
        ]).reshape(1, -1)

        # Normaliser les données
        input_features_scaled = scaler.transform(input_features)

        # Faire une prédiction
        prediction = ridge_model.predict(input_features_scaled)

        return prediction[0]

    except Exception as e:
        return f"Erreur : {str(e)}"

# Fonction pour prédire à partir d'un fichier CSV
def predict_from_file(file):
    try:
        # Charger les données du fichier CSV
        df = pd.read_csv(file.name)

        # Vérifier si les colonnes nécessaires existent dans le fichier
        required_columns = ['Kms_Driven', 'Present_Price', 'Fuel_Type', 'Seller_Type', 'Transmission', 'Age']
        if not all(col in df.columns for col in required_columns):
            return "Erreur : Le fichier CSV doit contenir les colonnes suivantes : Kms_Driven, Present_Price, Fuel_Type, Seller_Type, Transmission, Age"

        # Encoder les variables catégorielles
        df['Fuel_Type'] = label_encoder_fuel.fit_transform(df['Fuel_Type'])
        df['Seller_Type'] = label_encoder_seller.fit_transform(df['Seller_Type'])
        df['Transmission'] = label_encoder_trans.fit_transform(df['Transmission'])

        # Extraire les caractéristiques pour la prédiction
        features = df[['Kms_Driven', 'Present_Price', 'Fuel_Type', 'Seller_Type', 'Transmission', 'Age']].values
        features_scaled = scaler.transform(features)

        # Faire les prédictions
        predictions = ridge_model.predict(features_scaled)

        # Ajouter les prédictions au dataframe et retourner
        df['Prediction'] = predictions
        return df

    except Exception as e:
        return f"Erreur : {str(e)}"

# Créer l'interface avec Gradio en utilisant gr.Blocks et demo.launch()

with gr.Blocks() as demo:
    with gr.Tab("Prédiction Manuelle"):
        # Définir les entrées pour la prédiction manuelle
        inputs_manual = [
            gr.Number(label="Kms Driven"),
            gr.Number(label="Present Price"),
            gr.Dropdown(["Petrol", "Diesel"], label="Fuel Type"),
            gr.Dropdown(["Individual", "Dealer"], label="Seller Type"),
            gr.Dropdown(["Manual", "Automatic"], label="Transmission"),
            gr.Number(label="Age")
        ]
        # Définir la sortie pour la prédiction manuelle
        outputs_manual = gr.Textbox(label="Prédiction")

        # Ajouter la fonction de prédiction manuelle dans le tab
        gr.Button("Faire une Prédiction", elem_id="manual_predict_button").click(
            fn=predict,
            inputs=inputs_manual,
            outputs=outputs_manual
        )

    with gr.Tab("Prédiction à partir d'un fichier CSV"):
        # Définir l'entrée pour la prédiction à partir de fichier CSV
        inputs_file = gr.File(label="Télécharger un fichier CSV")
        # Définir la sortie pour le fichier CSV
        outputs_file = gr.Dataframe(label="Prédictions depuis le fichier")

        # Ajouter la fonction de prédiction à partir du fichier
        gr.Button("Prédire à partir du fichier").click(
            fn=predict_from_file,
            inputs=inputs_file,
            outputs=outputs_file
        )

# Lancer l'application
demo.launch(debug=True)