Predicția statusului pacientului - Simulare OJIA 2 (v1)
Author: Mihai Nan
🏥 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:
Normaldacă GFR >= 90Mildly Decreaseddacă 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 Lowdacă Serum Creatinine <= Q1Lowdacă Q1 < Serum Creatinine <= Q2Highdacă Q2 < Serum Creatinine <= Q3Very Highdacă Serum Creatinine > Q3
Subtask 3 (10 puncte)
Determinarea valorii BMI astfel:
- Calculăm valoarea pentru mediana acestei coloane pentru datele din setul de antrenare.
- 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:
unde:
- TP = numărul de pacienți corect prezis
Dead - FP = numărul de pacienți prezis
Deadincorect
📌 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_outputpentru 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:
0sau1 - Subtask 4: număr întreg (count)
- Subtask 5:
1dacă modelul prezice Dead ,0dacă prezice Alive
- Subtask 1:
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
- Starter Kit complet – conține un schelet de la care puteți porni rezolvarea problemei