Sel / app.py
ErenKontas's picture
Upload 4 files
8b36e83 verified
import pandas as pd
import streamlit as st
import joblib
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
# Load data and update column names
df = pd.read_csv('train.csv')
# Select dependent and independent variables
x = df.drop(['id', 'FloodProbability'], axis=1)
y = df[['FloodProbability']]
# Split data into training and testing sets
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, random_state=42)
# Preprocessing (StandardScaler)
preprocessor = ColumnTransformer(
transformers=[
('num', StandardScaler(), ['MonsoonIntensity', 'TopographyDrainage', 'RiverManagement', 'Deforestation',
'Urbanization', 'ClimateChange', 'DamsQuality', 'Siltation',
'AgriculturalPractices', 'Encroachments', 'IneffectiveDisasterPreparedness',
'DrainageSystems', 'CoastalVulnerability', 'Landslides', 'Watersheds',
'DeterioratingInfrastructure', 'PopulationScore', 'WetlandLoss',
'InadequatePlanning', 'PoliticalFactors'])
]
)
# Streamlit application
def sel_pred(MonsoonIntensity, TopographyDrainage, RiverManagement, Deforestation, Urbanization,
ClimateChange, DamsQuality, Siltation, AgriculturalPractices, Encroachments,
IneffectiveDisasterPreparedness, DrainageSystems, CoastalVulnerability, Landslides,
Watersheds, DeterioratingInfrastructure, PopulationScore, WetlandLoss,
InadequatePlanning, PoliticalFactors):
input_data = pd.DataFrame({
'MonsoonIntensity': [MonsoonIntensity],
'TopographyDrainage': [TopographyDrainage],
'RiverManagement': [RiverManagement],
'Deforestation': [Deforestation],
'Urbanization': [Urbanization],
'ClimateChange': [ClimateChange],
'DamsQuality': [DamsQuality],
'Siltation': [Siltation],
'AgriculturalPractices': [AgriculturalPractices],
'Encroachments': [Encroachments],
'IneffectiveDisasterPreparedness': [IneffectiveDisasterPreparedness],
'DrainageSystems': [DrainageSystems],
'CoastalVulnerability': [CoastalVulnerability],
'Landslides': [Landslides],
'Watersheds': [Watersheds],
'DeterioratingInfrastructure': [DeterioratingInfrastructure],
'PopulationScore': [PopulationScore],
'WetlandLoss': [WetlandLoss],
'InadequatePlanning': [InadequatePlanning],
'PoliticalFactors': [PoliticalFactors]
})
input_data_transformed = preprocessor.fit_transform(input_data)
model = joblib.load('Sel.pkl')
prediction = model.predict(input_data_transformed)
return float(prediction[0])
st.title("Flood Risk Regression Model")
st.write("Enter Input Data")
MonsoonIntensity = st.number_input('MonsoonIntensity', min_value=int(df['MonsoonIntensity'].min()), max_value=int(df['MonsoonIntensity'].max()), step=1)
TopographyDrainage = st.number_input('TopographyDrainage', min_value=int(df['TopographyDrainage'].min()), max_value=int(df['TopographyDrainage'].max()), step=1)
RiverManagement = st.number_input('RiverManagement', min_value=int(df['RiverManagement'].min()), max_value=int(df['RiverManagement'].max()), step=1)
Deforestation = st.number_input('Deforestation', min_value=int(df['Deforestation'].min()), max_value=int(df['Deforestation'].max()), step=1)
Urbanization = st.number_input('Urbanization', min_value=int(df['Urbanization'].min()), max_value=int(df['Urbanization'].max()), step=1)
ClimateChange = st.number_input('ClimateChange', min_value=int(df['ClimateChange'].min()), max_value=int(df['ClimateChange'].max()), step=1)
DamsQuality = st.number_input('DamsQuality', min_value=int(df['DamsQuality'].min()), max_value=int(df['DamsQuality'].max()), step=1)
Siltation = st.number_input('Siltation', min_value=int(df['Siltation'].min()), max_value=int(df['Siltation'].max()), step=1)
AgriculturalPractices = st.number_input('AgriculturalPractices', min_value=int(df['AgriculturalPractices'].min()), max_value=int(df['AgriculturalPractices'].max()), step=1)
Encroachments = st.number_input('Encroachments', min_value=int(df['Encroachments'].min()), max_value=int(df['Encroachments'].max()), step=1)
IneffectiveDisasterPreparedness = st.number_input('IneffectiveDisasterPreparedness', min_value=int(df['IneffectiveDisasterPreparedness'].min()), max_value=int(df['IneffectiveDisasterPreparedness'].max()), step=1)
DrainageSystems = st.number_input('DrainageSystems', min_value=int(df['DrainageSystems'].min()), max_value=int(df['DrainageSystems'].max()), step=1)
CoastalVulnerability = st.number_input('CoastalVulnerability', min_value=int(df['CoastalVulnerability'].min()), max_value=int(df['CoastalVulnerability'].max()), step=1)
Landslides = st.number_input('Landslides', min_value=int(df['Landslides'].min()), max_value=int(df['Landslides'].max()), step=1)
Watersheds = st.number_input('Watersheds', min_value=int(df['Watersheds'].min()), max_value=int(df['Watersheds'].max()), step=1)
DeterioratingInfrastructure = st.number_input('DeterioratingInfrastructure', min_value=int(df['DeterioratingInfrastructure'].min()), max_value=int(df['DeterioratingInfrastructure'].max()), step=1)
PopulationScore = st.number_input('PopulationScore', min_value=int(df['PopulationScore'].min()), max_value=int(df['PopulationScore'].max()), step=1)
WetlandLoss = st.number_input('WetlandLoss', min_value=int(df['WetlandLoss'].min()), max_value=int(df['WetlandLoss'].max()), step=1)
InadequatePlanning = st.number_input('InadequatePlanning', min_value=int(df['InadequatePlanning'].min()), max_value=int(df['InadequatePlanning'].max()), step=1)
PoliticalFactors = st.number_input('PoliticalFactors', min_value=int(df['PoliticalFactors'].min()), max_value=int(df['PoliticalFactors'].max()), step=1)
if st.button('Predict'):
sel = sel_pred(MonsoonIntensity, TopographyDrainage, RiverManagement, Deforestation, Urbanization,
ClimateChange, DamsQuality, Siltation, AgriculturalPractices, Encroachments,
IneffectiveDisasterPreparedness, DrainageSystems, CoastalVulnerability, Landslides,
Watersheds, DeterioratingInfrastructure, PopulationScore, WetlandLoss,
InadequatePlanning, PoliticalFactors)
st.write(f'The predicted flood probability is: {sel:.2f}')