analist commited on
Commit
8889232
1 Parent(s): 292f8b8

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import joblib
3
+ import numpy as np
4
+ from sklearn.preprocessing import StandardScaler
5
+
6
+ loaded_model = joblib.load('knn_model.pkl')
7
+ encoder = joblib.load('encoder.pkl')
8
+
9
+ st.title('Prédiction de la production agricole')
10
+
11
+ # Entrées utilisateur avec sliders
12
+ st.write('### Entrez les valeurs des caractéristiques :')
13
+
14
+ # Définir les valeurs maximales pour chaque caractéristique
15
+ max_values = {'N': 400, 'P': 200, 'K': 600, 'temperature': 50, 'humidity': 100, 'ph': 14, 'rainfall': 500}
16
+
17
+ # Créer des sliders pour chaque caractéristique
18
+ user_inputs = {}
19
+ for feature in max_values:
20
+ user_inputs[feature] = st.slider(f'{feature.capitalize()}', min_value=0.1, max_value=max_values[feature], value=max_values[feature]/2, step=0.1)
21
+
22
+ # Transformation des entrées en tableau numpy
23
+ 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']]])
24
+
25
+ # Normalisation des données d'entrée
26
+ scaler = StandardScaler()
27
+ scaler.fit(input_data)
28
+ input_data_scaled = scaler.transform(input_data)
29
+
30
+ # Prédiction de la classe de production agricole
31
+ production_class = loaded_model.predict(input_data_scaled)[0]
32
+ prediction_probabilities = loaded_model.predict_proba(input_data_scaled)[0]
33
+
34
+ # Inverse transformation des probabilités
35
+ inverse_transformed_probabilities = scaler.inverse_transform([prediction_probabilities])
36
+
37
+ # Affichage des probabilités inversées
38
+ st.write('### Probabilités inversées pour chaque classe :')
39
+ for i in range(len(inverse_transformed_probabilities[0])):
40
+ st.write(f'- Classe {i}: {inverse_transformed_probabilities[0][i]:.2f}')
41
+
42
+ # Affichage de la classe prédite avec la plus haute probabilité
43
+ predicted_class = loaded_model.predict(input_data_scaled)[0]
44
+ predicted_species = iris.target_names[predicted_class]
45
+ st.write(f'### Classe prédite avec la plus haute probabilité : {predicted_species}')