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}')