From dbbc3c44e48453cfeff4d943690343a1f244da19 Mon Sep 17 00:00:00 2001 From: Khalida Aliyeva <105045412+aliyevakhalida@users.noreply.github.com> Date: Sun, 1 Oct 2023 16:56:58 +0400 Subject: [PATCH] Add AZ translation for section 4.1 --- .../1-Introduction/translations/README.az.md | 299 ++++++++++++++++++ .../translations/assignment.az.md | 11 + 4-Classification/translations/README.az.md | 27 ++ 3 files changed, 337 insertions(+) create mode 100644 4-Classification/1-Introduction/translations/README.az.md create mode 100644 4-Classification/1-Introduction/translations/assignment.az.md create mode 100644 4-Classification/translations/README.az.md diff --git a/4-Classification/1-Introduction/translations/README.az.md b/4-Classification/1-Introduction/translations/README.az.md new file mode 100644 index 00000000..ad9256cd --- /dev/null +++ b/4-Classification/1-Introduction/translations/README.az.md @@ -0,0 +1,299 @@ +# Təsnifatlandırma bölməsinə giriş + +Bu bölmədəki 4 dərsdə ənənəvi maşın öyrənməsinin fundamental mövzusu olan _təsnifatlandırma_ haqqında öyrənəcəksiniz. Biz Asiyanın və Hindistanın möhtəşəm mətbəxləri üçün olan data massivi istifadə edərək müxtəlif təsnifatlandırma alqoritmlərinin üzərindən keçəcəyik. Ümid edək ki, acsınız! + +![sadəcə bir çimdik!](../images/pinch.png) + +> Bu dərslərdə pan-Asiya mətbəxlərini qeyd edin! [Jen Looper](https://twitter.com/jenlooper) tərəfindən təsvir + +Təsnifatlandırma [yönləndirilmiş öyrənmə](https://wikipedia.org/wiki/Supervised_learning)nin bir formasıdır və reqressiya texnikaları ilə çoxlu ortaq cəhətləri var. Əgər desək ki, maşın öyrənməsi dəyərləri proqnozlaşdırmaqdan və obyektləri etiketləməkdən ibarətdir, o zaman təsnifatlandırmanı ümumi 2 qrupa ayıra bilərik: _binar təsnifatlandırma_ və _çox sinifli təsnifatlandırma_. + +[![Təsnifatlandırma bölməsinə giriş](https://img.youtube.com/vi/eg8DJYwdMyg/0.jpg)](https://youtu.be/eg8DJYwdMyg "Təsnifatlandırma bölməsinə giriş") + +> 🎥 Yuxarıdakı təsvirə klikləməklə videoya baxın: John Guttag MIT-də təsnifatlandırma mövzusunu təqdim edir + +Yadda saxlayın: + +- **Xətti reqressiya** sizə dəyişənlər arasındakı əlaqəni proqnozlaşdırmağa və yeni məlumatın həmin xəttə nəzərən harada yerləşəcəyi barədə həqiqətə yaxın olan təxminlər etməyə kömək etdi. Beləliklə siz, _balqabağın Sentyabrdakı qiyməti ilə Dekabrdakı qiymətinin arasındakı fərq nə qədər olar_ kimi suallara təxmini cavablar verə biləcəksiniz. +- **Lojistik reqressiya** sizə "binar kateqoriyaları" aydınlaşdırmağa kömək etdi: bu qiymət nöqtəsində _balqabaq narıncıdır, yoxsa narıncı deyil_? + +Təsnifatlandırma müxtəlif alqoritmləri istifadə edərək verilənin etiketini və ya sinfini təyin etmək üçün başqa yollar tapmağa imkan verir. Gəlin inqrediyentləri analiz etməklə mətbəxin aid olduğu yeri tapa bilib bilməyəcəyimizi görmək üçün mətbəx datası ilə işləyək. + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/19/) + +> ### [Bu dərs R proqramlaşdırma dili ilə də əlçatandır!](../solution/R/lesson_10.html) + +### Giriş + +Təsnifatlandırma, bir maşın öyrənmə tədqiqatçısının və bir data mühəndisinin ən əsas fəaliyyətlərindən biridir. Binar dəyərin təsnifatlandırılması ("bu imeyl spamdır yoxsa spam deyil?") kimi sadə məsələlərdən, komputer görüşü istifadə edərək qarışıq şəkillərin təsnifatlandırılması və seqmentasiyası məsələlərinə qədər, datanı siniflərə ayırmaq və data haqqında suallar verə bilmək hər zaman faydalıdır. + +Prosesi daha elmi dildə izah etsək, sizin təsnifatlandırma metodunuz, praqnozlaşdırıcı bir model yaradaraq sizə giriş və çıxış dəyərləri arasında əlaqəni təsvir etməyə imkan verir. + +![binar və çox sinifli təsnifatlandırma](../images/binary-multiclass.png) + +> Təsnifatlandırma alqoritmlərinin həll etməli olduğu binar və çox sinifli təsnifatlandırma problemləri. [Jen Looper](https://twitter.com/jenlooper) tərəfindən infoqraf + +Datanı təmizləməyə, vizuallaşdırmağa və MÖ tapşırıqlarımız üçün hazırlamağa başlamazdan əvvəl, gəlin, maşın öyrənməsinin hansı üsullarla datanı təsnifatlandırmaq üçün istifadə edilə biləcəyini öyrənək. + +Ənənəvi maşın öyrənməsi vasitəsilə təsnifatlandırma əsasını [statistika](https://wikipedia.org/wiki/Statistical_classification)dan alır və _X xəstəliyinin yaranma ehtimalı_nı müəyyən etmək üçün `siqaret çəkən`, `çəki` və `yaş` kimi xarakteristikalardan istifadə edir. Yönləndirilmiş öyrənmə metodu olduğuna görə, daha əvvəl yerinə yetirdiyiniz reqressiya tapşırıqlarında olduğu kimi datanız etiketlənir və MÖ alqoritmləri data massivin siniflərini (ya da 'xarakteristikalar'ını) təsnifatlandırmaq və proqnozlaşdırmaq, həmçinin onları qruplara bölmək və ya nəticə çıxarmaq üçün həmin etiketləri istifadə edir. + +✅ Bir anlıq mətbəxlər haqqında data massiv təsəvvür edin. Çox sinifli model nələrə cavab verə bilərdi? Binar model nələrə cavab verə bilərdi? Əgər verilən mətbəxdə samanlıq güldəfnəsinin istifadə olunub olunmadığını müəyyən etmək istəsəniz nə baş verəcək? Deyək ki, bir ərzaq çantasında sizə illicium verum, artişok, gül kələmi və adi qıtıqotu təqdim olunur və siz bu ərzaqlardan ənənəvi Hindistan yeməyi hazırlaya bilib bilməyəcəyinizi öyrənmək istəyirsiniz. Bu zaman nə baş verəcək? + +[![Çılğın sirli səbətlər](https://img.youtube.com/vi/GuTeDbaNoEU/0.jpg)](https://youtu.be/GuTeDbaNoEU "Çılğın sirli səbətlər") + +> 🎥 Yuxarıdakı təsvirə klikləməklə videoya baxın. 'Chopped' proqramının xülasəsini belə verə bilərik: Aşpazlar 'sirli səbət'də olan təsadüfi seçilmiş inqrediyentlərdən yemək hazırlamalıdırlar. Şübhəsiz ki, burada MÖ modeli köməyə çatardı! + +## Salam 'təsnifatlandırıcı' + +Bu mətbəx data massivi haqqında soruşmaq istədiyimiz sual həqiqətən də çox sinifli məsələ sualıdır, çünki biz bir neçə mümkün milli mətbəx ilə işləyə bilərik. İnqrediyentlər verilərsə, data bu siniflərdən hansına uyğun gələr? + +Scikit-learn, həll etmək istədiyiniz məsələdən asılı olaraq, datanı təsnifatlandırmaq üçün bir neçə müxtəlif alqoritm təklif edir. Növbəti iki dərsdə bu alqoritmlərdən bir neçəsi haqqında öyrənəcəksiniz. + +## Tapşırıq - datanı təmizləyin və balanslaşdırın + +Proyektə başlamazdan öncə yerinə yetirilməli olan ilk tapşırıq, daha yaxşı nəticələr əldə etmək məqsədilə datanı təmizləmək və balanslaşdırmaqdır. Olduğunuz qovluqla eyni qovluqda olan boş _notebook.ipynb_ faylı ilə başlayın. + +Quraşdırılmalı olan ilk komponent [imblearn](https://imbalanced-learn.org/stable/)-dür. Bu, datanı daha yaxşı balanslaşdırmağa imkan verən Scikit-learn komponentidir (bu tapşırıq haqqında az sonra öyrənəcəksiniz). + +1. `imblearn` komponentini quraşdırmaq üçün, `pip install` komandasını icra edin: + + ```python + pip install imblearn + ``` + +2. Datanızı köçürmək və vizuallaşdırmaq üçün lazım olan komponentləri köçürün. Həmçinin `imblearn`-dən `SMOTE`-u köçürün. + + ```python + import pandas as pd + import matplotlib.pyplot as plt + import matplotlib as mpl + import numpy as np + from imblearn.over_sampling import SMOTE + ``` + + Artıq datanı oxuyaraq köçürmək üçün hazırsınız. + +3. Növbəti tapşırıq datanı köçürmək olacaq: + + ```python + df = pd.read_csv('../data/cuisines.csv') + ``` + + `read_csv()` funksiyasını çağırmaq _cusines.csv_ faylının içindəkiləri oxuyacaq və onları `df` verilənində yerləşdirəcək. + +4. Datanın formasına baxaq: + + ```python + df.head() + ``` + + İlk 5 sətir aşağıdakı kimidir: + + ```output + | | Unnamed: 0 | cuisine | almond | angelica | anise | anise_seed | apple | apple_brandy | apricot | armagnac | ... | whiskey | white_bread | white_wine | whole_grain_wheat_flour | wine | wood | yam | yeast | yogurt | zucchini | + | --- | ---------- | ------- | ------ | -------- | ----- | ---------- | ----- | ------------ | ------- | -------- | --- | ------- | ----------- | ---------- | ----------------------- | ---- | ---- | --- | ----- | ------ | -------- | + | 0 | 65 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 1 | 66 | indian | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 2 | 67 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 3 | 68 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | + | 4 | 69 | indian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + ``` + +5. Bu data haqqında məlumat əldə etmək üçün `info()` funksiyasını çağırın: + + ```python + df.info() + ``` + + Nəticə aşağıdakı kimi olacaq: + + ```output + + RangeIndex: 2448 entries, 0 to 2447 + Columns: 385 entries, Unnamed: 0 to zucchini + dtypes: int64(384), object(1) + memory usage: 7.2+ MB + ``` + +## Tapşırıq - mətbəxlər haqqında öyrənin + +Tapşırıq getdikcə maraqlı olmağa başlayır. Gəlin datanın mətbəxlər üzrə necə paylandığını tapaq + +1. `barh()` funksiyasını çağırmaqla datanın zolaqlı diaqram kimi təsvirini əldə edin: + + ```python + df.cuisine.value_counts().plot.barh() + ``` + + ![mətbəx datasının paylanması](../images/cuisine-dist.png) + + Datada olan mətbəxlərin sayı azdır, lakin data bərabər paylanmayıb. Bunu düzəldə bilərsiniz! Başlamazdan əvvəl biraz daha araşdırın. + +2. Hər mətbəx üçün nə qədər data olduğunu tapın və onları çap edin: + + ```python + thai_df = df[(df.cuisine == "thai")] + japanese_df = df[(df.cuisine == "japanese")] + chinese_df = df[(df.cuisine == "chinese")] + indian_df = df[(df.cuisine == "indian")] + korean_df = df[(df.cuisine == "korean")] + + print(f'thai df: {thai_df.shape}') + print(f'japanese df: {japanese_df.shape}') + print(f'chinese df: {chinese_df.shape}') + print(f'indian df: {indian_df.shape}') + print(f'korean df: {korean_df.shape}') + ``` + + Nəticə aşağıdakı kimi olacaq: + + ```output + thai df: (289, 385) + japanese df: (320, 385) + chinese df: (442, 385) + indian df: (598, 385) + korean df: (799, 385) + ``` + +## İnqrediyentləri kəşf edin + +Artıq datanı daha dərindən analiz edib hər mətbəxdə daha çox istifadə olunan inqrediyentləri öyrənə bilərsiniz. Mətbəxlər arasındakı qarışıqlığı aradan qaldırmaq üçün təkrarlanan datanı təmizləməlisiniz, gəlin bunun haqqında öyrənək. + +1. İnqrediyentlərin cədvəlini yaratmaq üçün `create_ingredient_df()` adlı Python funksiyası yaradın. Bu funksiya lazımsız olan sütunu çıxarmaqla başlayacaq və inqrediyentləri saylarına görə sıralayacaq: + + ```python + def create_ingredient_df(df): + ingredient_df = df.T.drop(['cuisine','Unnamed: 0']).sum(axis=1).to_frame('value') + ingredient_df = ingredient_df[(ingredient_df.T != 0).any()] + ingredient_df = ingredient_df.sort_values(by='value', ascending=False, + inplace=False) + return ingredient_df + ``` + + Bundan sonra bu funksiyanı mətbəx üzrə ən çox istifadə olunan 10 inqrediyenti tapmaq üçün istifadə edə bilərsiniz. + +2. `create_ingredient_df()` funksiyasını çağırın və nəticənin diaqramını əldə etmək üçün `barh()` funksiyasını çağırın: + + ```python + thai_ingredient_df = create_ingredient_df(thai_df) + thai_ingredient_df.head(10).plot.barh() + ``` + + ![tay](../images/thai.png) + +3. Eynisini Yapon mətbəxi datası üçün edin: + + ```python + japanese_ingredient_df = create_ingredient_df(japanese_df) + japanese_ingredient_df.head(10).plot.barh() + ``` + + ![yapon](../images/japanese.png) + +4. Çin mətbəxində istifadə olunan inqrediyentlər üçün də: + + ```python + chinese_ingredient_df = create_ingredient_df(chinese_df) + chinese_ingredient_df.head(10).plot.barh() + ``` + + ![çin](../images/chinese.png) + +5. Hindistan mətbəxində istifadə olunan inqrediyentlər üçün də: + + ```python + indian_ingredient_df = create_ingredient_df(indian_df) + indian_ingredient_df.head(10).plot.barh() + ``` + + ![hindistan](../images/indian.png) + +6. Son olaraq, Koreya mətbəxində istifadə olunan inqrediyentlər üçün: + + ```python + korean_ingredient_df = create_ingredient_df(korean_df) + korean_ingredient_df.head(10).plot.barh() + ``` + + ![koreya](../images/korean.png) + +7. Növbəti addımda `drop()` funksiyasını çağıraraq ən çox istifadə olunan və ayrı mətbəxlər arasında qarışıqlıq yaradan inqrediyentləri çıxarın: + + Hamı düyünü, sarımsağı və zəncəfili sevir! + + ```python + feature_df= df.drop(['cuisine','Unnamed: 0','rice','garlic','ginger'], axis=1) + labels_df = df.cuisine #.unique() + feature_df.head() + ``` + +## Data massivi balanslaşdırın + +Datanı təmizlədikdən sonra, onu balanslaşdırmaq üçün [SMOTE-u](https://imbalanced-learn.org/dev/references/generated/imblearn.over_sampling.SMOTE.html) - "Synthetic Minority Over-sampling Technique" - istifadə edin. + +1. `fit_resample()` funksiyasını çağırın. Bu funksiya interpolyasiya üsulu ilə yeni nümunələr yaradır. + + ```python + oversample = SMOTE() + transformed_feature_df, transformed_label_df = oversample.fit_resample(feature_df, labels_df) + ``` + + Datanı balanslaşdırdırdan sonra onu təsnifatlandırarkən daha yaxşı nəticələr əldə edəcəksiniz. Binar təsnifatlandırmanı nümunə götürün. Əgər datanızın böyük bir hissəsi bir sinfə aiddirsə, həmin sinfə aid daha çox data olduğu üçün MÖ modeli həmin sinfi daha yüksək tezliklə proqnozlaşdıracaq. Datanı balanslaşdırmaq bu data əyrilərini yox edərək tarazsızlığı aradan qaldırır. + +2. Artıq hər bir inqrediyent üzrə etiketlərin sayına baxa bilərsiniz: + + ```python + print(f'new label count: {transformed_label_df.value_counts()}') + print(f'old label count: {df.cuisine.value_counts()}') + ``` + + Nəticəniz belə olacaq: + + ```output + new label count: korean 799 + chinese 799 + indian 799 + japanese 799 + thai 799 + Name: cuisine, dtype: int64 + old label count: korean 799 + indian 598 + chinese 442 + japanese 320 + thai 289 + Name: cuisine, dtype: int64 + ``` + + Artıq data təmiz, balanslı və çox ləzzətlidir! + +3. Sonuncu addım balanslaşdırılmış datanı etiketlər və xarakteristikalar da daxil olmaqla fayla eksport oluna bilən bir halda saxlamaqdır: + + ```python + transformed_df = pd.concat([transformed_label_df,transformed_feature_df],axis=1, join='outer') + ``` + +4. `transformed_df.head()` və `transformed_df.info()` funksiyalarını çağırmaqla dataya sonuncu dəfə nəzər sala bilərsiniz. Bu datanın bir nüsxəsini gələcək dərslərdə istifadə etmək üçün saxlayın: + + ```python + transformed_df.head() + transformed_df.info() + transformed_df.to_csv("../data/cleaned_cuisines.csv") + ``` + + Bu yeni faylı artıq data qovluğunda tapa bilərsiniz. + +--- + +## 🚀Məşğələ + +Bu proqramda bir neçə maraqlı data massiv var. `data` qovluqlarına baxın. Bu qovluqlardan hansısa birində binar və çox sinifli təsnifatlandırma üçün uyğun ola biləcək data massivlər varmı? Onlar haqqında hansı sualları verərdiniz? + +## [Mühazirə sonrası quiz](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/20/) + +## Təkrarlayın və özünüz öyrənin + +SMOTE TPİ-ni tədqiq edin. Bu TPİ ən çox hansı hallarda istifadə olunur? Hansı problemləri həll edir? + +## Tapşırıq + +[Təsnifatlandırma metodlarını tədqiq edin](assignment.az.md) diff --git a/4-Classification/1-Introduction/translations/assignment.az.md b/4-Classification/1-Introduction/translations/assignment.az.md new file mode 100644 index 00000000..b1b935a0 --- /dev/null +++ b/4-Classification/1-Introduction/translations/assignment.az.md @@ -0,0 +1,11 @@ +# Təsnifatlandırma metodlarını tədqiq edin + +## Təlimatlar + +[Scikit-learn-ün sənədlərində](https://scikit-learn.org/stable/supervised_learning.html) datanı təsnifatlandırmağın çoxlu yollarını tapacaqsınız. Bu sənədlərdə kiçik bir axtarışa çıxın: məqsədiniz təsnifatlandırma metodlarına nəzər salmaq və proqramda olan data massivi, bu data massiv haqqında verə biləcəyiniz bir sualı və təsnifatlandırma metodunu uyğunlaşdırmaqdır. Elektron cədvəl və ya .doc faylında bir cədvəl yaradıb həmin təsnifatlandırma metodunun data massiv üzərində necə işlədiyini izah edin. + +## Rubrika + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| | təqdim olunan sənəd 5 alqoritm ilə yanaşı təsnifatlandırma metodunu da əhatə edir. İcmal detallıdır və yaxşı izah olunub. | təqdim olunan sənəd 3 alqoritm ilə yanaşı təsnifatlandırma metodunu da əhatə edir. İcmal detallıdır və yaxşı izah olunub. | təqdim olunan sənəd 3-dən az alqoritmi, eləcə də təsnifatlandırma metodunu əhatə edir və icmal nə detallıdır, nə də yaxşı izah olunub. | diff --git a/4-Classification/translations/README.az.md b/4-Classification/translations/README.az.md new file mode 100644 index 00000000..58775e79 --- /dev/null +++ b/4-Classification/translations/README.az.md @@ -0,0 +1,27 @@ +# Təsnifatlandırma bölməsinə başlayırıq + +## Regional mövzu: Ləzzətli Asiya və Hindistan Mətbəxləri 🍜 + +Asiyada və Hindistanda yeməklərlə bağlı olan adət-ənənələr son dərəcə çeşidli və çox ləzzətlidir! Gəlin, regional mətbəxlər üçün olan dataya baxaraq hansı inqrediyentlərin istifadə olunduğunu başa düşməyə çalışaq. + +![Tay yeməkləri satıcısı](../images/thai-food.jpg) +> Unsplash platformasında Lisheng Chang tərəfindən çəkilmiş şəkil + +## Nə öyrənəcəksiniz + +Bu bölmədə siz, Reqressiya haqqında əvvəlki bölmələrdən öyrəndiklərinizi təkmilləşdirəcək və datanı daha yaxşı başa düşmək üçün istifadə edə biləcəyiniz digər təsnifatlandırıcılar haqqında öyrənəcəksiniz. + +> Təsnifatlandırma modelləri ilə işləmək haqqında məlumat almanıza kömək olacaq az-kod yanaşmalı alətlər də mövcuddur. Bu tapşırıq üçün olan [Azure MÖ-i](https://docs.microsoft.com/learn/modules/create-classification-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) sınaqdan keçirin. + +## Dərslər + +1. [Təsnifatlandırma bölməsinə giriş](../1-Introduction/translations/README.az.md) +2. [More classifiers](../2-Classifiers-1/README.md) +3. [Yet other classifiers](../3-Classifiers-2/README.md) +4. [Applied ML: build a web app](../4-Applied/README.md) + +## Təşəkkürlər + +"Təsnifatlandırma bölməsinə başlayırıq" [Cassie Breviu](https://www.twitter.com/cassiebreviu) və [Jen Looper](https://www.twitter.com/jenlooper) tərəfindən ♥️-lə yazılmışdır + +Ləzzətli mətbəxlər data massivi [Kaggle](https://www.kaggle.com/hoandan/asian-and-indian-cuisines)-dan götürülmüşdür.