Spaces:
Sleeping
Sleeping
File size: 2,845 Bytes
8f460b5 1840ab8 d481617 0897c41 d481617 483b677 3722fe4 d481617 483b677 1840ab8 f4ba322 483b677 f4ba322 0897c41 483b677 d481617 483b677 d481617 483b677 1840ab8 483b677 f4ba322 483b677 17e052c cf5aa0b 3722fe4 f4ba322 483b677 f4ba322 |
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 |
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 Predictor", layout="centered")
st.title("🔮 Crime Rate Prediction for Indian States")
# CSV path (Hosted online)
csv_path = "https://huggingface.co/spaces/MLDeveloper/crime_rate_predicition/resolve/main/RS_Session_255_AS_116.1%20(2).csv"
try:
# Load and preprocess data
df = pd.read_csv(csv_path)
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']
for col in ['2018', '2019', '2020', '2021']:
data[col] = pd.to_numeric(data[col], errors='coerce').fillna(0).astype(int)
# --- User Inputs ---
st.subheader("📝 Enter Details to Predict Future Crime Rates")
# Dropdown for State selection
state_input = st.selectbox("Select State/UT", sorted(data['State/UT'].unique()))
# Slider for year selection
year_input = st.slider("Select Starting Year", 2022, 2026, 2022)
if state_input:
if state_input in data['State/UT'].values:
selected_row = data[data['State/UT'] == state_input].iloc[0]
X_train = pd.DataFrame({'Year': [2018, 2019, 2020, 2021]})
y_train = selected_row[['2018', '2019', '2020', '2021']].values
# Train model and predict
model = LinearRegression()
model.fit(X_train, y_train)
future_years = list(range(year_input, 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]
})
# # Show predictions
st.subheader(f"📈 Predicted Crime Rate for {state_input} ({year_input} to 2027)")
st.dataframe(result_df, use_container_width=True)
# Plot
fig, ax = plt.subplots()
ax.plot(result_df['Year'], result_df['Predicted Crime Cases'], marker='o', linestyle='--', color='orangered')
ax.set_xlabel("Year")
ax.set_ylabel("Predicted Crime Cases")
ax.set_title(f"{state_input} Crime Rate Prediction")
st.pyplot(fig)
else:
st.warning("⚠️ Please enter a valid State/UT name from the dataset.")
else:
st.info("👈 Please enter a State/UT name to begin prediction.")
except FileNotFoundError:
st.error(f"❌ File not found at path: {csv_path}. Please check the path.")
|