Spaces:
Sleeping
Sleeping
File size: 2,831 Bytes
8f460b5 1840ab8 d481617 0897c41 d481617 17e052c f4ba322 d481617 17e052c 353254e 1840ab8 f4ba322 17e052c f4ba322 1840ab8 f4ba322 1840ab8 17e052c f4ba322 1840ab8 17e052c 0897c41 17e052c 0897c41 17e052c d481617 17e052c 0897c41 d481617 0897c41 1840ab8 17e052c 0897c41 f4ba322 17e052c 0897c41 f4ba322 17e052c f4ba322 17e052c |
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
import streamlit as st
import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# Page configuration
st.set_page_config(page_title="Crime Rate Prediction", layout="wide")
st.title("📊 Crime Rate Prediction Based on Past Data")
# CSV path (ensure the file is accessible or uploaded in cloud deployment)
csv_path = "https://huggingface.co/spaces/MLDeveloper/crime_rate_predicition/resolve/main/RS_Session_255_AS_116.1%20(2).csv"
try:
# Load dataset
df = pd.read_csv(csv_path)
st.subheader("📄 Raw Dataset")
st.dataframe(df)
# Preprocessing
data = df[[
'State/UT',
'Number of Cases Registered - 2018-19',
'Number of Cases Registered - 2019-20',
'Number of Cases Registered - 2020-21',
'Number of Cases Registered - 2021-22 (up to 31.10.2021)'
]].copy()
data.columns = ['State/UT', '2018', '2019', '2020', '2021']
# Convert to numeric
for col in ['2018', '2019', '2020', '2021']:
data[col] = pd.to_numeric(data[col], errors='coerce').fillna(0).astype(int)
# Sidebar input
st.sidebar.header("🔍 Predict Future Crime")
selected_state = st.sidebar.selectbox("Select a State/UT", data['State/UT'].unique())
start_year = st.sidebar.slider("Select a year to predict", 2022, 2027, 2022)
# Filter and train model
selected_row = data[data['State/UT'] == selected_state].iloc[0]
years = [2018, 2019, 2020, 2021]
X_train = pd.DataFrame({'Year': years})
y_train = selected_row[['2018', '2019', '2020', '2021']].values
model = LinearRegression()
model.fit(X_train, y_train)
# Predict future crime rates
future_years = list(range(2022, 2028))
predictions = model.predict(pd.DataFrame({'Year': future_years}))
result_df = pd.DataFrame({
'Year': future_years,
'Predicted Crime Cases': [max(0, int(pred)) for pred in predictions]
})
# Display single year result
selected_year_prediction = result_df[result_df['Year'] == start_year]['Predicted Crime Cases'].values[0]
st.success(f"📌 **Predicted Crime Rate in {selected_state} for the year {start_year}: {selected_year_prediction} cases**")
# Show full table
st.subheader(f"📈 Predicted Crime Rate in {selected_state} (2022–2027)")
st.dataframe(result_df)
# Line chart
fig, ax = plt.subplots()
ax.plot(result_df['Year'], result_df['Predicted Crime Cases'], marker='o', linestyle='--', color='teal')
ax.set_xlabel("Year")
ax.set_ylabel("Predicted Crime Cases")
ax.set_title(f"Crime Trend Prediction for {selected_state}")
st.pyplot(fig)
except FileNotFoundError:
st.error(f"❌ File not found at path: {csv_path}. Please check the path.")
except Exception as e:
st.error(f"⚠️ An error occurred: {e}")
|