Team Ai
Apppublic

CodingMaster24/WaterPotabilityPredictor

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
app.py75 linesDownload Raw Back to root
1import streamlit as st2import pandas as pd3import numpy as np4import requests5from io import StringIO6from sklearn.model_selection import train_test_split7from sklearn.preprocessing import StandardScaler8from sklearn.linear_model import LogisticRegression9from sklearn.metrics import accuracy_score10 11# --- Load dataset ---12@st.cache_data13def load_data():14    url = "https://raw.githubusercontent.com/Sivatech24/Water-Potability-Predictor/main/Data/water_potability.csv"15    s = requests.get(url).content16    data = pd.read_csv(StringIO(s.decode("utf-8")))17    data = data.dropna()  # Drop missing values18    return data19 20data = load_data()21 22# --- Split data ---23X = data.drop(columns=["Potability"])24y = data["Potability"]25X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)26 27# --- Standardize data ---28scaler = StandardScaler()29X_train = scaler.fit_transform(X_train)30X_test = scaler.transform(X_test)31 32# --- Train model ---33model = LogisticRegression()34model.fit(X_train, y_train)35 36# --- Prediction function ---37def predict_potability(features):38    features = np.array(features).reshape(1, -1)39    try:40        features = scaler.transform(features)41        return model.predict(features)[0]42    except ValueError:43        return None44 45# --- Streamlit UI ---46st.title("๐Ÿ’ง Water Potability Prediction")47st.write("Enter the water quality parameters to predict if the water is **safe to drink**.")48 49# --- Input fields ---50ph = st.number_input("pH Level (0-14)", min_value=0.0, max_value=14.0, value=7.0)51hardness = st.number_input("Hardness", min_value=0.0, value=150.0)52solids = st.number_input("Solids (ppm)", min_value=0.0, value=20000.0)53chloramines = st.number_input("Chloramines", min_value=0.0, value=4.0)54sulfate = st.number_input("Sulfate", min_value=0.0, value=300.0)55conductivity = st.number_input("Conductivity", min_value=0.0, value=400.0)56organic_carbon = st.number_input("Organic Carbon", min_value=0.0, value=10.0)57trihalomethanes = st.number_input("Trihalomethanes", min_value=0.0, value=50.0)58turbidity = st.number_input("Turbidity", min_value=0.0, value=4.0)59 60# --- Prediction ---61if st.button("๐Ÿ” Predict Potability"):62    input_features = [ph, hardness, solids, chloramines, sulfate, conductivity, organic_carbon, trihalomethanes, turbidity]63    result = predict_potability(input_features)64    65    if result is None:66        st.error("โŒ Invalid input. Please check your values.")67    elif result == 1:68        st.success("โœ… The water is **potable** (safe to drink).")69    else:70        st.warning("โš ๏ธ The water is **not potable** (not safe to drink).")71 72# --- Model Accuracy ---73accuracy = accuracy_score(y_test, model.predict(X_test))74st.sidebar.markdown(f"### ๐Ÿ“Š Model Accuracy: `{accuracy:.2%}`")75