Iralion's picture
Update app.py
dd6e777 verified
# Fonction de prédiction
import gradio as gr
import joblib
import numpy as np
import pandas as pd
# importer le modèle
rr = joblib.load('rr.joblib')
# importer le normaliseur
scaler = joblib.load('scaler.joblib')
# Import de l'encodeur
encoder = joblib.load("Activities.joblib")
def Pred_func(Hours_Studied,Previous_Scores, Extracurricular_Activities, Sleep_Hours, Sample_Question_Papers_Practiced):
# Encoder les valeurs de Extracurricular_Activities
Extracurricular_Activities = encoder.transform([Extracurricular_Activities])[0]
# vecteur des valeurs numériques
x_new = np.array([Hours_Studied,Previous_Scores, Extracurricular_Activities, Sleep_Hours, Sample_Question_Papers_Practiced])
x_new = x_new.reshape(1,-1) # convert en un 2D array
# Normaliser les données
x_new = scaler.transform(x_new)
# Prédire
y_pred = rr.predict(x_new)
# Arrondir
y_pred = round(y_pred[0],2)
return str(y_pred)
# Fonction de prédiction multiple
def Pred_func_csv(file):
# Lire le fichier csv
df = pd.read_csv(file)
predictions = []
# Boucle sur les lignes du dataframe
for row in df.iloc[:, :].values:
y_pred = Pred_func(row[0], row[1],row[2],row[3],row[4])
predictions.append(y_pred)
df['Performance_Index'] = predictions
df.to_csv('predictions.csv', index = False)
return 'predictions.csv'
# définir les blocks
demo = gr.Blocks(theme = gr.themes.Ocean())
#gr.themes.Monochrome()
# gr.themes.Citrus()
# gr.themes.Glass()
# gr.themes.Ocean()
# Créer les inputs
inputs = [gr.Number(label='Hours_Studied'),
gr.Number(label='Previous_Scores'),
gr.Radio(choices=['Yes', 'No'], label='Extracurricular_Activities'),
gr.Number(label='Sleep_Hours'),
gr.Number(label='Sample_Question_Papers_Practiced')]
# Créer les outputs
outputs = gr.Textbox(label='Performance_Index')
# Créer l'interface 1
interface1 = gr.Interface(fn = Pred_func,
inputs = inputs,
outputs = outputs,
title="Prédire la performence d'un individu avec une simple prédiction")
# Créer l'interface 2
interface2 = gr.Interface(fn = Pred_func_csv,
inputs = gr.File(label='Upload a csv file'),
outputs = gr.File(label='Download a csv file'),
title="Prédire la performence d'un individu avec multiple prédiction")
# faire un tabbing des interfaces
with demo:
gr.TabbedInterface([interface1, interface2], ['Simple Prediction', 'Prédiction multiple'])
# lancer l'interface
demo.launch()