analist's picture
Update app.py
4f15974 verified
raw
history blame
1.97 kB
import streamlit as st
import joblib
import numpy as np
from sklearn.preprocessing import StandardScaler
loaded_model = joblib.load('crop_knn(1).pkl')
encoder = joblib.load('encoder.pkl')
st.title('Prédiction de la production agricole')
# Entrées utilisateur avec sliders
st.write('### Entrez les valeurs des caractéristiques :')
# Définir les valeurs maximales pour chaque caractéristique
max_values = {'N': 400, 'P': 200, 'K': 600, 'temperature': 50, 'humidity': 100, 'ph': 14, 'rainfall': 500}
# Créer des sliders pour chaque caractéristique
user_inputs = {}
for feature in max_values:
user_inputs[feature] = st.slider(f'{feature.capitalize()}', min_value=0.1, max_value=float(max_values[feature]), value=(float(max_values[feature]) + 1)/2, step=0.1)
# Transformation des entrées en tableau numpy
input_data = np.array([[user_inputs['N'], user_inputs['P'], user_inputs['K'], user_inputs['temperature'], user_inputs['humidity'], user_inputs['ph'], user_inputs['rainfall']]])
# Normalisation des données d'entrée
scaler = StandardScaler()
scaler.fit(input_data)
input_data_scaled = scaler.transform(input_data)
# Prédiction de la classe de production agricole
production_class = loaded_model.predict(input_data_scaled)[0]
prediction_probabilities = loaded_model.predict_proba(input_data_scaled)[0]
# Inverse transformation des probabilités
inverse_transformed_probabilities = scaler.inverse_transform([prediction_probabilities])
# Affichage des probabilités inversées
st.write('### Probabilités inversées pour chaque classe :')
for i in range(len(inverse_transformed_probabilities[0])):
st.write(f'- Classe {i}: {inverse_transformed_probabilities[0][i]:.2f}')
# Affichage de la classe prédite avec la plus haute probabilité
predicted_class = loaded_model.predict(input_data_scaled)[0]
predicted_species = iris.target_names[predicted_class]
st.write(f'### Classe prédite avec la plus haute probabilité : {predicted_species}')