Skip to main content

Predicția statusului pacientului - Simulare OJIA 2 (v1)

Author: Mihai Nan

Medium
Your best score: N/A
Problem Description

🏥 Problema: Analiza și predicția stării pacientului

Pentru această problemă trebuie să implementați un model de învățare automată pentru a prezice valoarea câmpului Status utilizând un set de date disponibil, care conține informații despre pacienți. Setul de date este organizat într-un fișier CSV care include diverse trăsături (features), iar evaluarea modelului se va face pe baza preciziei pentru clasa Dead.

📊 Setul de date

Setul de date conține următoarele câmpuri:

  • Age: Vârsta pacientului.
  • Race: Rasa pacientului (ex: White, Other).
  • Marital Status: Starea civilă a pacientului.
  • T Stage: Stadiul tumorii (T1, T2, T3, T4).
  • N Stage: Gradul de afectare a ganglionilor limfatici.
  • 6th Stage: Stadiul cancerului conform clasificării TNM a celei de-a 6-a ediții.
  • differentiate: Gradul de diferențiere tumorală.
  • Grade: Gradul histologic al tumorii (1, 2, 3 etc.).
  • A Stage: Clasificarea stadiului bolii.
  • Tumor Size: Dimensiunea tumorii.
  • BMI: Indicele de masă corporală.
  • Heart Rate: Ritmul cardiac.
  • Serum Creatinine: Nivelul seric de creatinină.
  • Uric Acid: Nivelul acidului uric.
  • Hemoglobin: Concentrația hemoglobinei.
  • GFR (Glomerular Filtration Rate): Rata de filtrare glomerulară.
  • Serum Sodium: Concentrația de sodiu seric.
  • Serum Potassium: Concentrația de potasiu seric.
  • Serum Albumin: Nivelul albuminei serice.
  • Lactate: Concentrația lactatului.
  • Status: Starea pacientului („Dead” sau „Alive”) – câmpul țintă.

📝 Task-uri

Pentru primele subtasks, va trebui să încărcați setul de date și să efectuați analize statistice pe test.csv.

Subtask 1 (10 puncte)

Clasificați funcția renală pentru fiecare pacient din setul de testare pe baza valorii GFR:

  • Normal dacă GFR >= 90
  • Mildly Decreased dacă 60 <= GFR < 90

Subtask 2 (10 puncte)

Calculați cuartilele valorilor din coloana Serum Creatinine (Q1, Q2, Q3) pentru setul de date de antrenare și clasificați pacienții din setul de date de testare în functie de următoarele:

  • Very Low dacă Serum Creatinine <= Q1
  • Low dacă Q1 < Serum Creatinine <= Q2
  • High dacă Q2 < Serum Creatinine <= Q3
  • Very High dacă Serum Creatinine > Q3

Subtask 3 (10 puncte)

Determinarea valorii BMI astfel:

  1. Calculăm valoarea pentru mediana acestei coloane pentru datele din setul de antrenare.
  2. Pentru pacienții din setul de testare, considerăm că avem:
  • 1 dacă BMI > mediana din train
  • 0 dacă BMI <= mediana

Subtask 4 (10 puncte)

Numărul de pacienți din train care se află în același T Stage ca pacientul din test.

Subtask 5 (60 puncte)

Construiți un model de ML pentru a prezice Status (Dead sau Alive) în funcție de trăsături. Evaluarea se face pe baza preciziei pentru clasa Dead.

🧮 Evaluare

Metrica de evaluare este precizia pentru clasa Dead:

Precision

unde:

  • TP = numărul de pacienți corect prezis Dead
  • FP = numărul de pacienți prezis Dead incorect

📌 Note

  • Câmpul țintă este Status.
  • Unele câmpuri pot conține valori lipsă (NaN) și trebuie tratate.
  • Se recomandă analiza corelației dintre variabile și variabila țintă.
  • Detectați și eliminați valori extreme dacă afectează performanța modelului.
  • Trimiterea unui sample_output pentru testare locală oferă 5 puncte.

📄 Formatul fișierului de submisie

Fișierul submission.csv trebuie să conțină rezultatele tuturor celor 5 subtasks pentru fiecare rând din setul test.
Fiecare rând din test generează 5 linii în fișier, câte una pentru fiecare subtask.

Structura fișierului:

subtaskID    datapointID    answer

Semnificația coloanelor:

  • subtaskID - numărul subtask-ului (1–5).
  • datapointID - ID-ul pacientului din test (dacă fișierul test nu are ID, se folosește indexul rândului).
  • answer - rezultatul cerut de subtask:
    • Subtask 1: Normal / Mildly Decreased / Decreased
    • Subtask 2: Very Low / Low / High / Very High
    • Subtask 3: 0 sau 1
    • Subtask 4: număr întreg (count)
    • Subtask 5: 1 dacă modelul prezice Dead , 0 dacă prezice Alive

Exemplu pentru un singur pacient cu ID 3220:

subtaskID    datapointID    answer
1            3220           Normal
2            3220           Low
3            3220           0
4            3220           5
5            3220           1

🗂️ Resurse utile

Submit Solution
Upload output file and optionally source code for evaluation.

Submission File

Source Code File (optional)

Sign in to upload a submission.