Predicția scorului la examen - Simulare OJIA 3
Author: Mihai Nan
🏫 Predicția scorului la examen
Pentru această problemă trebuie să implementați un model de regresie capabil să prezică scorul obținut la examen (Exam_Score) utilizând un set de date disponibil. Setul de date este organizat într-un fișier CSV, iar performanța modelului se va evalua pe baza Mean Absolute Error (MAE).
🔹 Setul de date
Setul de date conține următoarele coloane:
- ID: Număr unic de identificare al studentului
- Hours_Studied: Numărul de ore petrecute studiind
- Attendance: Procentul de prezență la cursuri
- Parental_Involvement: Nivelul de implicare al părinților (Low, Medium, High)
- Access_to_Resources: Accesul la resurse educaționale (Low, Medium, High)
- Extracurricular_Activities: Participarea la activități extracurriculare (Yes/No)
- Sleep_Hours: Numărul mediu de ore de somn pe noapte
- Previous_Scores: Scorurile obținute anterior la examene
- Motivation_Level: Nivelul de motivație (Low, Medium, High)
- Internet_Access: Accesul la internet pentru studiu (Yes/No)
- Tutoring_Sessions: Numărul de sesiuni de meditații
- Family_Income: Venitul familiei (Low, Medium, High)
- Teacher_Quality: Calitatea profesorilor percepută de elev (Low, Medium, High)
- School_Type: Tipul de școală (Public/Private)
- Peer_Influence: Influența colegilor asupra elevului (Negative, Neutral, Positive)
- Physical_Activity: Numărul de ore de activitate fizică săptămânal
- Learning_Disabilities: Prezența dificultăților de învățare (Yes/No)
- Parental_Education_Level: Nivelul de educație al părinților (High School, College, Postgraduate)
- Distance_from_Home: Distanța dintre casă și școală (Near, Moderate, Far)
- Gender: Genul elevului (Male/Female)
- Exam_Score: Variabila țintă, scorul obținut la examen (valoare numerică)
📚 Task-uri
Subtask 1 (10 puncte)
Calculați media valorilor din coloana Hours_Studied pe setul de antrenare. Pentru fiecare student din test, determinați modulul diferenței dintre Hours_Studied și media calculată.
Subtask 2 (10 puncte)
Determinați pentru fiecare student din test dacă acesta doarme puțin (<7 ore). Rezultatul va fi True sau False.
Subtask 3 (10 puncte)
Numărați câți studenți din setul de antrenare au avut un scor anterior (Previous_Scores) mai mare sau egal cu al fiecărui student din test.
Subtask 4 (10 puncte)
Determinați numărul de studenți din antrenare cu același nivel de motivație (Motivation_Level) ca fiecare student din test.
Subtask 5 (60 puncte)
Construiți un model de regresie pentru a prezice Exam_Score pe baza caracteristicilor furnizate. Modelul trebuie să generalizeze pe date noi și va fi evaluat cu MAE.
📊 Note despre setul de date
- Câmpul-țintă:
Exam_Score - Modelul trebuie antrenat pe
train_data.csvși evaluat petest_data.csv - Se recomandă verificarea valorilor lipsă și normalizarea caracteristicilor.
⚙️ Criterii de evaluare
- Performanță: MAE cât mai mic
📨 Formatul fișierului de submisie
Fișierul de submisie trebuie să fie un CSV cu exact trei coloane:
| Coloană | Tip | Descriere |
|---|---|---|
subtaskID | integer | Reprezintă ID-ul subtask-ului (de la 1 la 5). |
datapointID | integer/string | Reprezintă identificatorul unic al rândului din setul de test (ID). |
answer | float / int / bool | Răspunsul pentru subtask-ul respectiv. Tipul valorii depinde de subtask: • Subtask 1: float • Subtask 2: boolean • Subtask 3: integer • Subtask 4: integer • Subtask 5: float (predicții model) |
🔹 Exemple
| subtaskID | datapointID | answer |
|---|---|---|
| 1 | 101 | 12.5 |
| 2 | 101 | True |
| 3 | 101 | 7 |
| 4 | 101 | 3 |
| 5 | 101 | 85.3 |
Important: Fiecare rând din CSV reprezintă răspunsul pentru un singur subtask și un singur datapoint. Pentru fiecare
datapointIDtrebuie să existe câte un rând pentru fiecare subtask.
📝 Notă
Trimiterea unui sample_output generează 6 puncte.
🗂️ Resurse utile
- Starter Kit complet – conține un schelet de la care puteți porni rezolvarea problemei