MLDeveloper commited on
Commit
f4ba322
·
verified ·
1 Parent(s): 2f5a227

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -58
app.py CHANGED
@@ -1,71 +1,66 @@
1
  import streamlit as st
2
  import pandas as pd
3
- import numpy as np
4
  from sklearn.linear_model import LinearRegression
5
- from sklearn.model_selection import train_test_split
6
- from sklearn.preprocessing import LabelEncoder
7
 
8
- # Streamlit UI
9
- st.set_page_config(page_title="BigMart Sales Predictor", page_icon="🛒", layout="centered")
10
- st.title("🛒 BigMart Sales Prediction using Real World Dataset")
11
- st.markdown("Fill in the product details to get a sales prediction.")
12
 
13
- # Load and preprocess dataset
14
- @st.cache_data
15
- def load_data():
16
- data = pd.read_csv("Train.csv") # 👈 Make sure Train.csv is in the same directory
17
- # Handle missing values
18
- data.fillna(data.mean(numeric_only=True), inplace=True)
19
- data.fillna("Unknown", inplace=True)
20
-
21
- # Encode categorical columns
22
- label_enc = LabelEncoder()
23
- for col in ['Item_Fat_Content', 'Item_Type', 'Outlet_Identifier', 'Outlet_Size', 'Outlet_Location_Type', 'Outlet_Type']:
24
- data[col] = label_enc.fit_transform(data[col])
25
- return data
26
 
27
- df = load_data()
 
 
28
 
29
- # Select features and target
30
- features = ['Item_Weight', 'Item_Visibility', 'Item_MRP']
31
- target = 'Item_Outlet_Sales'
32
 
33
- X = df[features]
34
- y = df[target]
 
 
 
 
 
 
35
 
36
- # Train model
37
- model = LinearRegression()
38
- model.fit(X, y)
39
 
40
- # Input UI
41
- product_name = st.text_input("📦 Product Name")
42
- item_weight = st.number_input("⚖️ Item Weight (kg)", min_value=0.0, step=0.1)
43
- item_visibility = st.slider("👀 Item Visibility", 0.0, 1.0, 0.05)
44
- item_mrp = st.number_input("💰 Item MRP", min_value=0.0, step=1.0)
45
 
46
- # Prediction
47
- if st.button("Predict Sales"):
48
- if not product_name:
49
- st.warning("Please enter a product name.")
50
- else:
51
- user_input = np.array([[item_weight, item_visibility, item_mrp]])
52
- predicted_sales = model.predict(user_input)[0]
53
- st.success(f"📈 Predicted Sales for '{product_name}': ₹{predicted_sales:,.2f}")
54
-
55
- # Optional: Download Prediction
56
- result_df = pd.DataFrame({
57
- "Product Name": [product_name],
58
- "Item Weight": [item_weight],
59
- "Item Visibility": [item_visibility],
60
- "Item MRP": [item_mrp],
61
- "Predicted Sales": [predicted_sales]
62
- })
63
 
64
- st.download_button("📥 Download Result as CSV", result_df.to_csv(index=False), file_name="prediction.csv", mime="text/csv")
 
 
 
 
 
65
 
66
- # Sidebar Info
67
- st.sidebar.title("📌 About")
68
- st.sidebar.markdown("""
69
- This app uses a **real BigMart dataset** from Kaggle and a **Linear Regression model** to predict sales.
70
- You can customize features or switch to advanced ML models later!
71
- """)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
  import pandas as pd
 
3
  from sklearn.linear_model import LinearRegression
4
+ import matplotlib.pyplot as plt
 
5
 
6
+ # Page config
7
+ st.set_page_config(page_title="Crime Rate Prediction", layout="wide")
8
+ st.title("📊 Crime Rate Prediction Based on Past Data")
 
9
 
10
+ # Replace this with your actual dataset path
11
+ csv_path = "crime_data.csv" # Example: "data/crime_data.csv" if inside a folder
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ # Load data
14
+ try:
15
+ df = pd.read_csv(csv_path)
16
 
17
+ # Display raw data
18
+ st.subheader("📄 Raw Dataset")
19
+ st.dataframe(df)
20
 
21
+ # Extract the relevant columns
22
+ data = df[[
23
+ 'State/UT',
24
+ 'Number of Cases Registered - 2018-19',
25
+ 'Number of Cases Registered - 2019-20',
26
+ 'Number of Cases Registered - 2020-21',
27
+ 'Number of Cases Registered - 2021-22 (up to 31.10.2021)'
28
+ ]].copy()
29
 
30
+ # Rename for easier access
31
+ data.columns = ['State/UT', '2018', '2019', '2020', '2021']
 
32
 
33
+ # Model training & prediction
34
+ years = ['2018', '2019', '2020', '2021']
35
+ future_year = '2022'
 
 
36
 
37
+ X = pd.DataFrame({'Year': [2018, 2019, 2020, 2021]})
38
+ predicted_values = []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
 
40
+ for i, row in data.iterrows():
41
+ y = row[years].values
42
+ model = LinearRegression()
43
+ model.fit(X, y)
44
+ pred = model.predict([[2022]])[0]
45
+ predicted_values.append(max(0, int(pred))) # Avoid negatives
46
 
47
+ data['Predicted 2022'] = predicted_values
48
+
49
+ # Display result
50
+ st.subheader("📈 Predicted Crime Rate for 2022")
51
+ st.dataframe(data[['State/UT', 'Predicted 2022']].sort_values(by='Predicted 2022', ascending=False))
52
+
53
+ # Plot top 10 states
54
+ st.subheader("🔝 Top 10 States by Predicted Crime Rate")
55
+ top10 = data.sort_values(by='Predicted 2022', ascending=False).head(10)
56
+
57
+ fig, ax = plt.subplots()
58
+ ax.barh(top10['State/UT'], top10['Predicted 2022'], color='salmon')
59
+ ax.set_xlabel("Predicted Cases")
60
+ ax.set_ylabel("State/UT")
61
+ ax.invert_yaxis()
62
+ ax.set_title("Top 10 States with Highest Predicted Crime Rate (2022)")
63
+ st.pyplot(fig)
64
+
65
+ except FileNotFoundError:
66
+ st.error(f"❌ File not found at path: {csv_path}. Please check the path.")