---
title: "Python, Math, Machine Learning Course"
author: "[Metric.am](https://metric.am/)"
date: 01/01/2025
date-format: "YYYY"
---
::: {.callout-tip}
# 👋 Բարի գալուստ
#### 🔗 Կարևոր հղումներ
* **Վիդեոներ.** Բոլոր տեսագրությունները տեղադրվում են [Metric Academy YouTube](https://www.youtube.com/@MetricAcademy)-ում
* **Նյութեր (GitHub).** Ամենաթարմ ու ամբողջական հավաքածուն՝ [այստեղ](https://github.com/HaykTarkhanyan/python_math_ml_course)
* **Telegram.** Ամբողջ կոմունիկացիան տեղի ա ունենում [էս](https://t.me/metric_academy) խմբում
* **Zoom.** Դասերին միանալու [հղումը](https://us06web.zoom.us/j/85787312800?pwd=6oYCGi7pTXaA2CVJOHFPQRoXCMXljc.1)
* **Ընդհանուր, մաթեմ** [Դասագրքեր](https://drive.google.com/drive/folders/14ib_UZSDQ4UPW6XgncURhhbtWLs3-qV3), [որոշ կտորների կարճ ձեռնարկ](https://github.com/HaykTarkhanyan/python_math_ml_course/blob/main/math/Lectures/%D4%BF%D5%A1%D6%80%D5%B3%20%D5%B4%D5%A1%D5%A9%D5%A5%D5%B4%20%D5%B4%D5%A5%D6%84%D5%A5%D5%B6%D5%A1%D5%B5%D5%A1%D5%AF%D5%A1%D5%B6%20%D5%B8%D6%82%D5%BD%D5%B8%D6%82%D6%81%D5%B4%D5%A1%D5%B6%20%D5%B0%D5%A1%D5%B4%D5%A1%D6%80.pdf), [հավելյալ նյութեր](https://mathteam.notion.site/math)
#### 📚 Դասընթացի ընթացիկ կարգավիճակը
*(Թարմացված ա 10.02.26-ին)*
1. **🐍 Python (պրծ):**
* Ներառում է՝ Fundamentals, OOP, Libraries:
* Բոլոր նյութերը, գործնականներն ու տնայինները կգտնեք ձախ կողմի **sidebar**-ում (Python + Libraries բաժիններ):
2. **📐 Մաթեմատիկա (համարյա պրծ):**
* Մնացել են միայն **Վիճակագրության** ու **Ինֆորմացիայի տեսության** թեմաները։
3. **🤖 Machine Learning:**
* Կսկսենք մաթեմատիկայի բլոկն ավարտելուցս հետո։
#### 📅 Գրաֆիկ
Դասերը սովորաբար լինում են **շաբաթական 2 անգամ**։
* **Օրեր:** Չորեքշաբթի/Հինգշաբթի (20:00) ու Շաբաթ/Կիրակի (12:00)
* **Zoom հղում:** [հեսա](https://us06web.zoom.us/j/85787312800?pwd=6oYCGi7pTXaA2CVJOHFPQRoXCMXljc.1)
#### ❓ Հարցեր
Եթե հարցեր են առաջանում՝ շատ լավ ա, գրեք [Telegram խմբի](https://t.me/metric_academy) **"Հարցեր"** բաժնում։
💡 **Խորհուրդ.** Արագ օգնություն ստանալու համար օգտվեք AI գործիքներից (բայց նպատակը սովորելն ա, ոչ թե պատրաստի պատասխան ստանալը):
* **ChatGPT:** Օգտագործեք "Study and Learn" ռեժիմը (սեղմեք + նշանին, հետո "More" ու ընտրեք "Study and Learn"):
* **Gemini և Claude:** էլի ընտիր մոդելներ են, բայց նաև GPT-ից անհամեմատ լավ են խոսում հայերեն, ԲԱՅՑ․
> **Հ.Գ.** Ամպի չափ շատ խնդրում եմ զուգահեռ **անգլերենի** վրա էլ աշխատել։ Հայերենով անգլերեն սովորելու [տեսադասեր](https://www.youtube.com/playlist?list=PLE3qFvqoQIMLX-CDguZF-dBilkvXDNzyr) (եթե ավելի լավ նյութ գիտեք՝ խնդրում եմ խաբար արեք, թարմացնեմ էս սեկցիան)
:::
::: {.callout-note}
📺 Վիդեոներ՝ [Metric YouTube Channel](https://www.youtube.com/@MetricAcademy) \
🔗 Դասընթացին միանալու [հղում](https://t.me/metric_academy)
Լեգենդ։
- 🟡 Տեսագրությունը ու նյութը կա, բայց մշակման կարիք ունեն (հիմնականում ուղղակի կարճ նկարագիրն ա պակասում)
- 🔴 Դեռ չենք արել դասը
- ոչմի բան - Ամենինչ վերջնական ա (կամ համարյա վերջնական ա)
**Նշում**։ Կայքը ու նյութը պատրաստման փուլում են, հնարավոր է որոշ տեղերում լինեն սխալներ կամ ժամանակավոր նշումներ։
::: {.callout-important}
Էս բովանդակության էջը մաթեմի կտորից սկսած թարգել եմ թարմացնելը՝ ամենաթարմ նյութերը ձախի sidebare-ում են։
:::
::: links
1. Վիդեոները՝ [Metric YouTube Channel](https://www.youtube.com/@MetricAcademy)
2. Դասընթացին միանալու տելեգրամը՝ [Հղում](https://t.me/metric_academy) (կարաք երբ ուզում եք, ինչքան ժամանակով ուզում եք միանալ, ու դե անվճար ա իհարկե)
3. Python Տնայինը՝ [Profound Academy Python Introduction](https://profound.academy/hy/python-introduction)
4. Python Լուծումները՝ [կոդ/նշումներ](https://metric-academy.notion.site/), [վիդեոներ](https://www.youtube.com/watch?v=I7DWIpcTUtc&list=PLfLD2TpGxVUxjP7WnHxAWfbd8LWSY-pix)
5. Python-ի խառը լրացուցիչ [նյութեր](https://hayktarkhanyan.notion.site/Python-resources-330beea6e8624afea06ee17485a58c40?pvs=74)
6. Ամեն տեսության վերջում դրած [հղումները](https://docs.google.com/spreadsheets/d/1kaA6NjaeiulfkFGeDLhR8ksPT94Rjb8BbrusTJdkUnI/edit?usp=sharing)
7. Տնայինի խնդիր առաջարկել որից կուզեք վիդեո սարքենք՝ [հղում](https://forms.gle/hm558vdjmZu7QSjTA)
8. Դասընթացի վերաբերյալ կարծիք ու առաջարկներ՝ [հղում](https://docs.google.com/forms/d/e/1FAIpQLSdNKMw-yUTJcFj2fPWuRyCbpO73hndI6aAhLxwFF1_58Nqe7w/viewform?usp=sharing&ouid=101440322298080198570)
9. [հղում](https://www.youtube.com/watch?v=OQlByoPdG6c)
:::
::: python
# Python
::: python
## 01 Intro
[📚 Ամբողջական նյութը](python/01_intro.ipynb)
Առաջին ծանոթություն Python-ի հետ։
1. Ինչպես արժեքներ տպել - `print`, `sep`, `end`,
2. մեկնաբանութուններ (`comments`) ավելացնել,
3. փոփոխականներ ստեղծել,
4. թվեր և թվաբանական գործողություններ կատարել,
5. մուտք (`input`) ստանալ։
Նաև ծանոթանում ենք տնային անելու հարթակի՝ [Profound](https://profound.academy) հետ:
Գործնական դասի ժամանակ էլ արել ենք հետևյալ խնդիրները՝
1. Կիսամյակային գնահատականի հաշվիչ
2. Քառակուսի հավասարման արմանտների գտնում
3. հեշտ էր չէ՞ (2.1)
4. ուսանողներ և խնձորներ 2 (4.3)
5. թվաբանական պրոգրեսիա (4.1)
Դասերի վերաբերյալ կարող եք անանուն հայտնել Ձեր կարծիքը [այստեղ](https://forms.gle/K616aM5cpXsnJmbAA)
### 📺 Տեսանյութեր
1. [Տեսադասը](https://youtu.be/_C3sP0X7U_E)
2. [Profound-ից օգտվելու վիդեո](https://youtu.be/BaQ0-hrcRtI)
3. [Գործնական դաս](https://youtube.com/watch?v=Xdb7ivwWqxE)
2023 (կարելի ա բաց թողել)
1. [Դասախոսությունը](https://youtube.com/watch?v=M5ur3GqsLh0) (մեծամասամբ իմաստ չկա նայելու)
2. [Գործնականը](https://youtube.com/watch?v=Fwk1PyLotOg) (մեծամասամբ իմաստ չկա նայելու)
### 🏡 Տնային
1. Profound [բաժին 1](https://profound.academy/hy/python-introduction/t-python-qWPtjbycGqzmt41dkWyP) (Մուտք և ելք) - լրիվ
2. Profound [բաժին 3](https://profound.academy/hy/python-introduction/t-python-qWPtjbycGqzmt41dkWyP) (Փոփոխականներ և ամբողջ թվեր) - լրիվ
3. Ոչ պարտադիր - կարող եք անանուն հայտնել Ձեր կարծիքը դասի վերաբերյալ [այստեղ](https://forms.gle/K616aM5cpXsnJmbAA)
::: {.callout-note collapse="true" title="Տնայինի հետ կապված նշումներ"}
- Տնայինը անելիս մոտեցեք են սկզբունքով որ x խնդիրը լուծելիս դուք մենակ գիտեք են ամենինչը ինչ profound-ը մինչև x-ին հասնելը ներկայացրելա ա։ Երբեմն օգտագործող գործիքները սահմանափակելու դեպքում ա խնդիրը իսկականից օգուտ տալիս։ Օրինակի համար եթե խնդիր լինի որտեղ պետք ա սորտավորել թվերը ու դուք գիտեք `sort` հրամանի մասին՝ է հա, կարաք օգտագործեք էդ հրամանը, խնդիրը լուծվի՝ բայց արդյունքում նորմալ չեք սովորի էլի։
- Եթե քիչ ժամանակ ունեք կարաք բաց թողեք Բաժին 1 - 5, 6, 14 խնդիրները
- Բաժին 3 13-ում պետք ա զուտ ցանկացած թիվ տպեք
- Բաժին 3-ի վերջին երկու խնդիրները լիքը բզբզալու են, խորհուրդ կտանք շատ ժամանակ տրամադրեք իրենց
- Profound-ը ներկայացնող [վիդեո](https://youtu.be/BaQ0-hrcRtI)
- Շուտ եմ ասել GPT ու նման գործիքներից օգտվել չկա
- Եթե հարցեր լինի՝ անպայման խաբար արեք (կառալյոկի պահը հիշեք)
:::
### 📚 Լրացուցիչ նյութեր
1. Ինչու՞ Python սովորել [սլայդեր](https://docs.google.com/presentation/d/1c7DJ-SEYtBsLXVWkmWrNnTyEo-bg2BYbmJtFPYq-Q1Y/edit?usp=sharing) \
2. Colab-ում կոդը աշխատացնել [հղում](https://hayktarkhanyan.github.io/python_math_ml_course/misc/google_colab.html) \
3. Python-ի խառը լրացուցիչ [նյութեր](https://hayktarkhanyan.notion.site/Python-resources-330beea6e8624afea06ee17485a58c40?pvs=74)
:::
::: python
## 02 Conditions / Պայմաններ
[📚 Ամբողջական նյութը](python/02_conditions.ipynb)
Սովորում ենք ինչպես աշխատացնել տարբեր ծրագրեր կախված որոշ պայմաններից։ Նախ ծանոթանում ենք `boolean` տվյալների տեսակին (True, False արժեքները ընդունող), ապա որոշ համեմատության գործողություններին (==, >, is, ...), հետո ծանոթանում ենք `if` (եթե) բլոկին ու իրա հետ եկող `elif`, `else` կտորներին։ Վերջում նայում ենք ներդրված պայմանները (if-ի մեջ if) ու համեմատաբար նոր գրելաձև `match`-ով։
Գործնական դասերին (հիմիկվա, ու 2023-ի) նայում ենք լրիվ տարբեր խնդիրներ, նենց որ կարող եք երկու դասն էլ նայել։ Նաև հասանելի ա տնայինների քննարկման տեսագրություն 2023-ից։
### 📺 Տեսանյութեր
1. [Տեսադասը](https://youtube.com/watch?v=PsTB0hj95OM)
2. [Գործնական դաս](https://youtube.com/watch?v=2GMufITVgt4)
3. [Տնայինների քննարկում (2023)](https://youtube.com/watch?v=6Aktg75ZquA)
**2023**
1. [Դասախոսությունը](https://youtube.com/watch?v=UZ6lVl0kOlo) (նյութը նույնն ա, դասը անցկացնողները տարբեր)
2. [Գործնականը](https://youtube.com/watch?v=wx3wn5SPt3g) (խնդիրները լրիվ տարբեր են)
3. [Տնայինների քննարկում](https://youtube.com/watch?v=6Aktg75ZquA)
### 🏡 Տնային
1. Profound [բաժին 5](https://profound.academy/hy/python-introduction/b-vE3xZikKFjcgaFdTsGvg) (Պայմաններ) - լրիվ
2. Profound [բաժին 7](https://profound.academy/hy/python-introduction/n-if-8uPJetpgIBlFPXCTxvEp) (Ներդրված պայմաններ) - լրիվ
3. Profound [բաժին 9](https://profound.academy/hy/python-introduction/flszat-nMh1l21kkviihZwWp6kf) (Փոփոխականներ և տիպեր) - 1 - 10 (ներառյալ)
::: {.callout-note title="Տնայինի հետ կապված նշումներ" collapse="true"}
- Բաժին 5-ը գրելիս կարելի ա օգտվել մենակ `if`-ից ու `else`-ից (`elif` ենթադրեք որ չգիտեք)
- [Դժվար պայմաններ](https://profound.academy/hy/python-introduction/d-tNWtCx4NdIhu2lDVRR6I) (7.14)-ը լուծելիս եթե շատ երկար լինի Ձեր լուծումը, մի հատ էլ հետո մտածեք ոնց կարաք ավելի կարճ ու կոկիկ դարձնեք bool փոփոխականներ սահմանելով
- Եթե կուզեք կարաք Բաժին 9-ը փորձեք մինչև վերջ անել՝ հաջորդ տնայինում դա լինելու ա
:::
:::
::: python
## 🟡 03 String, list, range, functions on floats/lists
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/03_str_range_list_some_funcs.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 04 Loops / Ցիկլեր
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/04_loops.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 05 List/String Methods + Ternary Operators, List Comprehensions
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/05_lst_str_methods_one_line_if_for.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 06 Tuple, Set, Dictionary
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/06_tuple_set_dictionary.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 07 Functions 1
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/07_functions_1.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 08 Functions 2
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/08_functions_2.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 09 Terminal, Working with multiple files, file I/O, Packages (os, random, time, tqdm)
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/09_files_packages_terminal.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 10 Git / GitHub, Venvs, Anaconda + PEP8
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/10_git_conda_pep8.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 11 Exception Handling
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/11_exception_handling.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 12 Streamlit, Recursions, leftover material
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/12_streamlit_recursion.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 13 Decorators
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/13_decorators.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 14 OOP 1: Classes
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/14_classes.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 15 OOP 2: Inheritance, Polymorphism
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/15_inheritance_polymorphism.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 16 OOP 3: Encapsulation, Abstraction
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/16_encapsulation_abstraction.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 17 Data Classes, Generators, Iterators, Context Managers
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/17_dataclass_iterator_generator_context_manager.ipynb)
Նկարագիր - ToDo
:::
:::
::: python
## 🟡 18 Final Project: YouTube + Translator
::: {.python collapse="false"}
[📚 Ամբողջական նյութը](python/18_youtube_translator.ipynb)
Նկարագիր - ToDo
:::
:::
:::
<!-- closing Python -->
::: libs
# Libraries / Գրադարաններ
էմոջիում տուփ ա որովհետև նաև package ա կարելի անվանել թեմային։
::: libs
## 01 OpenAI (timestamp generator project)
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/01_openai_api_timestamp_generator.ipynb)
`OpenAI`-ը ChatGPT-ն ստեղծող կամպանյան ա։ էսօր սովորելու ենք թե ինչ բան ա *API*-ը ու ոնց կարանք *request*-ներ անենք (էս թեմային մի քիչ առնչվել ենք [deepl-ով թարմանություններ](python/18_youtube_translator.ipynb) անելիս): Նաև սովորում ենք *environment variable*-ների գաղափարը (տերմինալի հրամանակ աշխատացնելով ենք անում դասի ժամանակ, ավելի լավ ա dotenv-ով անել, տես [վիդեոն](https://youtu.be/tqR3DhSkNlQ))։
`OpenAI`-ով նայում ենք թե ոնց ա կարելի տեքստեր/նկարներ/աուդիո գեներացնել ու ոնց ա կարելի ֆիքսել թե ինչ կառուցվածքով պատասխանի մեզ api-ը (մի քիչ էլ առնչվում ենք `pydantic`-ի հետ, որը հետո ենք անցնելու)։
Որպես կիրառություն սարքում ենք ծրագիր որը youtube-ի վիդեո ստանալով քաշում ա իրա տռանսրիպտը (արել էինք [նախորդ դասին](../python/18_youtube_translator.ipynb)) ու գենեռացնում ա timestamp-եր (կարևոր թեմաները որ վարկյաններին են սկսվում)
:::
### 📺 Տեսանյութեր
1. [Տեսություն](https://youtu.be/ZOOWqchxETU)
2. [Python-Dotenv վիդեո](https://youtu.be/tqR3DhSkNlQ)
### 🏡Տնային
Կրեատիվությունն ա միակ լիմիտը։ Մի աշխարհ բան ա կարելի անել `OpenAI`-ով (հայերենի համար ավելի լավ ա [`Claude`](https://www.anthropic.com/api)-ով անել բայց), կարաք գլխից նաև [Streamlit app](python/12_streamlit_recursion.ipynb) սարքեք։
:::
::: libs
## 02 NumPy (numerical python)
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/02_numpy.ipynb)
`NumPy`-ը հաշվարկներ անելու համար հիմնարար գրադարաններից ա։ Լիքը ուրիշ գրադարաններ որ հետագայում կանցնենք՝ օրինակի համար աղյուսակների հետ աշխատելու համար նախատեսված `pandas`-ը տակից օգտագործում են `numpy`-ը հաշվարկային կտորների համար։ [Դասին](https://youtu.be/7XsIyFTImwk) ծանոթանում ենք լիքը ֆունկցիաների, ու հիմնական գաղափարներից սովորում ենք թե ինչ են *տրամաբանական ինդեքսավորումը* ու *broadcasting-ը*։ Նաև պի թիվը մոտարկելու այ [էս](https://youtu.be/fzujbMd4j30) մինի պրոեկտը վերարտադրում ենք `numpy`-ով ու տեսնում որ ամպի չափ ավելի արագ ա աշխատում ծրագիրը։
:::
### 📺 Տեսանյութեր
1. [Տեսություն](https://youtu.be/TIWU_bjFuUc)
2. [Մինի պրոկետը որ `numpy`-ացնում ենք](https://youtu.be/fzujbMd4j30)
3. [2023-ի տեսություն որը հավանաբար անիմաստ ա նայելը](https://youtu.be/FKYAAikM56M)
### 🏡 Տնային
[Հիմնական նյութում](python_libs/02_numpy.ipynb) GPT-ի առաջարկած միկրովարժություններ կան որ կարաք անեք զուտ որ ձեռքը բացվի, բայց ավելի կարևոր ա նախորդ տնայինների/պրոեկտների պարտքերը զրոյացնել որ հաջորդ դասից արդեն `pandas`-ով լիքը պրոեկտներ անելու ժամանակ լինի
:::
::: libs
## 03 Pandas (panel data) 1
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/03_pandas_1.ipynb)
**Նշում․** Եթե [`NumPy`](python_libs/02_numpy.ipynb)-ին դեռ չեք ծանոթացել՝ սկզբում դա արեք, նոր եկեք `pandas`:
`Pandas`-ը `NumPy`-ի հիմքով գրված ամենատարածված գրադարաններից ա աղյուսակային տվյալների (պարզ ասած՝ որ տողերով, սյուներով տվյալներ ունենք) հետ աշխատելու համար։ Տեսությունը բաժանված ա երկու մասի, էսօրվա դասին անցնում ենք․
1. թե ինչ բան են *Series*-ը ու *DataFrame*-ը
2. ի՞նչ ա *CSV* ֆայլը
3. ոնց ֆիլտրել տվյալները
4. ոնց խմբավորել
5. ինչ ա *pivot table*-ը
6. ինչ անել բացակայող արժեքների հետ
7. ինչ են հրաշք *parquet* ֆայլերը
8. էլի մանր մունր մի քանի բան
Որպես օրինակ աշխատում ենք Հայաստանի ընտրողների տվյալների հետ՝ մոտ 3 միլիոն տող ու ինֆորմացիա՝ անուն, ազգանուն, հայրանուն, ծննդյան օր, գրանցման հասցե ․․․։
:::
### 📺 Տեսանյութեր
1. [Տեսություն](https://youtu.be/2YD9tbQg1Hk)
2. [2023-ի տեսություն որը հավանաբար անիմաստ ա նայելը](https://youtu.be/aFgZVLVjQAs)
3. [2023-ից ընտրողների տվյալների հետ կապված պրոեկտ Streamlit ու տվյալների վիզուալիզացիա օգտագործող](https://youtu.be/-HC6RJ6cNT0)
4. [(ձեռի հետ եմ սա ավելացնում) Ընտրողների տվյալների շուրջ Barcamp ելույթ](https://www.youtube.com/watch?v=vOUHofyk17U)
### 🏡Տնային
Վերցնել ցանկացած դատասեթ ու փորփրել։
Կարող եք դատան վերցնել [Kaggle](https://www.kaggle.com/datasets?fileType=csv)-ից։ Կամ եթե հայկական եք ուզում՝ [Armstat](https://armstat.am/am/)-ից
:::
::: libs
## 04 Pandas (panel data) 2
::: {.libs collapse="false"}
# 📌 Նկարագիր
[📚 Ամբողջական նյութը](python_libs/04_pandas_2.ipynb)
**Նշում․** Եթե [`Pandas 1`](python_libs/03_pandas_1.ipynb)-ին դեռ չեք ծանոթացել՝ սկզբում դա արեք, նոր եկեք `pandas 2`:
Շարունակում ենք մեր պանդաների ուսումնասիրությունը։ Էս անգամ խոսում ենք՝
1. Մի քանի `df`-ներ միավորելուց (`concat`, `merge`, `join`), ու իրենց տեսակներից (inner, outer, left, right)
2. `Excel` ֆայլերի հետ աշխատանքից - ոնց կարդալ/save անել կոնկրետ sheet ․․․
3. Կայքերից տվյալներ քաշելուց՝ `read_html`-ի օգնությամբ ([Armstat](https://armstat.am/am/?nid=12&id=19044&submit=%D5%93%D5%B6%D5%BF%D6%80%D5%A5%D5%AC)-ի օրինակով)
4. *Long*, *wide* աղյուսակների ֆորմատներից ու ոնց հալացնել (`melt`) մեր `df`-ն
5. `Dask`-ով գոյատևելուց երբ տվյալները ամպի չափ մեծ են ու չենք էլ կարա աշխատանքային հիշողության (*RAM*) մեջ տեղավորենք
6. Ամսաթվերի հետ աշխատանքից `Datetime` օբյեկտների միջոցով
7. `Numpy vectorization` vs `.apply` vs `for loop`-ի համեմատումից
8. Արագ մակերեսային նկարագիր ստանալու համար *profiling*-ի `ydata_profiling` ու `sweetviz` գրադարաններից
### 📺 Տեսանյութեր
1. [Տեսություն](https://youtu.be/wgw9eexila0)
2. Գործնական - Նշանավոր մարդկանց [վերլուծություն](https://youtu.be/3JJDA0xXvSE)
### 🏡 Տնային
Վերցնել ցանկացած դատասեթ ու փորփրել։
Կարող եք դատան վերցնել [Kaggle](https://www.kaggle.com/datasets?fileType=csv)-ից։ Կամ եթե հայկական եք ուզում՝ [Armstat](https://armstat.am/am/)-ից
:::
:::
::: libs
## 05 Noble People Analysis
::: {.libs collapse="false"}
# 📌 Նկարագիր
[📚 Ամբողջական նյութը](python_libs/05_noble_people_analysis.ipynb)
Ուսումնասիրում ենք նշանավոր 1.2 միլիոն մարդու տվյլաներ, ու արդյունքում վարժվում `pandas`-ի հետ աշխատել։
1. Ըստ մասնագիտության ապրելու միջին տարիքը
2. Ըստ երկրի 1000-մարդուց ամենաշատը քանիսին են ինքնասպան լինում
3. Սեռային բաշխվածությունը ըստ մասնագիտության
4. Հայ նշանավոր մարդկանց վերլուծություն
5. Էլի մի քանի մանր մունր բան
Խորհուրդ ենք տալիս սկզբում մենակով բզբզալ տվյալները նոր նայել [վիդեոն](https://youtu.be/3JJDA0xXvSE)։
Նաև հավեսի համար կարաք խաղաք [էս](https://tjukanovt.github.io/notable-people) գործիքի հետ որ քարտեզի վրա ըստ տրածաշրևանի ցույց ա տալիս նշանավոր մարդկանց։
#### 📺 Տեսանյութեր
1. Գործնական - Նշանավոր մարդկանց [վերլուծություն](https://youtu.be/3JJDA0xXvSE)
2. Եթե դեռ չեք նայել, սկզբում նայեք տեսական դասերը՝ [NumPy](python_libs/02_numpy.ipynb), [Pandas 1](python_libs/03_pandas_1.ipynb), [Pandas 2](python_libs/04_pandas_2.ipynb)
#### 🏡 Տնային
Վերցնել ցանկացած դատասեթ ու փորփրել։
Կարող եք դատան վերցնել [Kaggle](https://www.kaggle.com/datasets?fileType=csv)-ից։ Կամ եթե հայկական եք ուզում՝ [Armstat](https://armstat.am/am/)-ից
:::
:::
::: libs
## 06 Data Visualization
::: {.libs collapse="false"}
# 📌 Նկարագիր
[📚 Ամբողջական նյութը](python_libs/06_data_viz.ipynb)
Չոր ու տխուր աղյուսակները փոխարիներում ենք աչք ուրախացնող գրաֆիկներով։
1. Նայում ենք մի քանի սլայդ մոտիվացնող վիզուալիզացիայի կարևորությունը ու նրբությունները
2. Ուրախանում ենք լրատվականների խայտառակ վատ տվյալների վիզուալիզացիաներով
3. Վայելում ենք լավ վիզուալիզացիաների օրինակներ, հատկապես Ինֆոքոմի կողմից սարքած
4. Սովորում ենք matplotlib գրադարանը - սկզբում մի քանի հիմնական գրաֆիկ, հետո ոնց իրանց դզել-փչել մեր ուզածով, հետո ոնց ունենալ մի քանի գրաֆիկ ու վերջում արագ անցնում ենք անիմացիաների թեմայի վրայով
5. Plotly - ինտերակտիվ հզոր գրաֆիկներ սարքել ենք սովորում
6. WordCloud - Թումանյանի պոեմի ու Կոմիտասի նամակների տեքստերը փորձում ենք իմի բերել մի նկարի մեջ
#### 📺 Տեսանյութեր
- [Տեսագրությունը](https://youtu.be/r44t7RPPm7U)
#### 🏡 Տնային
Ավանդական՝ վերված դատասեթի վրա էլ հիմա գրաֆիկներ ավելացնել
:::
:::
::: libs
## 🟡 07 Kargin Data Analysis
::: {.libs collapse="false"}
# 📌 Նկարագիր (ToDo)
[📚 Ամբողջական նյութը](python_libs/07_kargin_project.ipynb)
Էլ ինչ դատա վերլուծել եթե ոչ կարգին դատա։ [ՄԵՄ](http://mem.team/)-ի օգնությամբ (ToDo - անուններով նշել մարդկանց, նաև ՄԵՄ-ից դուրս) կա հավաքած տվյալներ որտեղ 600+ կարգինի տեքստերն են, ու որոշ metadata` վայր, լուսավորություն, դերասաններ, լեզուներ և այլն։
Էսօրվա դասին թեթև վերլուծում ենք էդ տվյալները ու մինի search սարքում։ Կրկնում ենք `pandas`-ով Excel կարդալը, նախնական տվյալների մաքրման քայլերը, `plotly`-ի *barplot*, *histogram*, *density plot*-երը, ու նայում ենք ոնց կարանք օգտագործենք ամենալավ անուններից մեկը ունեցող գրադարանը՝ `fuzzywuzzy`-ն տվյալ տեքստին մոտ տեքստ պարունակող կարգին գտնելու համար։
### 📺 Տեսանյութեր
- ▶️[Տեսագրությունը](https://youtu.be/qaw4HsDa1pw)
### 🔗 Հղումներ
- Կարգին Stremlit [App](https://kargin.streamlit.app/)
- Կարգին տելեգրամ [բոտ](https://t.me/KarginSearchBot)
:::
:::
::: libs
## 🟡 08 Logging, CLIs (argparse, fire, typer, click)
::: {.libs collapse="false"}
# 📌 Նկարագիր
[📚 Ամբողջական նյութը](python_libs/08_logging__clis.ipynb)
[📺 Տեսագրությունը](https://youtu.be/2BtFmBMSnsA)
📌 Նկարագիր
Մեր առաջին սովորած ֆունկցիան՝ print-ը։ Շատ լավ օրեր ենք անցկացրել իրա հետ, բայց հիմա ժամանակն ա անցնել իրա պռոֆեսինոլ տարբերակին՝ logging-ին։ Սովորում ենք ՝
1. ոնց նշել logging-ի մակարդակը
2. մեր ուզած ձևով ֆոռմատավորել log-երը
3. գրել log-երը ֆայլի մեջ, ինչպես նաև կոնսոլում
4. json ֆորմատով պահել լոգերը
5. exception-ներ log անել
Հետո անցնում ենք Command Line Interface(CLI)-եր սարքելու գրադարաններին։ CLI-ների շնորհիվ ա որ կարանք գրենք ուղղակի `pip install panir` ու ինքը գնա ավտոմատ քաշի բերի մեր ուզած գրադարանը, ոչ թե մենք բացենք կոդը որտեղ install հրամանը օգտագործվում ա ու կոդի մեջ նշենք որ արգումենտ որպես մեր գրադարանի անունը գնա։
Սովորում ենք՝
1. Argparse-ը (ներկառուցված գրադարան)
2. Fire (ֆունկցիաներին CLI-ով դիմելու համար 1-2 տողանոց լուծում)
3. Click (դեկորատորներով աշախտող ուժեղ գրադարն)
4. Typer (FastAPI-ենց գրադարանը type hint-երի վրա հիմնված)
ToDo - detailed timestamps
:::
:::
::: libs
## 09 Pytest, Debugging
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/09_testing__debugging.ipynb)
## 📺 Տեսանյութեր
- [📺 Տեսագրությունը](https://www.youtube.com/watch?v=qcLhrouK7yE) (Pytest, debugging)
- 📺 2023 թվականից [տեսագրություն]((https://youtu.be/H6UN4S1Fbds?list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&t=2923)) unittest գրադարանը ներկայացնող
**Testing**
Եթե ուզում ենք կարողանալ մեեեծ պրոեկտների վրա աշխատել, կամ թեկուզ փոքր պրոեկտներում չկորենք կամ պանիկայի մատնվենք երբ նոր մարդիկ սկսեն կոդի վրա աշխատել, շատ կարևոր ա որ ունենանք ամուր ենթակառուցված որը չի թողի կոդում սխալները մուղամով իրանց չար գործը անեն։
Կոդ գրելիս պետք ա մտածենք թե ինչ մուտքերի դեպքում ինչ ելք պետք ա տա, երբ պետք ա էռոռ բարձացնի և այլն, և այլն։ Եթե էդ ամենինչը ֆիքսվի կարող ենք հարմար ստուգել արդյոք էդ մեր դրած պայմանները բավարավում են թե չէ։
Դասին սովորում ենք հենց դա կազմակերպել՝ PyTest գրադարանով (մի քանի րոպե էլ unittest-ին ենք անդրադառնում, 23 թվից ավելի մանրամասն [վիդեո](https://youtu.be/H6UN4S1Fbds?list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&t=2923) կա)։ Սովորում ենք ոնց՝
1. Սարքել թեստեր
2. Parametrize: Պարամետրացնել, միանգամից լիքը input-output զույգեր փորձարկելու համար
3. Fixture: Ոնց նշել ինչ կոդ պետք ա աշխատացվի թեստի աշխատելուց առաջ ու հետո
4. Mocking: Որոշ ֆունկցիաներ կանցելը փոխարեն ձևացնել որ իրենց ենք օգտագործում որ երկար չսպասենք կամ էլ ուրիշ կոդի սխալի պատճառով մեր թեստը ձախողի
5. Coverage: Ստուգել թե կոդի որ տոկոսն ա մեր աչքից պլստացել ու առանց թեստի մնացել
6. CLI Argument-ներով ոնց ընդգծել կոնկրետ ինչ թեստեր/ոնց աշխատացվեն
7. Ոնց VS Code-ով աշխատացնել թեստերը
8. Ինչ տեսակներ կան testing-ի (end-to-end, integration, unit test)
**Debugging**
Վերջում էլ մի քանի րոպեով անդրադառնում ենք VS Code-ի debugger-ից օգվելուց, ու ընդհանուր debugging-ի տեսակներին (ռեզինե բադ, ․․․)։ print-եր շարելը լավ բան ա իհարկե, բայց breakpoint-երին ծանոթանալը կարա հետագայում շատ ժամանակ խնայի։
:::
:::
::: libs
## 🟡 10 Scraping
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/10_scraping__parallelization.ipynb)
ToDo - file cleanup + description
:::
:::
::: libs
## 🟡 11 Scraping Yerevan State University
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/11_ysu_scraping.ipynb)
ToDo - file cleanup + description
:::
:::
::: libs
## 12 SQL (with Python)
::: {.libs collapse="false"}
# 📌 Նկարագիր
[📚 Ամբողջական նյութը](python_libs/12_sql.ipynb)
[📺Տեսանյութը](https://www.youtube.com/watch?v=zMeKyFWTe10)
Աղյուսակային տվյալները `csv`-ով պահելը երբեմն աշխարհի ամենալավ միտքը չի։ Ոչ էլ `parquet` պահելն ա միշտ լավագույն տարբերակը։ ՄԼ-ի կոնտեքստում երբ-որ ինչ-որ տվյալներ արդեն կան ու իրանց պետք ա վերլուծենք՝ բան չունեմ ասելու, ընտիր ֆորմատներ են, բայց եթե գնանք ավելի շատ դեպի backend development որտեղ որ պահվում են օրինակի համար կայքում գրանցված մարդկանց տվյալներ՝ այ ըտեղ արդեն կարիք ա գալիս դինամիկ համակարգերի որ թույլ կտան արագ ու էժան պահել ու ստանալ մեր ուզած տվյալները։
Էս նյութում ծանոթանում ենք SQL (Structured Query Language)-ի հետ, ու սովորում հիմնական գրադարանները տվյալների բազաների հետ փոխազդելու։
Ծանոթանում ենք` Select, Where, Order by, Limit, Group by, Join, Subqueries, Having հրամանների հետ ու խառը ֆունկցիաների հետ։
#### Նշում
Չենք ծանոթանում բազաների տեսակներին, կամ նրան թե ոնց ճիշտ դիզայն անել բազան։ Ուղղակի թեթև ծանոթացում SQL-ին։
#### 🏡 Տնայինի առաջարկ
Բռաուզեռի պատմությունը բազայով ա պահվում ու լոկալ հասանելիություն ունենք իրանց։ Կարաք կարդաք աղյուսակները, վերլուծեք հենց ձեր պատմությունը, եթե հավեսի ընկնեք նույնիսկ կարաք AI API-ի request անեք, հղումները տաք ասեք դնի ինչ-որ կատեգորիայի մեջ (աշխատանք, հանգիստ, Աստված գիտի ինչ ․․․)
Ավելի մանրամասն կարաք նյութի ներքևում (գործնական սեկցիայում) ծանոթանաք միկրո օրինակի ու հղումների համար
:::
:::
::: libs
## 🟡 13 Pydantic
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/13_pydantic.ipynb)
ToDo - file cleanup + description
:::
:::
::: libs
## 🟡 14 Pathlib, Numba, Collections, Icecream
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/14_misc_libraries.ipynb)
ToDo - file cleanup + description + resolve path issues
:::
:::
::: libs
## 🟡 15 FastAPI, Deployment
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/15_fast_api.ipynb)
ToDo - file cleanup + description
:::
:::
::: libs
## 🟡 16 Supabase
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/16_dbs_supabase.ipynb)
:::
:::
::: libs
## 🟡 17 Vibe coding
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը](python_libs/17_vibe_coding.ipynb)
:::
:::
::: libs
## 🟡 18 Clean Code/Architecture
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը]()
:::
:::
::: libs
## ToDo
::: {.libs collapse="false"}
[📚 Ամբողջական նյութը]()
1. Vibe coded project (browsing data or Kargin Search)
2. Creating a real DB (supabase)
3. ~~Render deployment~~
4. Interpretable vs Complied
5. Interview questions
6. ~~Maybe a proper Scrapy tutorial? (Nope)~~
7. Github Actions?
:::
:::
::: {.callout-note collapse="true"}
# internal notes (to be ignored)
## Videos
- [x] Path
- [x] python-dotenv (https://youtu.be/tqR3DhSkNlQ)
- [x] icecream
- [x] Collections / functools
- [x] numba https://www.youtube.com/watch?v=H6UN4S1Fbds&list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&index=30
- [] yaml / toml
- [] manim?
- [] Make
- [] Github Actions?
## Lectures
- [x] Logging
- [x] Pytest
- [x] Argparse (or some other cli)
- [x] Scraping (requests, BeautifulSoup, Scrapy)
- [x] joblib https://www.youtube.com/watch?v=H6UN4S1Fbds&list=PLfLD2TpGxVUwUa_o8Fxig8SlC1PrLYWUg&index=30
- [x] SQL
- [x] pydantic
- [x] Flask / FastAPI
- [x] Render deployment
- [x] Supabase (maybe also proper Postgre VS MySQl bla bla bla)
- [x] Vibe coding project
:::
<!-- closing libs -->
:::
::: math
# Math / Մաթեմ
**Շատ մոտավոր ա գրաֆիկը**
::: math
## 00 Preliminaries
- [📚 Ամբողջական նյութը](math/00_intro_sets_comb_funcs.qmd)
- [📺 Տեսագրությունը](https://youtu.be/7rIw7ocwMP4)
- [🎞️ Սլայդեր](math/Lectures/L00_Sets__Combinatorics__Functions.pdf)
- [🛠️📺 Գործնականի տեսագրությունը](https://youtu.be/vBgPpeX9aKA)
- [🛠️🗂️ Գործնականի PDF-ը](math/Homeworks/hw_00_sets_comb_funcs.pdf)
Մինչ բուն նյութին անցնելը ծանոթանում ենք մի քանի նախնական կարևոր գաղափարների՝
1. Բազմություններ (գործողություններ, կցման-արտաքսման սկզունք, դեկարտյան արտադրյալ)
2. Զուգորդություններ, կարգավորություններ, տեսափոխություններ
3. Ֆունկցիաներ (պատկեր, նախապատկեր, ինյեկտիվ, սյուրյեկտիվ, բիյեկտիվ, կենտ, զույգ)
:::
::: math
## 🟡 XX Template
::: {.libs collapse="false"}
- [📚 Ամբողջական նյութը](math/)
- [📺 Տեսագրությունը]()
- [🎞️ Սլայդեր](math/Lectures/)
- [🛠️📺 Գործնականի տեսագրությունը]()
- [🛠️🗂️ Գործնականի PDF-ը](math/Homeworks)
Abstract
:::
:::
::: {.callout-note collapse="true"}
# Internal Note
ToDo
- Dark mode does not work for the hw file.
Maybe at some point
- Induction
- Recursent relations
- Somewhere inequalities - Jensen, Cauchy
:::
Inde is not maintained currently
::: math
## 🟡 01 Linear Algebra - Vectors
::: {.libs collapse="false"}
- [📚 Ամբողջական նյութը](math/)
- [📺 Տեսագրությունը]()
- [🎞️ Սլայդեր](math/Lectures/)
- [🛠️📺 Գործնականի տեսագրությունը]()
- [🛠️🗂️ Գործնականի PDF-ը](math/Homeworks)
Abstract
Lesson 1
- Vectors, vector operations
- Dot product
- Norm (L1, L2)
Lesson 2
- Angle between vectors
- Vector spaces and subspaces
Lesson 3
- Matrices, matrix operations
:::
## 🧮 Linear Algebra
- Vectors, vector operations, dot product, norm
- Norm (L1, L2)
- Angle between vectors
- Vector spaces and subspaces
- Matrices, matrix operations
- Geometric interpretation of matrices
- Row echelon form (perhaps won't be covered)
- Determinant in 2x2 and 3x3 cases, trace
- Determinant in general case
- Systems of linear equations (perhaps won't be covered)
- Gauss-Jordan elimination (perhaps won't be covered)
- Inverse matrix
- Linear independence
- Basis, rank, dimension
- Change of basis
- Eigenvalues and eigenvectors
- Gram–Schmidt algorithm (orthogonalization)
- Positive/negative definite matrices
- Decompositions (eigen for sure, maybe also SVD/QR/Cholesky)
- Matrix norms (at some point)
## 📈 Calculus
- Limit of sequence and function
- Continuity
- Derivative
- Chain rule, product rule, quotient rule
- Lipschitz continuity
- Convexity, concavity
- Extrema of a function
- Taylor polynomials
- Indefinite integral, definite integral
**Multivar**
- Partial derivative
- Jacobian, Jacobian matrix
- Gradient
- Directional derivative
- Hessian
- Taylor expansion in several variables
- Cauchy-Schwarz inequality
- Jensen’s inequality
## ⛰️ Optimization
Recap:
- Convex sets
- Unimodal functions
- Golden Section Search
- Brent method
1
- Condition number (Hessian-Curvature)
- First order condition
- Second order condition (also slide 40)
- Quadratic forms
- Contour plots
- Branian function
- Ackley function
2
- Why local minimums a lot more than global
- GD - direction
- GD - step size
- Learning rate scheduling (sinusoidal, step decay, exponential decay, 1/t decay)
- Inexact search https://www.youtube.com/watch?v=MzmqM0tuO1Q&list=PL10NOnsbP5Q7wNrYItE2GhKq05cVov97e&index=4
- Armijo condition https://www.youtube.com/watch?v=X4Pjd-1R-jI&list=PL10NOnsbP5Q7wNrYItE2GhKq05cVov97e&index=6
- Wolfe 2nd condition https://www.youtube.com/watch?v=5upFcYJqSwo&list=PL10NOnsbP5Q7wNrYItE2GhKq05cVov97e&index=7
- Line Search - https://www.youtube.com/watch?v=sXMi1D2E9QQ&list=PL10NOnsbP5Q7wNrYItE2GhKq05cVov97e&index=9
- Backtracking line search
- GD convergence proof (a few words)
- GD weaknesses - curvature / ill-conditioning
- GD weaknesses - saddle points
3 - practical
5
- Momentum
- SGD
- AdaGrad / RMSProp / ADAM
6 - practical
--- Second order methods
7
- Newton Raphson
- Quasi-Newton (symmetric rank 1)
- (L)BFGS
- Gauss-Newton
- A few words on Fisher Scoring
8 - practical
9
- Coordinate descent
- Nelder Mead
- Simulated annealing?
- Multi start optim
10 - practical - 23, sunday
10 - 24, monday
--- Evolutionary algorithms
- Genetic algorithms
- Some notes on encoding
- Circle in a square problem
- CMA-ES
11 - practical - 27
12
--- Bayesian optimization - 29/30
- Latin hypercube sampling
- Surrogate models (Gaussian processes, Random forests)
- Acquisition functions (Expected improvement, Upper confidence bound)
13 - practical - 1
14
--- Multi criteria optim - 8
- Pareto dominance
- Pareto fronts
- Non-dominated sorting
- Hypervolume contribution
14 - practical
15-16?
--- Constrained optimization
TODO
- NEW - Muon - NEW
## 🎲 Probability Theory
- Sample space, events, probability
- Independence
- Conditional probability, total probability
- Bayes rule
- Geometric probability
- Random variable
- PMF, CDF, PDF
- Expected value, variance
- Law of the unconscious statistician
- Covariance and correlation (LMU Slides?)
- Distributions (many examples of what to use when)
- Joint, marginal, and conditional distributions
- Convergence modes (in probability, in distribution, almost sure convergence)
- Laws of large numbers
- Central limit theorem
## 📊 Statistics
Եսիմ։
- Iterated expectation
- Simpsons paradox
- Վիճակագրության մոլորությունները, Նարեկի սեմինարից
Check LMU Slides? Apr chat
- Point estimation: Mean, median, mode
- Quantiles, percentiles
- Estimator properties (unbiasedness, consistency, efficiency)
- MAP
- MLE
- Confidence intervals and hypothesis testing
- P-values, type I and type II errors (LMU Slides? Apr chat)
- ANOVA
- Chi-squared test
- t-test, z-test
- Bootstrap
- ? Fisher information
- ? Cramér-Rao bound
- ? Likelihood ratio test
- Bayesian statistics?
- ? EM algorithm
- ? Metropolis-Hastings algorithm
## Information Theory
- Entropy, joint entropy, conditional entropy
- Mutual information
- Kullback-Leibler divergence
- Cross-entropy
- Cross-entropy vs Risk minimization vs MLE
## Curse of dimensionality
- Distance in high dimensions
- Volume of high-dimensional spheres
- Sparsity of data
- Curse of dimensionality in machine learning
:::
:::
::: ml
# Machine Learning / Մեքենայական ուսուցում
**Շատ մոտավոր ա գրաֆիկը, նաև GenAI-ի թեմաները համարյա ներառված չեն դեռ**
## Packages to do in process=
- [] Scikit-learn
- [] LightGBM
- [] Tensorflow
- [] Pytorch
- [] Weights and biases
- [] Weaviate
- [] Chainlit
- [] Gradio
- [] Sentence transformers
- [] Hugging Face
## Linear Regression
- Assumptions
- Loss
- Gradient based optimization
- Normal Equation
- Interpretation of Coefficients
## Main Concepts
- Encoding categoricals
- Feature scaling
- Train Val Test split (data leakage issue)
- (Stratified) Cross validation
- Regression evaluation metrics
## More Regression + Main Concepts 2
- Polynomial Regression
- Under / Overfitting
- Regularization
- Ridge
- Lasso
- Hyperparameter Search
- Feature Engineering
- Outliers
- Threshold tuning
## GLM (Logistic Regression)
- Logistic regression
- Log odds
- Classification evaluation metrics
## Trees
- Decision tree
- Bagging
- Boosting
- Notable models (i.e. LightGBM)
## Model interpretation and Feature selection
## Unsupervised Learning
- KMeans
- DBSCAN
- Hierarchical
- Clustering evaluation metrics
## Neural Networks
- Perceptron
- Activation functions (sigmoid, tanh, ReLU, Leaky ReLU, Softmax)
- Loss functions (cross-entropy, MSE)
- Backpropagation
- Dropout Regularization
- Batch normalization
- Weight initialization
- Vanishing/Exploding gradients
- Transfer learning
## Intro to Computer Vision
- Convolutions (kernels, padding, stride)
- Gaussian blur, Sobel filter, Canny edge detection
- Template matching
- CNNs
- Pooling (max, average)
- Receptive field
- Dialotion
- Separable convolutions
- Fully connected layers
- Classic architectures (LeNet, AlexNet, VGG, ResNet)
- Data augmentation
- Image classification, object detection, segmentation
- Evaluation metrics (IoU, mAP, etc.)
- Transfer- learning
- Fine-tuning
## (Variational) Autoencoders
- Encoder-Decoder architecture
- Loss functions (reconstruction loss, KL divergence)
- Latent space
- Variational Autoencoders (VAE)
- Applications (denoising, generation)
Maybe
- Generative Adversarial Networks (GANs)
- Diffusion models
## 44 - 45 Intro to Natural Language Processing
- Tokenization
- Word embeddings (Word2Vec, GloVe)
- Bag of Words, TF-IDF
- Recurrent Neural Networks (RNNs)
- Vanishing / Exploding gradients in RNNs
- Long Short-Term Memory (LSTM)
- Gated Recurrent Units (GRUs)
## 46 - 47 Intro to Gen AI
Text
- Attention Mechanisms
- Transformers
- BERT, GPT
- Evaluation metrics (BLEU, ROUGE, perplexity)
- Zero-shot and few-shot learning
- Pre-trained models (Hugging Face, OpenAI, etc.)
- Transfer learning in NLP (fine-tuning pre-trained models)
- RAG
## Գուցե նաև KNN, SVM, Information Theory, Gaussian Process
:::
::: misc
- Website created with [Quarto](https://quarto.org) (fantastic tool)
- Website hosted on [GitHub Pages](https://pages.github.com/)
- [Source code of everything](https://github.com/hayktarkhanyan/python_math_ml_course)
- [URL 1](https://www.youtube.com/watch?v=6_2ZJ4QW_O4), [URL 2](https://www.youtube.com/watch?v=y4qtOVq_e0U)
```{=html}
<a href="http://s01.flagcounter.com/more/1oO"><img src="https://s01.flagcounter.com/count2/1oO/bg_FFFFFF/txt_000000/border_CCCCCC/columns_2/maxflags_10/viewers_0/labels_0/pageviews_1/flags_0/percent_0/" alt="Flag Counter"></a>
```
:::
<!-- ::: {.callout-note collapse="true"}
# Projects / Պրոեկտներ
**ԱԲ-ով ա գենեռացրած դեռ չեմ անցել վրայով**
Ահա դասընթացի ընթացքում իրականացված հիմնական պրոեկտների ցանկը՝ իրենց ֆայլերի հղումներով ու նկարագրություններով:
## 🐍 Python Բազային Պրոեկտներ
### 01. Կիսամյակային Գնահատականի Հաշվիչ
**Ֆայլ:** `python/01_intro.ipynb` - Գործնական դասի մաս
**Նկարագիր:** Պարզ ծրագիր որը հաշվարկում է ուսանողի կիսամյակային գնահատականը տարբեր բաղադրիչների հիման վրա:
### 02. Քառակուսի Հավասարման Լուծիչ
**Ֆայլ:** `python/01_intro.ipynb` - Գործնական դասի մաս
**Նկարագիր:** Քառակուսի հավասարման արմատների հաշվարկ՝ օգտագործելով հայտնի բանաձևը:
### 03. π-ի Մոտարկում (Monte Carlo Method)
**Ֆայլ:** [`python/mini_projects/approximate_pi/approximate_pi.ipynb`](python/mini_projects/approximate_pi/approximate_pi.ipynb)
**Վիդեո:** [📺 Տեսագրություն](https://youtu.be/fzujbMd4j30)
**Նկարագիր:** Monte Carlo մեթոդի օգտագործմամբ π թվի մոտարկում՝ պատահական կետեր գեներացնելով շրջանի ու քառակուսու մեջ:
### 04. Streamlit Հավելվածներ
**Ֆայլ:** `python/12_streamlit_recursion.ipynb`
**Նկարագիր:** Վեբ-հավելվածների ստեղծում Streamlit գրադարանի օգնությամբ:
## 🔧 Python Գրադարանների Պրոեկտներ
### 05. OpenAI API Timestamp Generator
**Ֆայլ:** [`python_libs/01_openai_api_timestamp_generator.ipynb`](python_libs/01_openai_api_timestamp_generator.ipynb)
**Վիդեո:** [📺 Տեսություն](https://youtu.be/ZOOWqchxETU)
**Նկարագիր:** YouTube վիդեոների transcript-ներից timestamp-եր գեներացնող ծրագիր OpenAI API-ի օգնությամբ: Ծրագիրը վերցնում է YouTube վիդեոի transcript-ը ու ավտոմատ ստեղծում timestamp-եր կարևոր թեմաների համար:
### 06. YouTube Transcript Translator
**Ֆայլ:** [`python/18_youtube_translator.ipynb`](python/18_youtube_translator.ipynb)
**Նկարագիր:** Ամբողջական պրոեկտ որը YouTube վիդեոներից metadata քաշում է, transcript ստանում ու թարգմանում: Օգտագործված են OOP-ի բոլոր 4 սյուները ու data classes:
### 07. Նշանավոր Մարդկանց Վերլուծություն
**Ֆայլ:** [`python_libs/05_noble_people_analysis.ipynb`](python_libs/05_noble_people_analysis.ipynb)
**Վիդեո:** [📺 Գործնական](https://youtu.be/3JJDA0xXvSE)
**Նկարագիր:** 1.2 միլիոն նշանավոր մարդու տվյալների վերլուծություն Pandas-ի օգնությամբ:
- Ըստ մասնագիտության ապրելու միջին տարիքի վերլուծություն
- Ինքնասպանության ցուցակիչների վերլուծություն ըստ երկրների
- Սեռային բաշխվածությունը ըստ մասնագիտության
- Հայ նշանավոր մարդկանց վերլուծություն
### 08. Կարգին Data Analysis Project
**Ֆայլ:** [`python_libs/07_kargin_project.ipynb`](python_libs/07_kargin_project.ipynb)
**Վիդեո:** [📺 Տեսագրություն](https://youtu.be/qaw4HsDa1pw)
**Ապլիկացիա:** [Կարգին Streamlit App](https://kargin.streamlit.app/)
**Բոտ:** [Կարգին Telegram բոտ](https://t.me/KarginSearchBot)
**Նկարագիր:** 600+ կարգինի տեքստերի վերլուծություն ու search գործիք: Ներառում է metadata-ի վերլուծություն (վայր, լուսավորություն, դերասաններ) ու fuzzy search ֆունկցիոնալություն:
### 09. Data Visualization Projects
**Ֆայլ:** [`python_libs/06_data_viz.ipynb`](python_libs/06_data_viz.ipynb)
**Վիդեո:** [📺 Տեսագրություն](https://youtu.be/r44t7RPPm7U)
**Նկարագիր:** Տվյալների վիզուալիզացիայի պրոեկտներ matplotlib ու plotly գրադարանների օգնությամբ:
- WordCloud սրաքում Թումանյանի պոեմներից ու Կոմիտասի նամակներից
- Ինտերակտիվ գրաֆիկներ plotly-ով
- Անիմացիաներ matplotlib-ով
### 10. YSU (Երևանի Պետական Համալսարան) Scraping
**Ֆայլ:** [`python_libs/11_ysu_scraping.ipynb`](python_libs/11_ysu_scraping.ipynb)
**Նկարագիր:** ԵՊՀ-ի կայքից տվյալների քաշման պրոեկտ՝ web scraping տեխնիկաների օգտագործմամբ:
### 11. SQL Database Projects
**Ֆայլ:** [`python_libs/12_sql.ipynb`](python_libs/12_sql.ipynb)
**Վիդեո:** [📺 Տեսագրություն](https://youtu.be/zMeKyFWTe10)
**Նկարագիր:** SQL-ի ու Python-ի համակցությամբ տվյալների բազաների հետ աշխատանքի պրոեկտներ:
## 🧪 Testing և Development Tools
### 12. PyTest Testing Framework
**Ֆայլ:** [`python_libs/09_testing__debugging.ipynb`](python_libs/09_testing__debugging.ipynb)
**Վիդեո:** [📺 Տեսագրություն](https://youtu.be/qcLhrouK7yE)
**Նկարագիր:** Unit testing-ի ու debugging-ի պրոեկտներ PyTest գրադարանով:
### 13. CLI Applications
**Ֆայլ:** [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb)
**Վիդեո:** [📺 Տեսագրություն](https://youtu.be/2BtFmBMSnsA)
**Նկարագիր:** Command Line Interface ծրագրեր տարբեր գրադարանների օգնությամբ (argparse, fire, typer, click):
### 14. FastAPI Web Applications
**Ֆայլ:** [`python_libs/15_fast_api.ipynb`](python_libs/15_fast_api.ipynb)
**Նկարագիր:** FastAPI framework-ով RESTful API-ների ու web applications-ների ստեղծման պրոեկտներ:
## 📊 Machine Learning Projects
### 15. Regression Analysis
**Ֆայլեր:** `ml/Chapter 1 Regression Main Concepts/`
**Նկարագիր:** Linear regression ու related concepts-ի իմպլեմենտացիա:
### 16. Classification Projects
**Ֆայլեր:** `ml/Chapter 2 Classification/`
**Նկարագիր:** Classification algorithms-ի իմպլեմենտացիա ու evaluation:
### 17. Tree-based Models
**Ֆայլեր:** `ml/Chapter 3 Trees/`
**Նկարագիր:** Decision trees, random forests ու boosting algorithms:
### 18. Clustering Analysis
**Ֆայլեր:** `ml/Chapter 4 Clustering/`
**Նկարագիր:** Unsupervised learning methods՝ K-means, DBSCAN ու hierarchical clustering:
### 19. Neural Networks
**Ֆայլեր:** `ml/Chapter 5 Neural Networks/`
**Նկարագիր:** Neural networks-ի հիմունքներ ու deep learning concepts:
## 📐 Mathematics Projects
### 20. Linear Algebra Vectors
**Ֆայլ:** [`math/01_lin_alg_vectors.qmd`](math/01_lin_alg_vectors.qmd)
**Նկարագիր:** Վեկտորների ու linear algebra հիմունքների տեսական ու գործնական մաշակում:
## 🔜 Ապագա Պրոեկտներ (Planning/ToDo)
Ըստ [`projects.md`](projects.md) ֆայլի՝ նախատեսված են հետևյալ պրոեկտները:
### Ավարտված
- ✅ Wordcloud տարբեր հեղինակների համար
- ✅ π-ի մոտարկում
- ✅ Hangman խաղ
- ✅ OpenAI հիմքով պրոեկտ
- ✅ Wordcloud գեներատոր
### Նախատեսվող
- 📋 Zovq/Bookinist/Zangak scraper
- 📋 Tic Tac Toe խաղեր
- 📋 Telegram բոտ
- 📋 Bulls and Cows խաղ
- 📋 Ընտրական տվյալների վերլուծիչ
- 📋 Telegram analyzer
- 📋 Browser history analyzer
- 📋 Snake խաղ
- 📋 OpenCV հիմքով պրոեկտ
:::
## 🔗 Օգտակար Հղումներ
- 📺 [Metric YouTube Channel](https://www.youtube.com/@MetricAcademy) - Բոլոր տեսադասերը
- 💬 [Դասընթացի Telegram](https://t.me/metric_academy) - Հարցեր ու քննարկումներ
- 🏠 [Տնայինների հարթակ](https://profound.academy/hy/python-introduction) - Profound Academy
- 💻 [Source Code](https://github.com/hayktarkhanyan/python_math_ml_course) - GitHub Repository
- 📝 [Լուծումներ ու նշումներ](https://metric-academy.notion.site/)
:::
::: {.callout-note collapse="true"}
# Libraries / Գրադարաններ
**ԱԲ-ով ա գենեռացրած դեռ չեմ անցել վրայով**
| Library | File Reference | Video Reference | Built-in | Short Description |
|---------|---------------|-----------------|----------|-------------------|
| **OpenAI** | [`python_libs/01_openai_api_timestamp_generator.ipynb`](python_libs/01_openai_api_timestamp_generator.ipynb) | [📺](https://youtu.be/ZOOWqchxETU) | ❌ | AI API integration for text/image generation |
| **NumPy** | [`python_libs/02_numpy.ipynb`](python_libs/02_numpy.ipynb) | [📺](https://youtu.be/TIWU_bjFuUc) | ❌ | Numerical computing with arrays |
| **Pandas** | [`python_libs/03_pandas_1.ipynb`](python_libs/03_pandas_1.ipynb) | [📺](https://youtu.be/2YD9tbQg1Hk) | ❌ | Data manipulation and analysis |
| **Pandas 2** | [`python_libs/04_pandas_2.ipynb`](python_libs/04_pandas_2.ipynb) | [📺](https://youtu.be/wgw9eexila0) | ❌ | Advanced pandas operations |
| **Matplotlib/Plotly** | [`python_libs/06_data_viz.ipynb`](python_libs/06_data_viz.ipynb) | [📺](https://youtu.be/r44t7RPPm7U) | ❌ | Data visualization |
| **FuzzyWuzzy** | [`python_libs/07_kargin_project.ipynb`](python_libs/07_kargin_project.ipynb) | [📺](https://youtu.be/qaw4HsDa1pw) | ❌ | Fuzzy string matching |
| **Argparse** | [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) | [📺](https://youtu.be/2BtFmBMSnsA) | ✅ | Command line argument parsing |
| **Fire/Click/Typer** | [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) | [📺](https://youtu.be/2BtFmBMSnsA) | ❌ | Advanced CLI frameworks |
| **Logging** | [`python_libs/08_logging__clis.ipynb`](python_libs/08_logging__clis.ipynb) | [📺](https://youtu.be/2BtFmBMSnsA) | ✅ | Professional logging system |
| **PyTest** | [`python_libs/09_testing__debugging.ipynb`](python_libs/09_testing__debugging.ipynb) | [📺](https://youtu.be/qcLhrouK7yE) | ❌ | Unit testing framework |
| **Requests** | [`python_libs/10_scraping__parallelization.ipynb`](python_libs/10_scraping__parallelization.ipynb) | - | ❌ | HTTP requests for web scraping |
| **BeautifulSoup** | [`python_libs/10_scraping__parallelization.ipynb`](python_libs/10_scraping__parallelization.ipynb) | - | ❌ | HTML/XML parsing |
| **SQLite3** | [`python_libs/12_sql.ipynb`](python_libs/12_sql.ipynb) | [📺](https://youtu.be/zMeKyFWTe10) | ✅ | Database operations |
| **Pydantic** | [`python_libs/13_pydantic.ipynb`](python_libs/13_pydantic.ipynb) | - | ❌ | Data validation and settings |
| **FastAPI** | [`python_libs/15_fast_api.ipynb`](python_libs/15_fast_api.ipynb) | - | ❌ | Modern web API framework |
| **Pathlib** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ✅ | Object-oriented filesystem paths |
| **Collections** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ✅ | Specialized container datatypes |
| **Numba** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ❌ | JIT compilation for speed |
| **Icecream** | [`python_libs/14_misc_libraries.ipynb`](python_libs/14_misc_libraries.ipynb) | - | ❌ | Enhanced debugging print |
| **Streamlit** | [`python/12_streamlit_recursion.ipynb`](python/12_streamlit_recursion.ipynb) | - | ❌ | Web app creation |
| **PyTubeFix** | [`python/18_youtube_translator.ipynb`](python/18_youtube_translator.ipynb) | - | ❌ | YouTube video metadata extraction |
| **Random** | Multiple files | - | ✅ | Random number generation |
| **Math** | Multiple files | - | ✅ | Mathematical functions |
| **OS** | [`python/09_files_packages_terminal.ipynb`](python/09_files_packages_terminal.ipynb) | - | ✅ | Operating system interface |
| **Time** | [`python/09_files_packages_terminal.ipynb`](python/09_files_packages_terminal.ipynb) | - | ✅ | Time-related functions |
| **TQDM** | [`python/09_files_packages_terminal.ipynb`](python/09_files_packages_terminal.ipynb) | - | ❌ | Progress bars |
:::
<!-- closing libs section -->