alperugurcan commited on
Commit
f02a8e0
·
verified ·
1 Parent(s): 7d7d474

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -0
app.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import joblib
4
+
5
+ # Page config
6
+ st.set_page_config(page_title="Blueberry Yield Predictor", layout="wide")
7
+
8
+ # Load model and scaler
9
+ @st.cache_resource
10
+ def load_model():
11
+ model = joblib.load('model.joblib')
12
+ scaler = joblib.load('scaler.joblib')
13
+ return model, scaler
14
+
15
+ model, scaler = load_model()
16
+
17
+ # App title
18
+ st.title('🫐 Blueberry Yield Predictor')
19
+ st.markdown('Enter field parameters to predict blueberry yield')
20
+
21
+ # Create two columns for inputs
22
+ col1, col2 = st.columns(2)
23
+
24
+ with col1:
25
+ st.subheader('Field Parameters')
26
+ clonesize = st.slider('Clone Size', 10.0, 40.0, 25.0)
27
+ honeybee = st.slider('Honeybee', 0.0, 1.0, 0.5)
28
+ bumbles = st.slider('Bumbles', 0.0, 1.0, 0.25)
29
+ andrena = st.slider('Andrena', 0.0, 1.0, 0.5)
30
+
31
+ with col2:
32
+ st.subheader('Environmental Parameters')
33
+ osmia = st.slider('Osmia', 0.0, 1.0, 0.5)
34
+ MaxOfUpperTRange = st.slider('Max Temperature (°F)', 60.0, 100.0, 80.0)
35
+ MinOfUpperTRange = st.slider('Min Temperature (°F)', 35.0, 60.0, 50.0)
36
+ RainingDays = st.slider('Raining Days', 1.0, 34.0, 20.0)
37
+
38
+ # Predict button
39
+ if st.button('Predict Yield'):
40
+ # Create input data
41
+ input_data = pd.DataFrame({
42
+ 'clonesize': [clonesize],
43
+ 'honeybee': [honeybee],
44
+ 'bumbles': [bumbles],
45
+ 'andrena': [andrena],
46
+ 'osmia': [osmia],
47
+ 'MaxOfUpperTRange': [MaxOfUpperTRange],
48
+ 'MinOfUpperTRange': [MinOfUpperTRange],
49
+ 'AverageOfUpperTRange': [(MaxOfUpperTRange + MinOfUpperTRange) / 2],
50
+ 'MaxOfLowerTRange': [60.0],
51
+ 'MinOfLowerTRange': [30.0],
52
+ 'AverageOfLowerTRange': [45.0],
53
+ 'RainingDays': [RainingDays],
54
+ 'AverageRainingDays': [RainingDays/100],
55
+ 'fruitset': [0.5],
56
+ 'fruitmass': [0.45],
57
+ 'seeds': [35.0]
58
+ })
59
+
60
+ # Scale and predict
61
+ input_scaled = scaler.transform(input_data)
62
+ prediction = model.predict(input_scaled)[0]
63
+
64
+ # Display prediction
65
+ st.success(f'Predicted Yield: {prediction:.2f}')