Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import joblib | |
| import numpy as np | |
| import ast | |
| # Charger le modèle pré-entraîné | |
| model = joblib.load("model.pkl") | |
| # To load the encoder from the file | |
| le_for_adres =joblib.load('LabelEncoder_adress.pkl') | |
| le_for_city =joblib.load('LabelEncoder_city.pkl') | |
| df = pd.read_excel("resultat.xlsx") | |
| df = df.reset_index(drop=True) | |
| villes = df['nom_commune'].unique() | |
| # Créer une interface utilisateur Streamlit | |
| st.title("Prédiction de la valeur foncière d'un bien immobilier") | |
| st.write("Bienvenue dans notre outil de prédiction de la valeur foncière.") | |
| # Formulaire pour saisir les caractéristiques du bien immobilier | |
| st.header("Caractéristiques du bien immobilier necessaires pour la prédiction") | |
| nom_commune = st.selectbox("Sélectionnez une ville", villes) | |
| adresse_nom_voie_options = df[df['nom_commune'] == nom_commune]['adresse_nom_voie'].to_list() | |
| adresse_nom_voie = st.selectbox("Sélectionnez une adresse", ast.literal_eval(adresse_nom_voie_options[0])) | |
| #adresse_nom_voie = st.text_input("Adresse Nom Voie",value='RUE DE LA CHARPINE') | |
| adresse_numero = st.number_input("Numéro de l'adresse", value=843) | |
| code_postal = st.number_input("Code postal", value=1000) | |
| type_local = st.selectbox("Type de local", ['Maison', 'Appartement']) | |
| surface_reelle_bati = st.number_input("Surface", value=0) | |
| nombre_pieces_principales = st.number_input("Nombre de pièces principales", value=0, step=1) | |
| st.header("Information optionnelle ") | |
| constructionYear = st.number_input("Année de construction", value=2017) | |
| print("bbbbb") | |
| # Bouton pour effectuer la prédiction | |
| if st.button("Prédire la valeur foncière"): | |
| df = pd.DataFrame({ | |
| 'adresse_nom_voie': [adresse_nom_voie], | |
| 'adresse_numero': [adresse_numero], | |
| 'nom_commune': [nom_commune], | |
| 'code_postal': [code_postal], | |
| 'surface_reelle_bati': [surface_reelle_bati], | |
| 'nombre_pieces_principales': [nombre_pieces_principales], | |
| 'constructionYear': [constructionYear], | |
| 'type_local': [type_local], | |
| }) | |
| df['type_local'] = df['type_local'].replace({"Appartement": 1, "Maison": 2}) | |
| df['nom_commune']=le_for_city.transform( df['nom_commune']) | |
| df['adresse_nom_voie'] = le_for_adres.transform(df['adresse_nom_voie']) | |
| # Reset the indices of both DataFrames | |
| X_test = df.values | |
| prediction = model.predict(X_test) | |
| #prediction = np.expm1( model.predict(X_test, num_iteration=model.best_iteration)) | |
| st.subheader("Résultat de la prédiction") | |
| st.write(f"La valeur foncière prédite est : { int(prediction[0])} euros") | |
| # Astuce : Vous pouvez personnaliser davantage votre interface utilisateur Streamlit en ajoutant des graphiques, des informations supplémentaires, etc. | |