File size: 1,965 Bytes
8889232
 
 
 
 
4f15974
8889232
 
 
 
 
 
 
 
 
 
 
 
 
5296582
8889232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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}')