resolverkatla's picture
Update app.py
430820d verified
import pandas as pd
import numpy as np
import gradio as gr
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
# Load dataset
df = pd.read_csv("titanic.csv")
expected_cols = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Survived"]
available_cols = [col for col in expected_cols if col in df.columns]
df = df[available_cols].dropna()
# Encode 'Sex'
df["Sex"] = LabelEncoder().fit_transform(df["Sex"]) # male=1, female=0
# Features & target
X = df.drop("Survived", axis=1)
y = df["Survived"]
# Train model
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
# Prediction function
def predict_survival(pclass, sex, age, fare):
sex_encoded = 1 if sex == "male" else 0
input_data = np.array([[pclass, sex_encoded, age, fare]])
prediction = model.predict(input_data)[0]
return "βœ… Survived" if prediction == 1 else "❌ Did not survive"
# Gradio interface
iface = gr.Interface(
fn=predict_survival,
inputs=[
gr.Dropdown([1, 2, 3], label="Passenger Class"),
gr.Radio(["male", "female"], label="Sex"),
gr.Slider(0, 80, step=1, label="Age"),
gr.Slider(0, 500, step=1, label="Fare"),
],
outputs="text",
title="🚒 Titanic Survival Predictor",
description="Enter passenger details to predict their survival on the Titanic."
)
if __name__ == "__main__":
iface.launch()