Spaces:
Sleeping
Sleeping
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() | |