Spaces:
Sleeping
Sleeping
File size: 2,446 Bytes
8f460b5 1840ab8 d481617 0897c41 d481617 b65fa3f d481617 b65fa3f 1840ab8 f4ba322 b65fa3f f4ba322 b65fa3f f4ba322 b65fa3f 0897c41 b65fa3f d481617 b65fa3f d481617 b65fa3f 1840ab8 b65fa3f f4ba322 b65fa3f 17e052c b65fa3f f4ba322 b65fa3f 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 = "crime_data.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.")
|