Spaces:
Sleeping
Sleeping
| """Data loading and preprocessing utilities for Titanic dataset.""" | |
| import numpy as np | |
| import pandas as pd | |
| import seaborn as sns | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.preprocessing import StandardScaler | |
| import streamlit as st | |
| SEED = 42 | |
| def load_titanic(): | |
| """Load Titanic dataset from seaborn (no Kaggle account needed).""" | |
| return sns.load_dataset('titanic') | |
| def preprocess_titanic(df): | |
| """ํ์ดํ๋ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ํจ์ (๋ ธํธ๋ถ ์ฝ๋ ์ฌ์ฌ์ฉ)""" | |
| data = df.copy() | |
| features = ['pclass', 'sex', 'age', 'sibsp', 'parch', 'fare', 'embarked'] | |
| target = 'survived' | |
| data = data[features + [target]].copy() | |
| # ๊ฒฐ์ธก๊ฐ ์ฒ๋ฆฌ | |
| data['age'].fillna(data['age'].median(), inplace=True) | |
| data['fare'].fillna(data['fare'].median(), inplace=True) | |
| data['embarked'].fillna(data['embarked'].mode()[0], inplace=True) | |
| # ๋ฒ์ฃผํ โ ์ซ์ | |
| data['sex'] = (data['sex'] == 'male').astype(int) | |
| embarked_map = {'S': 0, 'C': 1, 'Q': 2} | |
| data['embarked'] = data['embarked'].map(embarked_map) | |
| # ํ์ ํผ์ฒ | |
| data['family_size'] = data['sibsp'] + data['parch'] | |
| return data | |
| def get_train_test_data(): | |
| """Return preprocessed train/test split with scaling.""" | |
| df = load_titanic() | |
| data = preprocess_titanic(df) | |
| X = data.drop('survived', axis=1) | |
| y = data['survived'] | |
| X_train, X_test, y_train, y_test = train_test_split( | |
| X, y, test_size=0.2, random_state=SEED, stratify=y | |
| ) | |
| scaler = StandardScaler() | |
| X_train_scaled = scaler.fit_transform(X_train) | |
| X_test_scaled = scaler.transform(X_test) | |
| return X_train, X_test, y_train, y_test, X_train_scaled, X_test_scaled, scaler | |
| def get_feature_names(): | |
| return ['pclass', 'sex', 'age', 'sibsp', 'parch', 'fare', 'embarked', 'family_size'] | |