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()