Spaces:
Sleeping
Sleeping
File size: 2,543 Bytes
8f460b5 1840ab8 d481617 0897c41 d481617 f4ba322 d481617 0897c41 353254e 1840ab8 f4ba322 0897c41 f4ba322 1840ab8 f4ba322 1840ab8 0897c41 f4ba322 1840ab8 0897c41 d481617 0897c41 d481617 0897c41 1840ab8 0897c41 f4ba322 0897c41 f4ba322 0897c41 f4ba322 0897c41 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 |
import streamlit as st
import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# Page config
st.set_page_config(page_title="Crime Rate Prediction", layout="wide")
st.title("📊 Crime Rate Prediction Based on Past Data")
# CSV path (Make sure this file is uploaded in Streamlit cloud if deployed)
csv_path = "https://huggingface.co/spaces/MLDeveloper/crime_rate_predicition/resolve/main/RS_Session_255_AS_116.1%20(2).csv"
try:
# Load the dataset
df = pd.read_csv(csv_path)
st.subheader("📄 Raw Dataset")
st.dataframe(df)
# Preprocess
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 string numbers to integers (if needed)
for col in ['2018', '2019', '2020', '2021']:
data[col] = pd.to_numeric(data[col], errors='coerce').fillna(0).astype(int)
# Sidebar for user 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 starting year for prediction", 2022, 2026, 2022)
# Perform prediction for selected state
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)
future_years = list(range(start_year, 2028))
predictions = model.predict(pd.DataFrame({'Year': future_years}))
# Prepare result DataFrame
result_df = pd.DataFrame({
'Year': future_years,
'Predicted Crime Cases': [max(0, int(pred)) for pred in predictions]
})
st.subheader(f"📈 Predicted Crime Rate in {selected_state} ({start_year}–2027)")
st.dataframe(result_df)
# Plotting
fig2, ax2 = plt.subplots()
ax2.plot(result_df['Year'], result_df['Predicted Crime Cases'], marker='o', linestyle='--', color='teal')
ax2.set_xlabel("Year")
ax2.set_ylabel("Predicted Crime Cases")
ax2.set_title(f"Crime Trend Prediction for {selected_state}")
st.pyplot(fig2)
except FileNotFoundError:
st.error(f"❌ File not found at path: {csv_path}. Please check the path.")
|