Skip to content

rares9301/datatrain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Proiect PCLP3

Rareș-Andrei Sărmășag, 312CB - Ⓒ licensed under (GPLv3+)

Motivația proiectului

Python s-a impus ca limbaj esențial în domeniile Data Science și Inteligență Artificială, în special în ceea ce privește explorarea datelor și dezvoltarea de modele, datorită ecosistemului său extins de biblioteci specializate. Biblioteci precum numpy, pandas, matplotlib și seaborn oferă instrumente avansate pentru manipularea, vizualizarea și analiza datelor statistice, facilitând cercetătorilor și analiștilor posibilitatea de a explora seturi de date.

Setul de date Titanic este recunoscut și frecvent utilizat în analiza datelor și învățarea automată, conținând informații despre pasagerii navei Titanic, incluzând detalii precum sexul, vârsta, clasa socială, tariful plătit și supraviețuirea, printre alte variabile relevante. Acest set de date este adesea folosit pentru a investiga factorii care au influențat șansele de supraviețuire în timpul tragediei și pentru a dezvolta modele predictive care să estimeze șansele de supraviețuire ale pasagerilor pe baza caracteristicilor lor. Cu toate acestea, seturile de date pot conține valori aberante care pot afecta negativ rezultatele analizei. Scopul nostru este să curățăm setul de date Titanic prin eliminarea acestor valori aberante, astfel încât să poată fi utilizat eficient în antrenarea unui model predictiv.

Prin urmare, acest proiect își propune să efectueze o analiză riguroasă a setului de date pentru a identifica posibilele valori aberante. Această abordare formală și metodică este esențială pentru asigurarea integrității datelor înainte de a trece la etapele ulterioare de modelare și predicție.

Instalare

  1. Source Code Download
    git clone https://github.com/rares9301/datatrain.git
  2. Package Install
    pip install .
  3. PROJECT_ROOT config
    export PROJECT_ROOT="$HOME/path/to/project/dir"

Utilizare:

Pentru a rula scriptul folositi titanic-cli urmat de urmatoarele flaguri:

  1. Tipuri de proces:

    • -ol, --outliers: Setează ca proces eliminarea outlier-ilor.
    • -zs, --zscore: Setează ca proces curățarea de tip Z-score.
  2. Setarea coloanelor:

    • -c, --columns {coloane}: coloanele care vor fi folosite, ca string delimitat de ,.
      • opțional threshold-ul pentru z-score separat prin spațiu
  3. Calea catre fisier:

    • -p, --path: calea catre CSV-ul pe care vrei sa-l cureti.

    Exemple

    titanic-cli -zs -c Age,SibSp 3 --path datatrain/datasets/train.csv

    titanic-cli -ol -c Age,SibSp --path datatrain/datasets/train.csv

Structura codului

Proiectul este structurat pentru a asigura modularitate și claritate, facilitând dezvoltarea și întreținerea. Fiecare componentă a codului este izolată în module specifice, cum ar fi cli pentru interfața de linie de comandă și codebase pentru logica de procesare a datelor, permițând astfel lucrul pe segmente individuale fără a afecta restul codului. Structura clar definită ajută la navigarea și înțelegerea rapidă a proiectului.

.
├── datatrain/
│   ├── core/
│   │   ├── cli/
│   │   │   └── client.py
│   │   ├── codebase/
│   │   │   ├── outliers.py
│   │   │   └── z-score.py
│   │   └── config.py
│   ├── datasets/
│   │   ├── gender_submission.csv
│   │   ├── test.csv
│   │   └── train.csv
│   ├── workload/
│   │   ├── task1.csv
│   │   └── task2.csv
│   └── graphs/
├── disclaimer.md
├── license.md
├── poetry.lock
├── pyproject.toml
└── readme.md

Poetry simplifică instalarea și actualizarea bibliotecilor necesare,poetry.lock asigură consistența mediului de development, garantând că proiectul poate fi reconstruit cu exact aceleași versiuni de dependențe. pyproject.toml aderă la standardele moderne ale Python pentru configurarea proiectelor, oferind un format unificat și ușor de utilizat. Această abordare contribuie la eficiența dezvoltării și la scalabilitatea proiectului pe termen lung, reprezentând o fundație solidă pentru construirea și distribuirea aplicațiilor Python într-un mod organizat și controlat.

Taskuri implementate:

Task 1 Outlier Detection

Calculează Q1 și Q3 și Intervalul Interquartil (IQR) pentru fiecare coloană, apoi folosește aceste valori pentru a defini limitele de outlier-i. Valorile dincolo de aceste limite sunt eliminate, iar setul de date curățat este salvat într-un nou fișier CSV.

  • Calculul IQR:
    • Pentru fiecare coloană specificată în columns, se calculează percentilele Q1 și Q3.
    • IQR este diferența dintre aceste două percentile (Q3 - Q1).
    • Se stabilește limita inferioară și superioară pentru outlier-i folosind formula:
      • lower_bound
      • upper_bound

Task 2 Z-Score

Calculează Z-score pentru fiecare valoare din coloanele specificate ale unui fișier CSV. Valorile care au un Z-score mai mare decât un prag prestabilit (implicit 3) sunt eliminate. Setul de date curățat este apoi salvat într-un nou fișier CSV.

  • Calculul Z-score:
    • Pentru fiecare coloană specificată în columns, codul calculează media (mean) și deviația standard (std) a coloanei.

    • Se creează o nouă coloană (z_score_column) care conține Z-score-ul calculat pentru fiecare valoare din coloană, folosind formula:

      zscore

      unde (X) este valoarea individuală din coloană.

    • Valorile pentru care Z-score-ul absolut este mai mare decât pragul specificat (zscore_threshold) sunt considerate outlier-i și sunt eliminate din setul de date.

Validarea datelor

Inainte de outlier detection După outlier detection
before after1
Inainte de z-score După z-score
before after1

Cea mai mare diferență poate fi sesizata in histograme

Inainte de outlier detection
before
După outlier detection
after1-all
După z-score
after1-all

Versionare

commit-uri ale principalelor modificari ale fisierelor pentru o buna versionare a codului

commits

Contributing

Eventuale sugestii sau modificări sunt așteptate cu căldură. 🌟


Rareș-Andrei Sărmășag

student at Polithenica Bucuresti - Faculty of Automatic Control and Computer Science

Seria CB-312 @ CTI 2024

contact email: rares.sarmasag@stud.acs.upb.ro.

discord: _ap0


Copyright (C) 2024 Rareș-Andrei Sărmășag
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.