Spaces:
Sleeping
Sleeping
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)
|