{"id":17183365,"url":"https://github.com/teodutu/ml","last_synced_at":"2025-08-09T21:11:55.909Z","repository":{"id":121178757,"uuid":"342718971","full_name":"teodutu/ML","owner":"teodutu","description":"Machine Learning - UPB 2021","archived":false,"fork":false,"pushed_at":"2021-06-04T09:00:55.000Z","size":51459,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-30T03:42:32.234Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/teodutu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-26T22:40:55.000Z","updated_at":"2024-10-06T14:53:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"9471aa20-6075-4e70-914c-906e167d2efb","html_url":"https://github.com/teodutu/ML","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodutu%2FML","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodutu%2FML/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodutu%2FML/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/teodutu%2FML/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/teodutu","download_url":"https://codeload.github.com/teodutu/ML/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245388256,"owners_count":20607146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T00:40:22.631Z","updated_at":"2025-03-25T02:39:06.544Z","avatar_url":"https://github.com/teodutu.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ML\nMachine Learning - UPB 2021\n\n\n\n## Laboratoare\n### Laborator 1 - K-means\nSe implementeaza algoritmul *K-means* pentru clusterizare, cu centroizii alesi\nin 3 moduri:\n- aleator\n- prin metoda *K-means++*\n- prin algoritmul *Kaufman*\n\nSe compara scorurile *Rand Index* ale algoritmului pentru primele 2 situatii de\nmai sus, iar rezultatele sunt in general similare. Pentru anumite (cateva)\nnumere de clustere si anumite dataseturi, *K-means++* da rezultate **putin** mai\nbune.\n\n\n### Laborator 2 - Arbori de decizie\nSe implementeaza clasificarea unor seturi de date prin 3 algoritmi:\n- `randomTree` - atributul fiecarui nod e ales aleator\n- `id3` - atributul fiecarui nod este cel ce maximizeaza `gain`-ul\n- `randomForest` - o colectie de arbori aleatori, fiecare fiind antrenat pe un\nsubset din exemplele de antrenament\n\nApoi, se compara acuratetile, preciziile si regasirilor acestor modele,\nobservandu-se cand apare fenomenul de *overfitting* la `randomForest` si ca\npe masura ce adancimea unui arbore aleator creste, forma si felul in care acesta\nia decizia se aseamana tot mai mult cu cele ale unui model antrenat cu\nalgoritmul `id3`.\n\n\n### Laborator 3 - Regresie liniara\nSe implementeaza un model clasic de regresie liniara: unul fara si altul cu\nregularizare si se observa ca primul are *overfitting* cand setul de antrenare e\nmic, pe cand cel de-al doilea se comporta mai bine chiar si pe seturi mici de\nantrenare.\n\n\n### Laborator 4 - Boosting\nSe compara `AdaBoost` si `GradientBoost` cu arbori de decizie chiori +\n`RandomForest`. Cam la fel de vrajeala ca si pana acum :(.\n\n\n### Laborator 5 - SVM\nO basina copiata probabil de\n[aici](https://xavierbourretsicotte.github.io/SVM_implementation.html).\nEcuatiile nu-s explicate deloc, iar codul n-are sens mai deloc. Era mai misto la\nIA. Macar acolo parea ca-i pasase cuiva de laburi.\n\n\n### Laborator 6 - Reinforcement Learning\nSe gaseste o planificare pentru a ajunge dintr-o pozitie in alta intr-un\nlabirint 2D, folosind atat *Policy Iteration*, cat si *Value Iteration*.\n\n\n### Laborator 7 - Q Learning\nSe implementeaza algoritmul *Q Learning* to pentru a rezolva un labirint 2D.\nCa de obicei, trebui bulaniti hiperparametri pana da bine. O mizerie. Era mai\nmisto la IA.\n\n\n### Laborator 8 - MLP\nSe clasifica cifrele din [MNIST](https://en.wikipedia.org/wiki/MNIST_database)\nfolosind o retea *MLP* cu 2 straturi si un *ReLU* intre ele. Acuratetea fara\ninertie e 95.61%, iar cu inertie 97.81%.\n\n\n### Laborator 9 - Retele convolutionale\nAceeasi problema ca labul trecut, dar cu o retea *LeNet*. Acuratetea nu creste\ncand modelului i se adauga inertie, pentru ca modelul se satureaza.\n\n\n### Laborator 10 - ResNet\nParca putin mai ok explicat decat labul trecut, se implementeaza *ResNet-50* si\nse testeaza pe *CIFAR*. Dureaza mult antrenarea, drept care n-am rulat toate 200\nde epocie. Csf? Ncsf.\n\n\n### Laborator 11 - Algoritmi genetici\nSe implementeaza un algoritm genetic are rezolva problema rucsacului. Adica se\nporneste cu o populatie initiala de 1000 de alegeri random ale obiectelor, iar\nla fiecare noua generatie sunt pastrati 100 de indivizi care se reproduc aleator\n(se combina inceputul unui set de obiecte de la un individ cu sfarsitul de la\naltul) rezultand alti 900 de indivizi s.a.m.d. timp de 100 de generatii.\n\n\n\n## Teme\n### Tema 1 - Clasificare\nSe compara mai multi algoritmi de clasificare: *Random Forest*, *XGBoost*,\n*SVM*, *Naive Bayes* si *K-means*. O mizerie de tema in care doar luam modelele\ndin `sklearn` si tunam hiperparametrii. Un fel de `from keras import ...` :(.\n\n\n### Tema 2 - Q-Learning\nSe implementeaza *Q-Learning* si *SARSA* si iar se cauta acul in carul cu fan\n(hiperparametrii optimi). E interesant totusi ca pentru anumite recompense,\nalgoritmii nu converg. De exemplu, cand recompensa pentru o miscare simpla e 0\nsi nu -1, *SARSA* nu mai are de ce sa invete nimic si toate Q-urile sunt 0. Dar\ntot o mizerie e in care cea mai mare parte din timp se pierde asteptand sa\nruleze `for in for in for ...`.\n\n\n### Tema 3 - Clasificare de fete\nSe folosesc un *MLP*, un *CNN* si o combinatie de *VGG* + *SVM* ca sa se\nclasifice fete. Se foloseste setul de date\n[Labeled Faces in the Wild](http://vis-www.cs.umass.edu/lfw/).\n\nPe scurt, orice model are acurateti mici pe intreg setul de date ca-s prea\nmulte fete si nu intelege nimic din ele. Cand se reduce setul de date la\ncele mai numeroase 5 clase, *MLP*-ul si *CNN*-ul ajung pe la 80-90%, iar\ncombo-ul de *VGG* + *SVM* la 57%. Un cacat de tema...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteodutu%2Fml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteodutu%2Fml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteodutu%2Fml/lists"}