Spaces:
Sleeping
Sleeping
File size: 2,764 Bytes
f2ba60a |
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 |
import streamlit as st
import pandas as pd
import joblib
import numpy as np
import ast
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.
|