# Complete code for Hugging Face Spaces deployment # Your CSV file name: brain_tumor_dataset.csv import gradio as gr import pandas as pd import numpy as np from sklearn.ensemble import RandomForestClassifier from sklearn.preprocessing import LabelEncoder import os print("Loading Brain Tumor Detection System...") # Load dataset from CSV file csv_file = 'brain_tumor_dataset.csv' if not os.path.exists(csv_file): print(f"Error: {csv_file} not found!") print("Please upload brain_tumor_dataset.csv to the current directory") else: df = pd.read_csv(csv_file) print(f"✅ Dataset loaded: {len(df)} patient records") print(f"📊 Columns in CSV: {list(df.columns)}") # Check which columns exist and use only available ones available_columns = df.columns.tolist() # Define required columns required_columns = ['Age', 'Gender', 'Headache_Score', 'Memory_Loss', 'Visual_Disturbance', 'Nausea', 'Vomiting', 'Seizures', 'Weakness', 'Coordination_Issues', 'Tumor_Detected'] # Check if all required columns exist for col in required_columns: if col not in available_columns: print(f"⚠️ Warning: '{col}' not found in CSV") # Use only columns that exist feature_columns = [col for col in required_columns if col in available_columns] print(f"✅ Using features: {feature_columns}") # Train model with available columns le_gender = LabelEncoder() le_memory = LabelEncoder() le_visual = LabelEncoder() le_nausea = LabelEncoder() le_vomiting = LabelEncoder() le_seizures = LabelEncoder() le_weakness = LabelEncoder() le_coordination = LabelEncoder() le_tumor = LabelEncoder() # Encode categorical columns df['Gender_E'] = le_gender.fit_transform(df['Gender']) df['Memory_E'] = le_memory.fit_transform(df['Memory_Loss']) df['Visual_E'] = le_visual.fit_transform(df['Visual_Disturbance']) df['Nausea_E'] = le_nausea.fit_transform(df['Nausea']) df['Vomiting_E'] = le_vomiting.fit_transform(df['Vomiting']) df['Seizures_E'] = le_seizures.fit_transform(df['Seizures']) df['Weakness_E'] = le_weakness.fit_transform(df['Weakness']) df['Coordination_E'] = le_coordination.fit_transform(df['Coordination_Issues']) df['Tumor_E'] = le_tumor.fit_transform(df['Tumor_Detected']) # Prepare features X = df[['Age', 'Gender_E', 'Headache_Score', 'Memory_E', 'Visual_E', 'Nausea_E', 'Vomiting_E', 'Seizures_E', 'Weakness_E', 'Coordination_E']] y = df['Tumor_E'] # Train model model = RandomForestClassifier(n_estimators=200, max_depth=15, random_state=42) model.fit(X, y) print("✅ Model trained successfully!") def predict_tumor(age, gender, headache, memory_loss, visual_disturbance, nausea, vomiting, seizures, weakness, coordination_issues): gender_e = 0 if gender == 'Male' else 1 memory_e = 1 if memory_loss == 'Yes' else 0 visual_e = 1 if visual_disturbance == 'Yes' else 0 nausea_e = 1 if nausea == 'Yes' else 0 vomiting_e = 1 if vomiting == 'Yes' else 0 seizures_e = 1 if seizures == 'Yes' else 0 weakness_e = 1 if weakness == 'Yes' else 0 coordination_e = 1 if coordination_issues == 'Yes' else 0 input_data = [[age, gender_e, headache, memory_e, visual_e, nausea_e, vomiting_e, seizures_e, weakness_e, coordination_e]] prediction = model.predict(input_data)[0] probability = model.predict_proba(input_data)[0][1] result = "TUMOR DETECTED" if prediction == 1 else "NO TUMOR" if prediction == 1: recommendations = """ 🚨 **URGENT RECOMMENDATIONS:** • Consult a neurologist immediately • Schedule brain MRI with contrast • Get a complete neurological examination • Do not delay treatment """ color = "#c8a2c8" icon = "⚠️" else: recommendations = """ ✅ **HEALTHY RECOMMENDATIONS:** • Continue regular health checkups • Maintain healthy lifestyle • Monitor any persistent symptoms • Annual medical examination """ color = "#e6e6fa" icon = "✅" return result, f"{probability*100:.1f}%", recommendations, color, icon custom_css = """ """ with gr.Blocks(css=custom_css, title="Brain Tumor Detection System") as demo: gr.HTML("""