Spaces:
Sleeping
Sleeping
Create app.py
Browse files
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}')
|