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}')