Repozytorium zawiera kod oraz środowisko eksperymentalne do analizy jakości dwóch typów danych:
- Szeregi czasowe / dane tabelaryczne: Dynamika pisania na klawiaturze
- Obrazy: Zdjęcia twarzy (analiza szumu, ocena BRISQUE, segmentacja)
Ze względu na ochronę prywatności, same zbiory danych (zdjęcia i próbki klawiaturowe) nie znajdują się w tym repozytorium.
Projekt wykorzystuje wirtualne środowiska, aby zapewnić spójność wersji bibliotek u każdego członka zespołu.
git clone https://github.com/lsocpb/data-quality.git
cd data-qualityProjekt zarządza zależnościami za pomocą nowoczesnego narzędzia uv, ale wspiera również klasycznego pip.
Wybierz jedną z poniższych opcji:
Narzędzie uv automatycznie:
- utworzy środowisko w folderze
.venv - pobierze wszystkie pakiety na podstawie pliku
uv.lock
uv syncJeśli nie masz zainstalowanego uv, utwórz środowisko ręcznie i zainstaluj paczki z pliku requirements.txt.
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtpython3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtAby edytor widział zainstalowane biblioteki (pandas, scikit-learn, cv2), musisz wskazać środowisko .venv.
- Otwórz folder projektu
Ctrl + Shift + P(lubCmd + Shift + Pna Macu)- Wybierz: Python: Select Interpreter
- Wskaż interpreter z folderu
.venv(np../.venv/Scripts/python.exe) - W notebookach
.ipynbupewnij się, że wybrany jest ten sam kernel
- Otwórz projekt
File -> Settings(Mac:PyCharm -> Settings)Project: projekt-jakosc-danych -> Python Interpreter- Add Interpreter -> Add Local Interpreter
- Wybierz Existing environment
- Wskaż plik
python.exez folderu.venv - Kliknij OK
Repozytorium zawiera kompletny pipeline badawczy dla projektu keystroke dynamics:
- pobranie surowych zdarzeń z bazy,
- czyszczenie i budowa macierzy cech,
- klasyfikacja kNN z metrykami
Euclidean,ChebysheviBray-Curtis, - ewaluacja
leave-one-out, - wygenerowanie artefaktów badawczych oraz wykresu
accuracy vs k, - identyfikacja i weryfikacja z modyfikowalnym progiem.
W katalogu głównym repozytorium albo w notebooks/.env musi znajdować się:
DATABASE_URL=postgresql://...Pipeline korzysta z tabeli "Keystrokes" zapisanej przez aplikację frontendową i API.
Ten test sprawdza:
- feature engineering,
- kNN,
- leave-one-out,
- rekomendację progu,
- identyfikację,
- weryfikację.
.venv\Scripts\python.exe main.py --task keystrokes-smoke.venv\Scripts\python.exe main.py --task keystrokes-loo --k-values 1,3,5Wyniki trafiają do katalogu score\:
keystrokes_features.csvkeystrokes_leave_one_out_iterations.csvkeystrokes_leave_one_out_summary.csvkeystrokes_leave_one_out_accuracy_curve.csvkeystrokes_leave_one_out_best_by_metric.csvkeystrokes_leave_one_out_best_overall.csvkeystrokes_leave_one_out_accuracy_vs_k.png
Identyfikacja rozpoznaje najbardziej podobnego użytkownika i może odrzucić decyzję, jeśli score przekroczy próg.
.venv\Scripts\python.exe main.py --task keystrokes-identify --metric bray_curtis --k 1 --sample-index 0Jeśli nie podasz --threshold, skrypt sam wyznaczy rekomendowany próg z wyników leave-one-out dla wybranych k i metryki. Własny próg można wymusić np.:
.venv\Scripts\python.exe main.py --task keystrokes-identify --metric bray_curtis --k 1 --sample-index 0 --threshold 0.09Weryfikacja sprawdza, czy próbka jest zgodna z zadeklarowanym użytkownikiem.
.venv\Scripts\python.exe main.py --task keystrokes-verify --metric bray_curtis --k 1 --sample-index 0 --claimed-user JanJeśli --claimed-user nie zostanie podany, skrypt użyje UserId wybranej próbki.
- Domyślny rekomendowany próg jest wyznaczany z
leave-one-outi ma ograniczać błędne akceptacje. keystrokes-identifyikeystrokes-verifysą trybami demonstracyjnymi dla już zebranych próbek z bazy.- Główną oceną jakości systemu pozostaje eksperyment
leave-one-outoraz wykresaccuracy vs k.