diff --git a/1-Introduction/1-intro-to-ML/translations/README.az.md b/1-Introduction/1-intro-to-ML/translations/README.az.md new file mode 100644 index 0000000000..a0082b579c --- /dev/null +++ b/1-Introduction/1-intro-to-ML/translations/README.az.md @@ -0,0 +1,146 @@ +# Maşın öyrənməsinə giriş + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/1/?loc=az) + +--- + +[![Yeni başlayanlar üçün ML - Yeni başlayanlar üçün maşın öyrənməsinə giriş](https://img.youtube.com/vi/6mSx_KJxcHI/0.jpg)](https://youtu.be/6mSx_KJxcHI "Yeni başlayanlar üçün ML- Yeni başlayanlar üçün maşın öyrənməsinə giriş") + +> 🎥 Bu dərslə məşğul olmaq üçün yuxarıdakı təsvirə klikləyin və videonu izləyin. + +Yeni başlayanlar üçün klassik maşın öyrənməsi kursuna xoş gəlmisiniz! İstər bu sahədə tamamilə yeni olun və ya bu sahədə fikirləri cəmləməyə çalışan təcrübəli ML mütəxəssisi olun, bizə qatıldığınız üçün məmnuniyyət hissi duyuruq! Sizə ML öyrənməyinizdə mehriban bir mühit yaratmaq istəmişik və [fikirlərinizi](https://github.com/microsoft/ML-For-Beginners/discussions) dəyərləndirmək və cavablamaqdan məmnun olarıq. + +[![ML-ə giriş](https://img.youtube.com/vi/h0e2HAPTGF4/0.jpg)](https://youtu.be/h0e2HAPTGF4 "ML-ə giriş") + +> 🎥 Yuxarıdakı təsvirə klikləməklə videoya baxın: John Guttag MIT-də maşın öyrənməsini təqdim edir + +--- +## Maşın öyrənməsi ilə başlanğıc + +Kurikuluma başlamazdan əvvəl komputerinizi Phyton notbukların icra olunmasına hazır vəziyyətə gətirməyiniz lazımdır. + +- **Komputerinizi bu videolarla hazırlayın**. Linkləri izləyərək komputerinizdə necə [Python quraşdıra biləcəyinizi](https://youtu.be/CXZYvNRIAKM) və kodlamaq üçün [mətn redaktorunu quraşdıracağınızı](https://youtu.be/EU8eayHWoZg) öyrənə bilərsiniz. +- **Python öyrən**. Bu kursda istifadə etdiyimiz və data mühəndislərinə yararlı olan olan [Python](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) proqramlaşdırma dilində fundamental biliklərə sahib olmağınız məsləhətdir. +- **Node.js və JavaScript öyrən**. Bu kursda bir neçə dəfə veb proqramlarını hazırlayarkən JavaScript dilindən istifadə etmişik, buna görə kompüterinizə [node](https://nodejs.org) və [npm](https://www.npmjs.com/) yükləməyiniz lazımdır. [Visual Studio Code](https://code.visualstudio.com/) yükləməklə həm Python, həm də JavaScript kodlaması üçün istifadə edə bilərsiniz. +- **GitHub hesabı yaradın**. Bizi [GitHub](https://github.com) plaformasından tapmısınızsa, çox güman ki, hesabınız artıq vardır. Lakin əgər yoxdursa, yeni birini yaradın və bu kurrikulumu öz hesabınıza köçürməklə (fork) istədiyiniz kimi istifadə edə bilərsiniz. (Həmçinin bizə ulduz verməyi də unutmayın 😊) +- **Scikit-learn kəşf edin**. Özünüzü [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) platforması ilə tanış edin. Dərslərdə bəzi ML kitabxanaları bu platformadan istinad olunub. + +--- +## Maşın öyrənməsi nədir? + +'Maşın öyrənməsi' günümüzdə ən populyar və tez-tez istifadə olunan terminlərdən biridir. Hansı sahədə işləməyindən asılı olmayaraq texnologiya ilə tanışlığın varsa, bu termini ən azı bir dəfə eşitmə ehtimalı var. Maşın öyrənməsinin mexanikası çox insan üçün sirdir. Maşın öyrənməsinə yeni başlayan kimi mövzunun bəzən çox ağır olduğunu hiss edə bilərsən. Buna görə maşın öyrənmənin əslində nə olduğunu addımbaaddım praktik nümunələr üzərindən başa düşmək vacibdir. + +--- +## Məşhurluq xətti + +![MLməşhurluq xətti](../images/hype.png) + +> Google Trends platformasında 'maşın öyrənməsi' terminin 'məşhurluq xətti' + +--- +## Əsrarəngiz kainat + +Bizim yaşadığımız kainat çoxlu möhtəşəm sirlərlə doludur. Stefen Haukinq, Albert Eynşteyn və başqa böyük alimlər həyatlarını ətrafımızdakı dünyanın sirlərini açmaq üçün mənalı məlumatlarını araşdırmağa həsr etmişdir. İnsanların öyrənmə tərzi belədir: insan uşaqlıqdan ilbəil böyüdükcə yeni şeylər öyrənir və ətrafındakı dünyanın strukturunu aşkarlayır. + +--- +## Uşağın beyni + +Uşağın beyni və duyğuları ətrafdakı məlumatları qəbul edir və get-gedə həyatın gizli modelini öyrənir. Bu məlumatlar onun əvvəldən öyrəndiyi qaydaları təyin etmək üçün qurduğu məntiqi qaydaları daha da təkmilləşdirir. İnsan beyninin öyrənmə prosesi dünyada yaşayan canlıların ən təkmil formasıdır. Daim gizli modelləri öyrənmək və bunların üzərində kəşflər etmək bacarığı bizə həyatımız boyu daha da yaxşılaşmağımıza kömək edir. Belə öyrənmə tutumu və təkammülü [beyinin plastik xarakteristikası](https://www.simplypsychology.org/brain-plasticity.html) ilə əlaqəlidir. Səthi olaraq insan beynin öyrənməsi prosesinin və maşın öyrənməsi anlayışının arasında bəzi oxşarlıqları təyin edə bilərik. + +--- +## İnsan beyni + +[İnsan beyni](https://www.livescience.com/29365-human-brain.html) həqiqi dünyadakı əşyaları dərk edir, qəbul edilən məlumatları emal edir, məntiqi qərarlar verir və şəraitdən asılı olaraq bəzi hərəkətlər edir. Ağıllı şəkildə davranmaq buna deyirik. Maşına ağıllı şəkildə davranmasını proqram vasitəsi ilə quraşdırılması süni intellekt (AI) adlanır. + +--- +## Bəzi terminlər + +Bəzi terminlər çaşdırıcı ola bilər. Bunu unutmayaq ki, maşın öyrənməsi (ML) süni intellekt sahəsinin daxilində bir hissədir. **ML qəbul edilən məlumatlardan xüsusi alqoritmlər istifadə etməklə mənalı informasiyanı və gizli modelləri tapıb rasional qərar vermək prosesində istifadə olunur**. + +--- +## AI, ML, Dərin öyrənmə + +![AI, ML, dərin öyrənmə, data elmi](../images/ai-ml-ds.png) + +> Diaqram AI, ML, dərin öyrənmə və data elmi arasında əlaqəni təsvir edir. [Bu qrafikdən](https://softwareengineering.stackexchange.com/questions/366996/distinction-between-ai-ml-neural-networks-deep-learning-and-data-mining) ilhamlanaraq [Cen Luper](https://twitter.com/jenlooper) tərəfindən hazırlanıb. + +--- +## Əhatə olunan anlayışlar + +Bu kurikulumda biz yalnız yeni başlayanların mütləq bilməli olduğu əsas maşın öyrənməsi anlayışları əhatə edəcəyik. 'Klassik maşın öyrənməsi' mövzusu əsasən bir çox tələbənin əsasları öyrənməsinə kömək etmiş mükəmməl Scikit-learn kitabxanası ilə əhatə olunub. Süni intellektin və ya dərin öyrənməni aynlayışlarını daha yaxşı başa düşmək üçün maşın öyrənməsinin əsas bilikləri vacibdir və biz sizə burada bunu təqdim edirik. + +--- +## Bu kursda öyrənəcəksiniz: + +- maşın öyrənməsi əsas anlayışları +- ML tarixi +- ML və ədalət +- reqressiya ML texnikaları +- qruplaşdırma ML texnikaları +- klasterləşdirmə ML texnikaları +- təbii danışıq emal olunması ML texnikaları +- zamana seriyası proqnozu ML texnikaları +- möhkəmləndirərək öyrənmə +- ML-in real həyatda tətbiqləri + +--- +## Nələri əhatə etməyəcəyik + +- dərin öyrənmə +- neyron şəbəkələr +- Suni İntellekt (AI) + +Daha yaxşı öyrənmə təcrübəsi üçün biz neyron şəbəkələrin, 'dərin öyrənmənin' - çoxlu qatlarla formalaşan model quran neyron şəbəkələr - və AI-ın mürəkkəbliklərini daxil etməmişik. Onlar barədə digər kurikulumlarla bəhs edəcəyik. Biz həmçinin gələcəkdə data elmini daha geniş əhatə edən kurikulumu da təklif edəcəyik. + +--- +## Niyə maşın öyrənməsi mövzusunu öyrənməliyəm? + +Maşın öyrənməsi sistem tərəfdən baxıldıqda məlumatlardan gizli modelləri öyrənərək məntiqli qərar verə bilən avtomatik sistemin yaradılmasıdır. + +Bu motivasiya insan beyninin ətraf aləmdən qəbul etdiyi məlumatlar əsasında öyrənməsindən yaranıb. + +✅ Bir dəqiqəlik düşünün, bir təşkilat ənənəvi üsulla və dəqiq qaydalarla tənzimlənən sistem qurmaq əvəzinə nə üçün maşın öyrənməsi strategiyasını seçər. + +--- +## Maşın öyrənməsinin tətbiqləri + +Maşın öyrənməsinin tətbiqləri mobil telefonlarımızdan, ağıllı cihazlardan və digər sistemlərdən yaranıb ətrafımızda axın edən məlumatlar kimi hər yerdədirlər. Maşın öyrənmə alqoritmlərinin nəhəng potensialını nəzərə alaraq tədqiqatçılar çoxölçülü və çox-parametrli həqiqi həyat problemlərini müsbət nəticələr əldə edərək kəşf edirlər. + +--- +## ML tətbiq olunan nümunələr + +**Maşın öyrənməsini bir çox yollarla istifadə edə bilərsiniz**: + +- Xəstənin tibbi tarixçəsi və hesabları əsasında xəstəliyin mümkünlüyünü təxmin etmək. +- Hava məlumatları əsasında növbəti hava hadisələrini təxmin etmək. +- Mətnin yazılma hissini, məqsədini anlamaq. +- Təbliğatın qarışısını almaq üçün yanlış xəbərləri təyin etmək. + +Maliyyə, iqtisadiyyat, geologiya, kosmik tədqiqat, biotibbi mühəndislik, idrak elmi və digər bir çox sahələr maşın öyrənəmsini mənimsəyərək böyük məlumat emalı problemlərini həll edirlər. + +--- +## Nəticə + +Maşın öyrənmə həqiqi həyatdan götürülmüş və ya süni yaradılmış məlumatlarda mənalı modellərin tapılmasın prosesini avtomatlaşdırır. Bu üsul böyük dəyərli bizneslərdən, tibb, maliyyə və digər tətbiqlərdə istifadə edilərək isbat edilib. + +Yaxın gələcəkdə çox yayılması səbəbindən maşın öyrənməsinin fundamental anlayışlarını bilmək istənilən sahədə çalışan insanlar üçün bir məcburiyyət olacaqdır. + +--- +# 🚀 Məşğələ + +Dəftər, kağız və ya onlayn [Excalidraw](https://excalidraw.com/) kimi tətbiqdə AI, ML, dərin öyrənmə və data elmi barədə anladıqlarınızı təsvir edin. Hər bir texnika ilə effektiv həll edə biləcəyiniz problemlə bağlı fikirlərinizi də qeyd edin. + +# [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/2/?loc=az) + +--- +# Təkrarlayın və özünüz öyrənin + +ML alqoritmləri ilə bulud mühitində həll edə biləcəyiniz problemlər barədə daha öyrənmək üçün bu [öyrənmə planından](https://docs.microsoft.com/learn/paths/create-no-code-predictive-models-azure-machine-learning/?WT.mc_id=academic-77952-leestott) istifadə edə bilərsiniz. + + +ML əsasları barədə bu [öyrənmə planına](https://docs.microsoft.com/learn/modules/introduction-to-machine-learning/?WT.mc_id=academic-77952-leestott) da nəzər yetirin. + +--- +# Tapşırıq + +[Sistem hazırlayın](assignment.az.md) diff --git a/1-Introduction/1-intro-to-ML/translations/assignment.az.md b/1-Introduction/1-intro-to-ML/translations/assignment.az.md new file mode 100644 index 0000000000..ac6324e94d --- /dev/null +++ b/1-Introduction/1-intro-to-ML/translations/assignment.az.md @@ -0,0 +1,9 @@ +# Sistem hazırlayın + +## Təlimatlar + +Bu qiymətləndirilməyən bir tapşırıqdır. Bu tapşırıqda siz Python proqramlaşdırma dilini öz komputerinizdə icra edilə bilən vəziyyətə gətirməyiniz və notbukları istifadə edə bilməyiniz tələb olunur. + +[Python öyrənmə planına](https://docs.microsoft.com/learn/paths/python-language/?WT.mc_id=academic-77952-leestott) baxın və sisteminizdə sazlamanı bu giriş videolara baxaraq yerinə yetirin: + +https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6 diff --git a/1-Introduction/2-history-of-ML/translations/README.az.md b/1-Introduction/2-history-of-ML/translations/README.az.md new file mode 100644 index 0000000000..f88b3584f7 --- /dev/null +++ b/1-Introduction/2-history-of-ML/translations/README.az.md @@ -0,0 +1,152 @@ +# Maşın öyrənmə tarixi + +![Maşın öyrənmə tarixinin xülasəsi eskizi](../../../sketchnotes/ml-history.png) +> [Tomomi İmura](https://www.twitter.com/girlie_mac) tərəfindən təsvir + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/3/) + +--- + +[![Yeni başlayanlar üçün ML- Maşın öyrənmə tarixi](https://img.youtube.com/vi/N6wxM4wZ7V0/0.jpg)](https://youtu.be/N6wxM4wZ7V0 "Yeni başlayanlar üçün ML- Maşın öyrənmə tarixi") + +> 🎥 Bu dərslə məşğul olmaq üçün yuxarıdakı təsvirə klikləyin və videonu izləyin. + +Bu dərsdə biz maşın öyrənmə və süni intellekt tarixində vacib mərhələlərindən keçəcəyik. + +Süni intellekt (AI) tarixi maşın öyrənmə sahəsi tarixinə daxildir, çünki ML əsasında istifadə olunan alqoritmlər və hesablama üsulları AI yaradılmasında kömək olur. Bunu yadda saxlamaq faydalıdır ki, bu sahələr 1950-ci illərdə araşdırmalar nəticəsində aydınlaşsa da, [alqoritm, statistik, riyazi, hesablama və texniki kəşflər](https://wikipedia.org/wiki/Timeline_of_machine_learning) bu zaman bölgüsündən daha əvvələ düşür və kəsişir. Fakt budur ki, insanlar belə suallar haqqında [yüz illərdir](https://az.wikipedia.org/wiki/S%C3%BCni_intellektin_tarixi) fikirləşirlər (bu məqalə tarix boyu 'düşünən maşın' ideyası haqqında intellektual qeydləri əhatə edir). + +--- +## Diqqətəlayiq kəşflər + +- 1763, 1812 [Bayes Teoremi](https://wikipedia.org/wiki/Bayes%27_theorem) və törəmələri. Bu teorem və tətbiqləri bir hadisənin baş vermə ehtimalını əvvəlki biliklər əsasında dəyərləndirməsini izah edir. +- 1805 [Ən kiçik kvadratlar üsulu](https://az.wikipedia.org/wiki/%C6%8Fn_ki%C3%A7ik_kvadratlar_%C3%BCsulu) fransız riyaziyyatçı Adriyen-Mari Legendr tərəfindən kəşf edilib. Bu teoremdə məlumatların modelləməsində istifadə olunan reqressiya üsulları barəsində bəhs edilir. +- 1913 [Markov Zəncirləri](https://wikipedia.org/wiki/Markov_chain) rus riyaziyyatçı Andrey Markov şərəfinə adlandırılıb və baş verə biləcək hadisələrin sırasını əvvəlki vəziyyətə görə təyin edilməsində istifadə edilir. +- 1957 [Perseptron](https://az.wikipedia.org/wiki/Perseptron) amerikan psixoloq Frank Ruzenblat tərəfindən kəşf olunub. Bu metod dərin öyrənmədə xətti qruplaşdırma üçün istifadə olunur. + +--- + +- 1967 [Yaxın qonşular](https://wikipedia.org/wiki/Nearest_neighbor) alqoritmi ilk dəfə xəritədə yolların tapılması üçün hazırlanıb. ML sahəsində bu alqoritm modelləri tapmaqda istifadə olunur. +- 1970 [Geri yayılma (Backpropagation)](https://wikipedia.org/wiki/Backpropagation) [neyron şəbəkələrini öncədən məlumatlandırma](https://wikipedia.org/wiki/Feedforward_neural_network) üsulu ilə təkmilləşdirmədə tətbiq olunur. +- 1982 [Təkrarlanan neyron şəbəkələr](https://wikipedia.org/wiki/Recurrent_neural_network) şəbəkənin öncədən məlumatlandırma üsulundan yaranan müvəqqəti qraflardan ibarət süni neyron şəbəkələrdir. + +✅ Biraz araşdırma edin. Başqa hansı tarixlər ML və AI tarixində vacib hissəni tutur? + +--- +## 1950: Düşünə bilən maşınlar + +[2019-cu ildə ictimaiyyət tərəfindən](https://wikipedia.org/wiki/Icons:_The_Greatest_Person_of_the_20th_Century) 20 əsrin ən görkəmli alimləri kimi seçilən Alan Türinq 'düşünə bilən maşın' modelinin qurucusu kimi tanınır. O, NLP dərslərimizdə araşdıracağınız [Türinq Testi](https://www.bbc.com/news/technology-18475646) yaratmaqla ona inanmayanlarla sübut etməyə və bu konsepsiyanın təcrübi sübutları ilə öz ehtiyacını doldurmağa çalışdı. + +--- +## 1956: Dartmut Yay araşdırma layihəsi + +“Süni intellektlə bağlı Dartmut Yay Araşdırma Layihəsi süni intellektin bir sahə kimi əsas hadisəsi idi” və “süni intellekt” termini məhz burada ortaya çıxdı ([mənbə](https://250.dartmouth.edu/highlights/artificial-intelligence-ai-coined-dartmouth)). + + +> Öyrənmənin hər bir aspekti və ya zəkanın hər hansı digər xüsusiyyəti prinsipcə o qədər dəqiq təsvir edilə bilər ki, onu simulyasiya etmək üçün maşın hazırlana bilər. + +--- + +Aparıcı tədqiqatçı, riyaziyyat professoru Con Makkarti "öyrənmənin hər bir tərəfinin və ya zəkanın digər xüsusiyyətini prinsipcə maşının simulyasiya edə biləcəyi dərəcədə çox dəqiqliklə təsvir oluna biləcəyi fərziyyəsini davam etdirməyə" inanırdı. İştirakçılar arasında sahənin digər korifeyi Marvin Minski də var idi. + +Seminar, "simvolik metodların yüksəlişi, məhdud sahələrə yönəlmiş sistemlər (ilkin ekspert sistemləri) və induktiv sistemlərə qarşı deduktiv sistemlər" daxil olmaqla bir neçə müzakirələrin başlanmasına və təşviq etməsinə görə yadda qaldı ([mənbə](https://wikipedia.org/wiki/Dartmouth_workshop)). + +--- +## 1956 - 1974: "Qızıl illər" + +1950-ci illərdən 70-ci illərin ortalarına qədər süni intellektin bir çox problemi həll edə biləcəyi ümidi ilə nikbinlik yüksək səviyyədə idi. 1967-ci ildə Marvin Minski əminliklə bildirdi ki, “bir nəsil ərzində... “süni intellekt”in yaradılması problemi əsaslı şəkildə həll olunacaq”. (Minsky, Marvin (1967), Hesablama: Sonlu və Sonsuz Maşınlar, Englevud Klifs, N.J.: Prentis-Hol) + +Təbii dil emal tədqiqatları çiçəkləndi, axtarış təkmilləşdi, daha güclü oldu və sadə tapşırıqların sadə dil təlimatlarından istifadə edilərək tamamlandığı "mikro dünyalar" konsepsiyası yaradıldı. + +--- + +Tədqiqatlar dövlət qurumları tərəfindən yaxşı maliyyələşdirildi, hesablamalar və alqoritmlər sahəsində irəliləyişlər əldə edildi və ağıllı maşınların prototipləri quruldu. Bu maşınlardan bəzilərinə aşağıdakılar daxildir: + +* [Şakey robotu](https://wikipedia.org/wiki/Shakey_the_robot), manevr edə bilən və tapşırıqları "ağıllı" şəkildə yerinə yetirməyə qərar verən robot. + + ![Şakey, ağıllı robot](../images/shakey.jpg) + > Şakey 1972-ci il + +--- + +* Erkən 'söhbətçi' Eliza insanlarla söhbət edə və primitiv bir 'terapevt' rolunu oynaya bilirdi. NLP dərslərində Eliza haqqında daha çox məlumat əldə edəcəksiniz. + + ![Eliza, bot](../images/eliza.png) + > Elizanın bir versiyası, çatbot + +--- + +* "Bloklar dünyası" blokların üst-üstə yığıla və çeşidlənə biləcəyi və qərar qəbul etmək üçün maşınların öyrədilməsi üzrə təcrübələrin sınaqdan keçirilə biləcəyi mikro dünyanın nümunəsi idi. [SHRDLU](https://wikipedia.org/wiki/SHRDLU) kimi kitabxanalarla qurulmuş irəliləyişlər dilin işlənməsini irəli aparmağa kömək etdi. + + [![SHRDLU ilə bloklar dünyası](https://img.youtube.com/vi/QAJz4YKUwqw/0.jpg)](https://www.youtube.com/watch?v=QAJz4YKUwqw "SHRDLU ilə bloklar dünyası") + + > 🎥 Videoya baxmaq üçün təsvirə klikləyin: SHRDLU ilə bloklar dünyası + +--- +## 1974 - 1980: "AI qışı" + +1970-ci illərin ortalarında aydın oldu ki, “ağıllı maşınlar”ın hazırlanmasının mürəkkəbliyi lazımi səviyyədə göstərilməyib və mövcud hesablama gücü nəzərə alınmaqla ondan gözləntilər həddənindən artıq olub. Maliyyələşmə azaldı və sahəyə inam azaldı. Güvənə təsir edən bəzi məsələlərə aşağıdakılar daxildir: + +--- +- **Limitlər**. Hesablama gücü çox limitli idi. +- **Kombinator partlayış**. Maşın öyrənmə üçün istifadə olunan parametr sayı komputerlərin hesablama gücü və tutumunun inkişafı ilə parallel getmirdi, hətta eksponent olaraq artırdı. +- **Məlumat azlığı**. Alqoritmlərin sınaqdan keçirilməsi, işlənməsi və dəqiqləşdirilməsi prosesinə lazım olan məlumatların azlığı mane olurdu. +- **Doğru sualları veririkmi?**. Verilən sualların özü də sorğulanmağa başladı. Tədqiqatçılar öz yanaşmalarını tənqid etməyə başladılar: + - Turinq testləri, digər fikirlərlə yanaşı, "rəqəmsal kompüterin proqramlaşdırılması onu dili başa düşmüş kimi göstərə bilər, lakin həqiqi anlayış yarada bilməz" deyən "Çin otağı nəzəriyyəsi" vasitəsi ilə sual altına düşdü ([mənbə](https://plato.stanford.edu/entries/chinese-room/)). + - “Terapevt” ELIZA kimi süni intellektlərin cəmiyyətə daxil edilməsinin etikasına etiraz edildi. + +--- + +Eyni zamanda, müxtəlif AI düşüncə məktəbləri formalaşmağa başladı. ["Qarışıq" ilə "səliqəli AI"](https://wikipedia.org/wiki/Neats_and_scruffies) təcrübələri arasında müqayisədə dixotomiya (eyni zamanda yalnız biri mümkün olan) quruldu. _Qarışıq_ laboratoriyaları istədiyiniz nəticələr əldə edənə qədər proqramları saatlarla dəyişirdilər. _Səliqəli_ laboratoriyaları isə "məntiqə və formal problemlərin həllinə yönəldilib". ELIZA və SHRDLU sistemləri _qarışıq_ kateqoriyasında tanınırlar. 1980-ci illərdə, ML sistemlərini təkrarlana bilən etmək tələbi yarandıqca, nəticələri daha izah oluna bilən _səliqəli_ yanaşma tədricən ön plana çıxdı. + +--- +## 1980-ci illər Ekspert sistemlər + +Sahə böyüdükcə onun biznesə faydası daha aydın oldu və 1980-ci illərdə “ekspert sistemləri”nin yayılması da artdı. "Ekspert sistemləri süni intellektin (AI) proqram təminatının ilk həqiqi uğurlu formalarından biri idi" ([mənbə](https://wikipedia.org/wiki/Expert_system)). + +Bu tip sistem əslində _hibriddir_, bir hissəsi biznes tələblərini müəyyən edən qaydalar mühərrikindən, digər hissəsi isə yeni faktlar çıxarmaq üçün qaydalar sistemindən istifadə edən mühərrikindən ibarətdir. + +Bu dövr həm də neyron şəbəkələrinə artan diqqətin şahidi oldu. + +--- +## 1987 - 1993: AI 'sükutu' + +İxtisaslaşmış ekspert sistemlərinin aparatlarının yayılması həddən artıq ixtisaslaşmış olmaq kimi xoşagəlməz effekt verdi. Fərdi kompüterlərin yüksəlişi də bu böyük, ixtisaslaşmış və mərkəzləşdirilmiş sistemlərlə rəqabət aparırdı. Hesablamanın demokratikləşməsi başlamışdı və bu, nəhayət, böyük verilənlərin müasir partlayışına yol açdı. + +--- +## 1993 - 2011 + +Bu dövrdə ML və AI üçün əvvəllər məlumat və hesablama gücünün bəs etməməsi səbəbindən həll olunmayan bəzi problemlərin həlli tapıldı. Xüsusilə 2007-ci ildə smartfonun meydana çıxması ilə məlumatların miqdarı sürətlə artmağa və daha geniş şəkildə əlçatan olmağa başladı. Hesablama gücü eksponent olaraq genişləndi və alqoritmlər də onunla birlikdə inkişaf etdi. Keçmişin sərbəst dövrləri artıq intizamlı hala gəlməyə başladıqca sahə yetkinləşməyə başladı. + +--- +## İndi + +Bu gün maşın öyrənməsi və süni intellekt həyatımızın demək olar ki, hər bir hissəsinə toxunur. Bu dövr alqoritmlərin insan həyatına riskləri və potensial təsirlərini diqqətlə başa düşməyi tələb edir. Microsoft-dan Brad Smith-in dediyi kimi, "İnformasiya texnologiyası məxfilik və ifadə azadlığı kimi fundamental insan hüquqlarının müdafiəsinin mərkəzinə gedən məsələləri gündəmə gətirir. Bu problemlər məhsullar yaradan texnologiya şirkətlərinin məsuliyyətini artırır. Fikrimizcə, onlar həmçinin düşünülmüş dövlət tənzimləməsini və düzgün istifadə qaydalarının işlənib hazırlanmasını tələb edirlər" ([mənbə](https://www.technologyreview.com/2019/12/18/102365/the-future-of-ais-impact-on-society/)). + +--- + +Gələcəyin nələr vəd etdiyini görürük, lakin kompüter sistemlərini və onların işlədiyi proqram və alqoritmləri başa düşmək vacibdir. Ümid edirik ki, bu kurikulum daha yaxşı başa düşməyinizə kömək edəcək ki, özünüz qərar verə biləsiniz. + +[![Dərin öyrənmənin tarixi](https://img.youtube.com/vi/mTtDfKgLm54/0.jpg)](https://www.youtube.com/watch?v=mTtDfKgLm54 "Dərin öyrənmənin tarixi") +> 🎥 Videoya baxmaq üçün yuxarıdakı şəkilə klikləyin: Yan LeCun mühazirəsində dərin öyrənmə tarixini müzakirə edir + +--- +## 🚀 Məşğələ + +Bu tarixi məqamlardan (yuxarıdakı sadalanan) birini seçib onların arxasında duran insanlar haqqında daha çox məlumat əldə edin. Onlar arasında maraqlı personajlar var və mədəni boşluqdan heç bir elmi kəşf yaradılmayıb. Bəs siz onlarda nələri kəşf etdiniz? + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/4/?loc=az) + +--- +## Təkrarlayın və özünüz öyrənin + +İzləmək və dinləmək üçün materiallar: + +[Amy Boydun süni intellektin təkamülünü müzakirə etdiyi podkast](http://runasradio.com/Shows/Show/739) + +[![Amy Boyd tərəfindən AI tarixi](https://img.youtube.com/vi/EJt3_bFYKss/0.jpg)](https://www.youtube.com/watch?v=EJt3_bFYKss "Amy Boyd tərəfindən AI tarixi") + +--- + +## Tapşırıq + +[Zaman qrafiki qurun](assignment.az.md) diff --git a/1-Introduction/2-history-of-ML/translations/assignment.az.md b/1-Introduction/2-history-of-ML/translations/assignment.az.md new file mode 100644 index 0000000000..bd33216c99 --- /dev/null +++ b/1-Introduction/2-history-of-ML/translations/assignment.az.md @@ -0,0 +1,11 @@ +# Zaman qrafiki qurun + +## Təlimat + +[Bu reponu](https://github.com/Digital-Humanities-Toolkit/timeline-builder) istifadə edərək alqoritmlərin, riyaziyyatın, statistikanın, AI və ML tarixinin bəzi aspektlərinin və ya bunların birləşməsinin bir zaman qrafikini yaradın. Bir insana, ideyaya və ya uzun müddətli bir fikirə diqqət yetirə bilərsiniz. Multimedia elementlərini (şəkil, video, səs) əlavə etdiyinizə əmin olun. + +## Rubrika + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | -------- | ------- | ------------------------ | +| | Zaman qrafiki GitHub səhifəsində paylaşılmışdır | Kod hazır deyil və paylaşılmayıb | Zaman qrafiki natamamdır, yaxşı araşdırılmayıb və paylaşılmayıb | diff --git a/1-Introduction/3-fairness/translations/README.az.md b/1-Introduction/3-fairness/translations/README.az.md new file mode 100644 index 0000000000..9f91d643ea --- /dev/null +++ b/1-Introduction/3-fairness/translations/README.az.md @@ -0,0 +1,162 @@ +# Məsuliyyətli AI ilə maşın öyrənməsi həlləri tapmaq + +![Eskizdə Maşın öyrənməsində məsuliyyətli AI xülasəsi](../../../sketchnotes/ml-fairness.png) +> [Tomomi Imura](https://www.twitter.com/girlie_mac) tərəfindən eskiz + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/5/?loc=az) + +## Giriş + +Bu kurrikulumda siz maşın öyrənməsinin gündəlik həyatımıza necə təsir edə biləcəyini və etdiyini kəşf etməyə başlayacaqsınız. Hətta indi də sistemlər və modellər səhiyyə diaqnozları, kreditlərin təsdiqlənməsi və ya dələduzluğun aşkarlanması kimi gündəlik qərar qəbuletmə işlərində iştirak edirlər. Buna görə də, etibarlı nəticələr əldə etmək üçün bu modellərin yaxşı işləməsi vacibdir. Hər hansı bir proqram tətbiqi kimi, AI sistemləri də gözləntilərə çatmayacaq və ya arzuolunmaz nəticə ilə üzləşəcək. Buna görə də AI modelinin davranışını başa düşmək və izah etmək vacibdir. + +Təsəvvür edin ki, bu modelləri yaratmaq üçün istifadə etdiyiniz data irq, cins, siyasi görüş, din kimi müəyyən demoqrafik göstəricilərə malik olmadıqda və ya qeyri-mütənasib şəkildə belə demoqrafik göstəriciləri təmsil edərsə nələr baş verə bilər. Modelin çıxışı bəzi demoqrafik göstəricilərə üstünlük vermək üçün şərh edilməsinin nəticəsi nə olacaq? Tətbiq üçün nəticəsi nə olacaq? Bundan əlavə, modelin mənfi nəticəsi olduqda və insanlar üçün zərərli olduqda nə baş verəcək? AI sistemlərinin davranışına görə kim cavabdehdir? Bunlar bu kurrikulumda araşdıracağımız bəzi suallardır. + +Bu dərsdə siz: + +- Maşın öyrənməsində ədalətin əhəmiyyəti və ədalətlə əlaqəli zərərlər haqqında məlumatlılığınızı artıracaqsınız +- Etibarlılıq və təhlükəsizliyi təmin etmək üçün kənar göstəriciləri və qeyri-adi ssenariləri araşdırmaq təcrübəsi ilə tanış olacaqsınız +- İnklüziv sistemlərin dizayn edilməsi ilə hər kəsin səlahiyyətləndirilməsi ehtiyacı haqqında anlayış əldə edəcəksiniz +- Məlumatların və insanların məxfiliyinin və təhlükəsizliyinin qorumasının nə qədər vacib olduğunu araşdıracaqsınız +- Süni intellekt modellərinin davranışını izah etmək üçün şüşə qutu yanaşmasının vacibliyini görəcəksiniz +- Süni intellekt sistemlərinə inam yaratmaq üçün məsuliyyətliliyin necə vacib olduğunu nəzərə alacaqsınız + +## Tələb olunanlar + +İlkin olaraq, zəhmət olmasa, "Məsuliyyətli AI Prinsipləri" Təlim Yoluna başlayın və mövzu ilə bağlı aşağıdakı videoya baxın: + +Bu [Təlim Yolunu](https://docs.microsoft.com/learn/modules/responsible-ai-principles/?WT.mc_id=academic-77952-leestott) izləməklə Məhsul AI haqqında daha çox məlumat əldə edin + +[![Microsoft-un Məsul AI yanaşması](https://img.youtube.com/vi/dnC8-uUZXSc/0.jpg)](https://youtu.be/dnC8-uUZXSc "Microsoft-un Məsul AI yanaşması") + +> 🎥 Video üçün yuxarıdakı şəklə klikləyin: Microsoft-un Məsul AI yanaşması + +## Ədalətlilik + +Süni intellekt sistemləri hər kəsə ədalətli davranmalı və oxşar insan qruplarına müxtəlif yollarla təsir etməməlidir. Məsələn, süni intellekt sistemləri tibbi müalicə, kredit müraciətləri və ya işə qəbulla bağlı təlimat verdikdə, oxşar simptomları, maliyyə vəziyyəti və ya peşəkar keyfiyyətləri olan hər kəsə eyni tövsiyələri verməlidir. İnsan olaraq hər birimiz qərarlarımıza və hərəkətlərimizə təsir edən irsi qərəzlər daşıyırıq. Bu qərəzlər AI sistemlərini öyrətmək üçün istifadə etdiyimiz məlumatlarda aydın görünə bilər. Belə manipulyasiya bəzən istəmədən baş verə bilər. Məlumatlarda qərəzliliyi nə vaxt tətbiq etdiyinizi şüurlu şəkildə bilmək çox vaxt çətindir. + +**“Haqsızlıq”** irq, cins, yaş və ya əlillik statusu kimi xüsusiyyətləti baxımından bir qrup insan üçün mənfi təsirləri və ya “zərərləri” əhatə edir. Ədalətlə əlaqəli əsas zərərlər aşağıdakı kimi təsnif edilə bilər: + +- **Ayrı-seçkilik**, məsələn, cins və ya etnik mənsubiyyət digərindən üstündürsə. + +- **Xidmət keyfiyyəti**. Əgər məlumatı konkret bir ssenari üçün öyrədirsinizsə, lakin reallıq daha mürəkkəbdirsə, bu, xidmətin keyfiyyətsiz olmasına gətirib çıxarır. Məsələn, qara dərili insanları hiss edə bilməyən əl sabunu dispenseri. [İstinad](https://gizmodo.com/why-cant-this-soap-dispenser-identify-dark-skin-1797931773) + +- **Təhqir**. Bir şeyi və ya kimisə haqsız yerə tənqid etmək, etiketləmək. Məsələn, bir şəkil etiketləmə texnologiyası qara dərili insanların şəkillərini qorilla kimi yanlış etiketlədi. + +- **Həddindən artıq və ya az təmsil olunma**. İdeya ondan ibarətdir ki, müəyyən bir qrup müəyyən bir peşədə kifayət qədər təmsil olunmur və zərər verən hər hansı bir xidmət və ya funksiya bunu təbliğ etməyə davam edir. + +- **Stereotipləşdirmə**. Müəyyən bir qrupun ön yarğılı fikirlərlə əlaqələndirilməsi. Məsələn, ingilis və türk dilləri arasında dil tərcümə sistemində cins ilə stereotipik əlaqəsi olan sözlərə görə səhvlər ola bilər. + +![translation to Turkish](../images/gender-bias-translate-en-tr.png) +> türk dilinə tərcümə + +![translation back to English](../images/gender-bias-translate-tr-en.png) +> ingilis dilinə geri tərcümə + +Süni intellekt sistemlərinin dizayn edilməsi və test olunması zamanı biz süni intellektin ədalətli olmasını və qərəzli və ya ayrı-seçkilik xarakterli qərarlar qəbul etmək üçün proqramlaşdırılmamasını təmin etməliyik, hansı ki insanların da qəbul etməsi qadağandır. Süni intellekt və maşın öyrənməsində ədalətin təmin edilməsi mürəkkəb sosial texniki problem olaraq qalır. + +### Etibarlılıq və təhlükəsizlik + +Güvən yaratmaq üçün AI sistemləri həm normal, həm də gözlənilməz şəraitdə etibarlı, təhlükəsiz və düzgün olmalıdır. Süni intellekt sistemlərinin müxtəlif situasiyalarda necə davranacağını bilmək vacibdir, xüsusən də onlar normal şəraitdən kənara çıxdıqda. Süni intellekt həllərini qurarkən süni intellektin qarşılaşacağı müxtəlif vəziyyətlərin necə idarə olunacağına böyük diqqət yetirilməlidir. Məsələn, özünü idarə edən avtomobil insanların təhlükəsizliyini əsas prioritet kimi qoymalıdır. Nəticədə, avtomobili idarə edən süni intellekt avtomobilin qarşılaşa biləcəyi bütün mümkün ssenariləri nəzərə almalıdır, məsələn, gecə, tufan və ya çovğun, küçədə qaçan uşaqlar, ev heyvanları, yol tikintiləri və s. Bir AI sisteminin nə qədər yaxşı olduğu bir sıra fərqli şəraitdə nə dərəcədə etibarlı və təhlükəsiz işlədiyindən asılıdır, bu, sistem dizaynı və testi zamanı data mühəndisi və ya AI proqramçısı tərəfindən nəzərə alınan proqnoz səviyyəsini göstərir. + +> [🎥 Video üçün bura klikləyin: ](https://www.microsoft.com/videoplayer/embed/RE4vvIl) + +### Daxil edilmə + +AI sistemləri hər kəslə əlaqədə olacaq və fayda verəcək şəkildə formalaşdırılmalıdır. AI sistemlərinin dizayn və icra mərhələrində data mühəndisləri və proqramçılar sistemin istəmədən kimlərisə xaric etməsi ehtimalarını təyin etməyə və qarşısını almağa çalışırlar. Misal üçün, dünyada müxtəlif əngəlləri olan 1 milyard insan var. AI inkişafı nəticəsində onlar geniş miqyasda məlumatlara və fürsətlərə gündəlik həyatlarında asanlıqla çata bilirlər. Əngəllər barədə öncədən düşünmək AI məhsullarını hər kəs tərəfindən faydalana biləcəyi daha yaxşı təcrübəni yaratmağa fürsətlər yaradır. + +> [🎥 Video üçün bura klikləyin: AI-da daxil edilmə](https://www.microsoft.com/videoplayer/embed/RE4vl9v) + +### Təhlükəsizlik və məxfilik + +AI sistemləri təhlükəsiz olmalı və insanlarım məxfiliyinə hörmət etməlidir. İnsanlar onların məxfiliyini, məlumatlarını və ya həyatlarını risk altında qoyan sistemlərə az güvənirlər. Maşın öyrənməsi modellərini sazladığımız zaman ən yaxşı nəticəni verən datalara etibar edirik. Bunu etdiyimiz zaman datanın mənbəsini və düzgün üsulla əldə olduğunu da nəzərə almalıyıq. Misal üçün, bu məlumat istifadəçi tərəfindən təqdim olunub və ya ictimai olaraq əlçatandırmı? Data ilə işləyərkən nəzərə alınmalı növbəti məsələ, AI sistemlərinin məxfi məlumatlarını qoruyacağı və hücumlara davamlı olacağı şəkildə hazırlanması vacibdir. AI istifadəsi artıqca vacib şəxsi və biznes məlumatlarının məxfiliyinin qorunması daha vacib və qəliz hala gəlir. Məxfilik və data təhlükəsizliyi problemləri AI üçün daha çox diqqət tələb edir, çünki bu məlumatlar AI sistemlərinin insanlar barədə dəqiq təxminlər və qərarlar verməsi üçün lazımdır. + +> [🎥 Video üçün bura klikləyin: AI-da təhlükəsizlik](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- Cari sənayedə Məxfilik və təhlükəsizlik sahəsində əhəmiyyətli irəliləyişlər etmişik, GDPR (Ümumi Məlumatların Qorunması Qaydası) kimi qaydalarla diqqəti daha da artırmışıq +- Buna baxmayaraq biz AI sistemlərində effektiv fərdiləşdirilmə üçün şəxsi məlumatlara olan ehtiyac ilə təhlükəsizlik arasında olan gərginliyi başa düşməliyik. +- Kompüterlərin internetə qoşulması ilə təhlükəsizlik problemlərinin yaranmasındakı böyük sıçrayışı indi AI ilə əlaqəli sistemlərində görürük. +- Eyni zamanda biz AI-ın təhlükəsizlik tərəfdən inkişaf etdiyini də görürük. Misal olaraq, bugünkü müasir anti-virus proqramları AI sistemlərinin iştirakı ilə həyata keçirir. +- Bizim Data elmi proseslərinin ən son məxfilik və təhlükəsizlik təcrübələrini özündə birləşdiyinə əmin olmağımız lazımdır. + +### Şəffaflıq + +AI sistemləri başa düşülən olmalıdır. Şəffaflığın ən vacib hissəsi AI sistemlərinin davranışını və komponentlərini izah etməkdir. AI sistemlərinin anlaşıqlığını artırmaqla biz mümkün performans problemlərini, təhlükəsizlik və məxfilik məsələlərini, qərəzləri, çıxdaş edilmə hallarını və ya istənilməyən nəticələri daha tez tapa bilərik. Biz həmçinin inanırıq ki, insanlar AI sistemlərini nə zaman, nə üçün və necə istifadə edəcəklərini seçməkləri barədə səmimi, məsuliyyətli olmalıdırlar. Əlavə olaraq, işlətdikləri sistemin limitləri barədə də məlumatlı olmalıdırlar. Misal üçün, əgər bank AI sistemini müştərilərə verəcək kredit təklifini hazırlamaqda köməkçi kimi istifadə edirsə, bu sistemin verdiyi təklifləri ən çox hansı parametrlərin təsir etdiyini araşdırması vacibdir. Hökümətlər AI-ın sənayelərdə istifadəsinə qaydalar tətbiq etməyə başlayır, belə ki data mühəndisləri və şirkətləri AI sisteminin verdiyi qərarların (xüsusilə arzuolunmaz nəticələrin) tənzimləyici tələblərə cavab verdiyini izah edə bilməlidirlər. + +> [🎥 Video üçün bura klikləyin: AI-da şəffaflıq](https://www.microsoft.com/videoplayer/embed/RE4voJF) + +- AI sistemləri qəliz olduğu üçün onun işləmə qaydasını və verdiyi qərarları anlamaq çətindir. +- Bu anlaşılmada əksiklik həmin sistemlərin idarə edilməsinə, istifadə edilməsinə və sənədləşməsinə təsir edir. +- Bu anlaşılmadakı əksiklik ən vacib olaraq sistemin səbəb olduğunu nəticəyə gətirən qərarlara təsir edir. + +### Məsuliyyət + +AI tərtib edən və işə salan şəxslər sistemin necə işlədiyi ilə bağlı məsuliyyət daşımalıdırlar. Üz tanınması kimi həssas texnologiyaların istifadəsində məsuliyyət ehtiyacı daha əhəmiyyətlidir. Son zamanlar, itmiş uşaqları tapmaq kimi istifadəyə yararlı üz tanıma texnologiyalarına tələb hüquq təşkilatlarından tərəfindən kəskin artmışdır. Lakin bu texnologiyalar dövlət tərəfindən istifadə olunaraq vətəndaşları fundamental azadlıq risklərinə gətirib çıxara bilər. Misal üçün onlar seçilmiş fərdləri daim müşahidə edə bilərlər. Buna görə də data mühəndisləri və təşkilatlar AI sistemlərinin fərdlərə və cəmiyyətə necə təsir etməsi ilə bağlı məsuliyyətli olmalıdırlar. + +[![Tanınmış AI tədqiqatçısı üz tanınması tətbiqi ilə ilə kütləvi izləmə barədə xəbərdarlıq edir edir](../images/accountability.png)](https://www.youtube.com/watch?v=Wldt8P5V6D0 "Microsoft-un məsuliyyətli AI-a yanaşması") + +> 🎥 Video üçün yuxarıdakı şəkilə klikləyin: Üz tanınması tətbiqi ilə ilə kütləvi izləmə barədə xəbərdarlıq + +AI-ı cəmiyyətimizə gətirmiş ilk nəsil olaraq bizə ünvanlanmış ən böyük suallardan biri, kompüterlərin insanlara məlusiyyətli qalacağına və kompüterləri tərtib edən insanların digər hər kəsə məsuliyyətli qalacağına necə əmin ola bilərik. + +## Təsirin qiymətləndirilməsi + +Maşın öyrənmə modelini öyrətməzdən əvvəl AI sisteminin məqsədini anlamaq üçün mümkün ola biləcək təsirləri qiymətləndirməyimiz vacibdir. Sistemin istifadəsində məqsəd nədir, harada tətbiq olunacaq və bununla kim işləyəcək. Bu məqamlar mümkün ola biləcək riskləri və gözlənilən nəticələri nəzərə almaq üçün sistemi yoxlayan və ya test edən şəxslər üçün faydalı olacaqdır. + +Aşağıda qeyd olunanlar təsirin qiymətləndirilməsi zamanı nəzərə alınacaq sahələrdir: + +* **Fərdlərə mənfi təsir**. Tələbləri və məhdudiyyətləri, nəzərdə tutulmayan istifadə yeri və sistemin performans limitlərini bilməklə bu sistemin başqa fərdlərə hansısa yolla zərər vurmayacağına əmin olmalısınız. +* **Məlumat tələbləri**. Yoxlayan şəxslər sistemin dataları necə və harada istifadə edəcəyini öyrənməklə məlumat saxlanmasındakı tələblərdə nələrə diqqət etməli olacağını biləcəklər (misal üçün GDPR və ya HIPPA data qaydaları). Əlavə olaraq, datanın mənbəyinin və miqdarının öyrənmə üçün kifayət edəcəyi də yoxlayın. +* **Təsirin xülasəsi**. Sistemin istifadəsindən yarana biləcək bütün mümkün təhlükələri siyahı formasında topla. ML prosesi boyunca təyin olunmuş problemləri necə həll edəcəyini nəzərdən keçir. +* **Uyğun məqsədlər** 6 əsas prinsipin hər birinin məqsədinə çatıla bildiyini yoxla və mümkün boşluqları düşün. + + +## Məsul AI-ı izləmək + +Proqram təminatlarının izlənildiyi kimi AI sistemlərində də problemlərin tapılması və həlli üçün izləmə mütləqdir. Modelin gözlənildiyi kimi və ya məsuliyyətlə işləməməsinə təsir edən bir çox amil var. Ənənəvi model performans göstəricilərinin əksəriyyəti modelin performansının kəmiyyət aqreqatlarıdır və modelin məsul AI prinsiplərini necə pozduğunu təhlil etmək üçün kifayət deyil. Bundan əlavə, maşın öyrənmə modelləri qara qutudur və onun nəticəyə necə gəldiyini başa düşmək, səhvlərini izah etmək qəlizdir. Bu kursun davamında Məsul AI panelini necə qura və sistemi izləyə biləcəyimizi öyrənəcəyik. İdarə paneli data tədqiqatçıları və AI proqramçıları üçün aşağıdakıları yerinə yetirmək üçün vahid bir alət təqdim edir: + +* **Xəta analizi**. Sistemin ədalətliliyinə və ya etibarlılığına təsir edə biləcək modelin statistik xəta paylanmasını müəyyən etmək. +* **Modelin təsviri**. Datasetlər arasında modelin performansında uyğunsuzluğun harada olduğunu aşkar etmək. +* **Data analizi**. Məlumatların paylanmasını başa düşmək və məlumatlarda ədalətlilik, əhatəlilik və etibarlılıq problemlərinə səbəb ola biləcək hər hansı potensial qərəzliyi müəyyən etmək. +* **Model tətbiq qabiliyyəti**. Modelin proqnozlarına nəyin təsir etdiyini başa düşmək. Bu modelin davranışını izah etməyə kömək edir, şəffaflıq və cavabdehlik üçün vacibdir. + +## 🚀 Məşğələ + +Zərərin baş verməsinin qabağını almaq üçün ilk növbədə biz: + +- sistem üzərində işləyən insanların müxtəlif təcrübə və istiqamətlərdən gəldiyinə əmin olaq +- cəmiyyətimizin fərqliliyini özündə əks etdirən data toplusunu yığmağa sərmayə qoyaq +- problem olduqda cavabdeh AI-ı tapmağa və düzəltməyə qadir olan daha yaxşı maşın öyrənməsi metodları tapaq + +Modelin qurulmasında və istifadəsində etibarsızlığın aşkar olduğu real həyat ssenariləri haqqında düşünün. Başqa nələri nəzərə almalıyıq? + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/6/?loc=az) + +## Təkrarlayın və özünüz öyrənin + +Bu dərsdə siz maşın öyrənməsində ədalət və ədalətsizlik anlayışlarının bəzi əsaslarını öyrəndiniz. + +Mövzuları daha dərindən öyrənmək üçün bu seminara baxın: + +- Məsuliyyətli AI axtarışında: Besmira Nushi, Mehrnoosh Sameki və Amit Sharma tərəfindən praktikaya prinsiplərin gətirilməsi + +[![Məsuliyyətli AI alətləri: Məsul AI yaratmaq üçün açıq mənbəli çərçivə](https://img.youtube.com/vi/tGgJCrA-MZU/0.jpg)](https://www.youtube.com/watch?v=tGgJCrA-MZU "RAI (Məsuliyyətli AI) Toolbox: Məsuliyyətli AI yaratmaq üçün açıq mənbəli çərçivə") + +> 🎥 Videoya baxmaq üçün yuxarıdakı şəkilə klikləyin: RAI (Məsuliyyətli AI) Toolbox: Besmira Nushi, Mehrnoosh Sameki və Amit Sharma tərəfindən məsuliyyətli AI yaratmaq üçün açıq mənbə çərçivəsi + +Həmçinin oxuyun: + +- Microsoft-un RAI məlumat mərkəzi: [Məsuliyyətli AI məlumat mərkəzi – Microsoft AI](https://www.microsoft.com/ai/responsible-ai-resources?activetab=pivot1%3aprimaryr4) + +- Microsoft-un FATE tədqiqat qrupu: [FATE: Süni intellektdə ədalət, cavabdehlik, şəffaflıq və etika - Microsoft Research](https://www.microsoft.com/research/theme/fate/) + +RAI Toolbox: + +- [Məsuliyyətli AI Toolbox GitHub reposu](https://github.com/microsoft/responsible-ai-toolbox) + +Ədalətliliyi təmin etmək üçün Azure Machine Learning alətləri haqqında oxuyun: + +- [Azure Machine Learning](https://docs.microsoft.com/azure/machine-learning/concept-fairness-ml?WT.mc_id=academic-77952-leestott) + +## Tapşırıq + +[RAI Toolboxu kəşf edin](assignment.az.md) diff --git a/1-Introduction/3-fairness/translations/assignment.az.md b/1-Introduction/3-fairness/translations/assignment.az.md new file mode 100644 index 0000000000..f70d9bdf00 --- /dev/null +++ b/1-Introduction/3-fairness/translations/assignment.az.md @@ -0,0 +1,11 @@ +# RAI Toolboxu kəşf edin + +## Təlimatlar + +Bu dərsdə siz "data mühəndislərinə AI sistemlərini təhlil etmək və təkmilləşdirməkdə kömək etmək üçün açıq mənbəli, icma tərəfindən idarə olunan layihə" olan Responsible AI Toolbox haqqında öyrəndiniz. Bu tapşırıq üçün RAI Toolbox-ın [noutbuklarından](https://github.com/microsoft/responsible-ai-toolbox/blob/main/notebooks/responsibleaidashboard/getting-started.ipynb) birini araşdırın və tapıntılarınızı yazı və ya təqdimatda bildirin. + +## Rubrika + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | --------- | -------- | ----------------- | +| | Fairlearn sistemlərini, işlədilən notebooku və onun işlədilməsindən əldə edilən nəticələri müzakirə edən yazı və ya powerpoint təqdimatı təqdim olunub | Nəticəsi olmayan yazı təqdim olunmuşdur | Heç bir yazı təqdim olunmamışdır | diff --git a/1-Introduction/4-techniques-of-ML/translations/README.az.md b/1-Introduction/4-techniques-of-ML/translations/README.az.md new file mode 100644 index 0000000000..5f4961c7ae --- /dev/null +++ b/1-Introduction/4-techniques-of-ML/translations/README.az.md @@ -0,0 +1,120 @@ +# Maşın öyrənmə texnikaları + +Maşın öyrənmə modellərinin və onların istifadə etdiyi məlumatların qurulması, istifadəsi və saxlanılması prosesi bir çox digər proqramlaşdırma proseslərindən çox fərqli bir prosesdir. Bu dərsdə biz prosesin gizli tərəflərini aydınlaşdırıb bilməli olduğunuz əsas texnikaları təsvir edəcəyik. Öyrənəcəklərin: + +- Yüksək səviyyədə maşın öyrənməsinin əsasını təşkil edən prosesləri başa düşmək. +- "Modellər", "proqnozlar" və "təlim məlumatları" kimi əsas anlayışları kəşf etmək. + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/7/?loc=az) + +[![Yeni başlayanlar üçün ML- Maşın öyrənmə texnikaları](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Yeni başlayanlar üçün ML- Maşın öyrənmə texnikaları") + +> 🎥 Bu dərsin üzərindən keçən qısa video üçün yuxarıdakı şəkilin üzərinə klikləyin. + +## Giriş + +Yüksək səviyyədə maşın öyrənməsi (ML) prosesləri yaratmaq sənəti bir sıra addımlardan ibarətdir: + +1. **Sualla bağlı qərar verin**. Əksər ML prosesləri sadə şərti proqram və ya qaydalara əsaslanan mühərrik tərəfindən cavablandırıla bilinməyən bir sual verməklə başlayır. Bu suallar çox vaxt məlumat toplusuna əsaslanan proqnozlar ətrafında fırlanır. +2. **Məlumatları toplayın və hazırlayın**. Sualınıza cavab vermək üçün sizə data lazımdır. Məlumatlarınızın keyfiyyəti və bəzən kəmiyyəti ilkin sualınıza nə qədər yaxşı cavab verə biləcəyinizi müəyyən edəcək. Məlumatların vizuallaşdırılması bu mərhələnin vacib aspektidir. Bu mərhələ həmçinin model yaratmaq üçün datanın öyrətmə və test qrupuna bölünməsini də əhatə edir. +3. **Təlim üsulunu seçin**. Sualınızdan və məlumatların xarakterindən asılı olaraq məlumatlarınızı ən yaxşı şəkildə əks etdirmək və ona qarşı dəqiq proqnozlar vermək üçün modeli necə öyrətmək istədiyinizi seçməlisiniz. Bu, ML prosesinizin xüsusi təcrübə və çox vaxt xeyli miqdarda təcrübə tələb edən hissəsidir. +4. **Modeli öyrədin**. Öyrətmə datadan istifadə edərək siz məlumatlar daxilində qanunauyğunluqları tapmaq üçün müxtəlif alqoritmlər istifadə edəcəksiniz. Model daha yaxşı bir model yaratmaq üçün məlumatların müəyyən hissələrini digərləri üzərində imtiyaz vermək üçün tənzimlənə bilən daxili çəkilərdən istifadə edə bilər. +5. **Modeli qiymətləndirin**. Modelin necə işlədiyini görmək üçün datasetdən əvvəl istifadə edilməmiş hissələri (test datanı) istifadə edirsiniz. +6. **Parametrlərin tənzimlənməsi**. Modelinizin performansına əsaslanaraq, modeli daha yaxşı öyrətmək üçün istifadə olunan alqoritmlərin parametrlərini dəyişərək prosesi yenidən təkrar edə bilərsiniz. +7. **Proqnoz vermək**. Modelinizin dəqiqliyini yoxlamaq üçün yeni giriş datalardan istifadə edin. + +## Hansı sualı vermək lazımdır + +Kompüterlər məlumatlarda gizli modelləri aşkar etməkdə xüsusilə bacarıqlıdırlar. Bu yardım proqramı şərti əsaslı qaydalar mühərriki yaratmaqla asanlıqla cavablandırıla bilinməyən müəyyən bir mövzular haqqında sualları olan tədqiqatçılar üçün çox faydalıdır. Məsələn, bir tapşırığı nəzərə alsaq, data mühəndisi siqaret çəkənlərə qarşı siqaret çəkməyənlərin ölümü ilə bağlı özü yaratdığı model qura bilər. + +Bir çox digər dəyişənlər tənliyə gətirildikdə ML modeli keçmiş sağlamlıq tarixinə əsaslanaraq gələcək ölüm ehtimalını proqnozlaşdırmaq üçün daha səmərəli ola bilər. Daha pozitiv bir nümunə, enlik, uzunluq, iqlim dəyişikliyi, okeana yaxınlıq, cərəyanların axınının nümunələri və s. daxil olan məlumatlara əsaslanaraq müəyyən bir yerdə aprel ayı üçün hava proqnozları verilə bilər. + +✅ [Bu təqdimatda](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) ML istifadə edilərək keçmiş hava məlumatları analizi istifadə edilərək hava modelinin qurulmasını təsvir edilir. + +## Model qurmaqdan əvvəl tapşırıqlar + +Modelinizi qurmağa başlamazdan əvvəl yerinə yetirməli olduğunuz bir neçə tapşırıq var. Sualınızı yoxlamaq və modelin proqnozlarına əsaslanan fərziyyə formalaşdırmaq üçün bir neçə elementi müəyyən edib sazlamalısınız. + +### Data + +Sualınıza hər cür əminliklə cavab verə bilmək üçün sizə düzgün tipdə və çox miqdarda məlumat lazımdır. Bu nöqtədə etməli olduğunuz iki şey var: + +- **Data toplayın**. Datanın təhlilində ədalətlə bağlı əvvəlki dərsi nəzərə alaraq ehtiyatla toplayın. Bu datanın mənbələrində malik ola biləcək hər hansı bir qərəzdən xəbərdar olun və mənşəyini sənədləşdirin. + +- **Data hazırlayın**. Datanın hazırlanması prosesində bir neçə addım var. Müxtəlif mənbələrdən gəldiyi üçün datanı toplamaq və normallaşdırmaq lazım ola bilər. Verilənlərin keyfiyyətini və kəmiyyətini müxtəlif üsullarla yaxşılaşdıra bilərsiniz, misal üçün söz kimi yazılmış ədədləri rəqəmlərə keçirmək ([Klasterləşdirmə](../../../5-Clustering/1-Visualize/translations/README.az.md) bölməsində etdiyimiz kimi). Siz həmçinin əldə olunmuş məlumatlardan yeni məlumatlar da yarada bilərsiniz. ([Qruplaşdırma](../../../4-Classification/1-Introduction/translations/README.az.md) bölməsində etdiyimiz kimi). Datanı təmizləyə və dəyişə bilərsiniz ([Veb tətbiq](../../../3-Web-App/translations/README.az.md) dərsində etdiyimiz kimi). Yekun olaraq siz öyrətmə texnikasından asılı olaraq məlumatları təsadüfi seçimlərlə əvəzləyə və ya yerlərini qarışdıra bilərsiniz. + +✅ Datanı yığdıqdan və emal etdikdən sonra vaxt ayırıb fikrinizdə tutduğunuz suala uyğun işləri gördüyünüzdən əmin olun. [Klasterləşdirmə](../../../5-Clustering/1-Visualize/translations/README.az.md) dərslərində öyrəndiyimiz kimi bəzən yığdığımız məlumatlar bizim tapşırığımız üçün yaxşı nəticələr göstərməyə bilər! + +### Xüsusiyyətlər və hədəf + +[Xüsusiyyət](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) datanızın ölçülə bilən parametridir. Bir çox verilənlər bazasında o, 'tarix' 'ölçü' və ya 'rəng' adları ilə sütun başlığı kimi ifadə edilir. Kodda adətən `X` kimi təqdim olunan xüsusiyyət dəyişəniniz modeli öyrətmək üçün istifadə olunacaq giriş dəyişənini təmsil edir. + +Hədəf, proqnozlaşdırmağa çalışdığınız bir şeydir. Kodda adətən `y` kimi təqdim olunan hədəf məlumatlarınız haqqında soruşmağa çalışdığınız sualın cavabını təmsil edir: dekabr ayında hansı **rəng** balqabaq ən ucuz olacaq? San Fransiskoda hansı məhəllələrdə ən yaxşı daşınmaz əmlakın **qiyməti** neçə olacaq? Bəzən hədəfə etiket atributu da deyilir. + +### Xüsusiyyət üçün dəyişən seçmək + +🎓 **Xüsusiyyət seçimi və xüsusiyyətlərin çıxarılması**. Model qurarkən hansı dəyişəni seçmək lazım olduğunu necə bilirsiniz? Çox güman ki, ən effektiv model üçün düzgün dəyişənləri seçmək üçün **xüsusiyyət seçimi** və ya **xüsusiyyət çıxarılması** prosesindən keçəcəksiniz. Bununla belə, onlar eyni şey deyillər: "**Xüsusiyyətlərin çıxarılması** orijinal xüsusiyyətlərin funksiyalarından yeni xüsusiyyətlər yaradır, halbuki **xüsusiyyət seçimi** xüsusiyyətlərin alt dəstini qaytarır." ([mənbə](https://wikipedia.org/wiki/Feature_selection)) + +### Data vizuallaşdırılması + +Data mühəndisinin alət dəstinin mühüm cəhəti Seaborn və ya MatPlotLib kimi bir neçə mükəmməl kitabxanadan istifadə edərək məlumatları vizuallaşdırmaq gücüdür. Verilənlərinizi vizual şəkildə təmsil etmək sizə istifadə edə biləcəyiniz gizli uyğunluqları aşkar etməyə imkan verə bilər. Vizuallaşdırmalarınız sizə qərəzli və ya balanssız məlumatları da aşkar etməyə kömək edə bilər ([Qruplaşdırma](../../../4-Classification/1-Introduction/translations/README.az.md) bölməsində öyrəndiyimiz kimi). + + +### Dataseti bölün + +Təlimdən əvvəl verilənlər bazanızı məlumatları yaxşı təmsil etməsini ödəyən qeyri-bərabər ölçülü iki və ya daha çox hissəyə bölmək lazımdır. + +- **Öyrətmə**. Modelinizi öyrətmək üçün uyğun seçilmiş məlumat dəstinin bir hissəsidir. Bu dəst orijinal datasetin əksəriyyətini təşkil edir. +- **Test**. Test verilənlər toplusu qurulmuş modelin performansını təsdiqləmək üçün istifadə etdiyiniz, adətən orijinal məlumatlardan seçilən müstəqil datasetdir. +- **Doğrulama**. Doğrulama dəsti modeli təkmilləşdirmək üçün modelin hiperparametrlərini və ya arxitekturasını tənzimləmək üçün istifadə etdiyiniz daha kiçik müstəqil nümunələr qrupudur. Məlumatınızın ölçüsündən və verdiyiniz sualdan asılı olaraq bu üçüncü dəsti qurmağa ehtiyacınız olmaya bilər ([Zaman seriyalarının proqnozlaşdırılması](../../../7-TimeSeries/1-Introduction/translations/README.az.md) bölməsində qeyd etdiyimiz kimi). + +## Model qurmaq + +Sizin hədəfiniz öyrətmə datasından və ya datanın statistik təsvirindən istifadə edərək model qurmaq və onu müxtəlif alqoritmlərlə **öyrətməkdir**. Modelin öyrədilməsi onun məlumatlara əlçatan edir və imkan verir ki, başa düşdüyü və kəşf etdiyi qanunauyğunları yoxlasın, qəbul etsin və ya imtina etsin. + +### Öyrənmə üsulunu seçin + +Sualınızdan və məlumatlarınızın xarakterindən asılı olaraq, siz onu öyrətmək üçün bir üsul seçəcəksiniz. Bu kursda istifadə etdiyimiz [Scikit-learn's sənədləri](https://scikit-learn.org/stable/user_guide.html) ilə addımlayaraq siz bir modeli öyrətməyin bir çox yolunu araşdıra bilərsiniz. Təcrübənizdən asılı olaraq ən yaxşı modeli yaratmaq üçün bir neçə fərqli metodu sınamalı ola bilərsiniz. Çox güman ki, siz data mühəndislərinin modellərin performansını ölçdükləri yollardan keçəcəksiniz. Bunlara modeli istifadə edilməmiş datalarla öyrətmə, dəqiqliyin yoxlama, qərəz və digər keyfiyyəti aşağı sala biləcək problemləri aşkarlama yolları aiddir. Bunların sonunda isə siz ən uyğun öyrənmə metodunu seçmiş olacaqsınız. + +### Modeli öyrətmək + +Öyrətmə datanızı hazır tutmaqla siz modelinizi "uyğunlaşdırmağa" hazırsınız. Siz görəcəksiniz ki, bir çox ML kitabxanalarında 'model.fit' funksiyası var - məhz burada siz xüsusiyyət dəyişənlərini məlumat toplusu kimi (adətən 'X') və hədəf dəyişənini (adətən 'y') ötürəcəksiniz. + +### Modeli qiymətləndirin + +Öyrətmə prosesi başa çatdıqdan sonra (böyük modeli hazırlamaq üçün bir çox təkrarlamalar və ya “epoxalar” tələb oluna bilər), siz modelin keyfiyyətini ölçmək üçün test məlumatlarından istifadə edə biləcəksiniz. Bu məlumat modelin əvvəllər təhlil etmədiyi ilkin məlumatların bir hissəsidir. Siz modelinizin keyfiyyətinə dair göstəricilər cədvəlini çap edə bilərsiniz. + +🎓 **Modelin uyğunlaşdırılması** + +Maşın öyrənməsi kontekstində model uyğunluğu modelin əsas funksiyasının dəqiqliyinə istinad edir. Çünki burada model tanış olmayan məlumatları təhlil etməyə çalışır. + +🎓 **Az uyğunlaşdırılma** və **çox uyğunlaşdırılma** modelin keyfiyyətini aşağı salan ümumi problemlərdir, burada model ya çox uyğundur, ya da kifayət qədər deyildir. Bunlar modelin təxminlərini ya əvvəlki məlumalarla çox yaxın etmətə çalışır, ya da təlim məlumatlarından uzaq edir. Çox uyğunlaşdırılmış modellər təlim məlumatlarının xüsusiyyətlərini və xətalı hissələri çox yaxşı öyrənmişdir. Az uyğunlaşdırılmış modelin dəqiqliyi isə həm təlim məlumatlarını az dəqiqliklə öyrənmiş qədər, həm də heç öyrənməmiş qədər az olur. + +![çox uyğunlaşdırılmış model](../images/overfitting.png) +> [Jen Looper](https://twitter.com/jenlooper) tərəfindən infoqrafik + +## Parametrlərin tənzimlənməsi + +İlkin öyrətmə tamamlandıqdan sonra modelin keyfiyyətini müşahidə edin və onun “hiperparametrlərini” tənzimləməklə təkmilləşdirməyi düşünün. Proses haqqında bu [sənədlərdən](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) ətraflı oxuya bilərsiniz. + +## Proqnoz + +Bu anda siz modelin dəqiqliyini yoxlamaq üçün tamamilə yeni məlumatlardan istifadə edə bilərsiniz. "Tətbiqi" ML konfiqurasiyalarında siz veb mühitdə istifadəçilərdən giriş məlumatlarını alaraq dəyişənlər kimi modelinizə daxil edə və nəticəni hesablaya bilərsiniz. + +Bu dərslərdə siz data mühəndisinin istifadə etdiyi jestlərin hamısını - hazırlama, qurma, sınaqdan keçirmə, qiymətləndirmə və proqnozlaşdırma üçün bu addımlardan necə istifadə edəcəyinizi kəşf edəcəksiniz və bu sizin ML mühəndisi olmaq üçün öyrənmə səyahətinizdə kömək edəcək. + +--- + +## 🚀 Məşğələ + +ML təcrübəçisinin addımlarını əks etdirən proses sxemini çəkin. Hazırda prosesin gedişində özünüzü harada görürsünüz? Harada çətinlik çəkəcəyinizi proqnozlaşdırırsınız? Sizə asan görünən nədir? + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/8/?loc=az) + +## Təkrarlayın və özünüz öyrənin + +İnternetdə data mühəndisi ilə gündəlik iş həyatları müzakirə edilən müsahibələrini axtarın. [Burada](https://www.youtube.com/watch?v=Z3IjgbbCEfs) biri var. + +## Tapşırıq + +[Data mühəndisi ilə müsahibə](assignment.az.md) \ No newline at end of file diff --git a/1-Introduction/4-techniques-of-ML/translations/assignment.az.md b/1-Introduction/4-techniques-of-ML/translations/assignment.az.md new file mode 100644 index 0000000000..e66bc55c64 --- /dev/null +++ b/1-Introduction/4-techniques-of-ML/translations/assignment.az.md @@ -0,0 +1,11 @@ +# Data mühəndisi ilə müsahibə + +## Təlimatlar + +Öz şirkətində, dost qruplarında və ya qrup yoldaşlarından peşəkar olaraq data mühəndisi kimi işləyən kiminləsə danış. Onların gündəlik işləri barədə 500 sözlük yazı yaz. Onlar kiçik sahədə ixtisaslaşıblar, yoxsa bir çox sahələri əhatə edirlər? + +## Rubrika + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | --------- | -------- | ----------------- | +| | Yazı düzgün uzunluqdadır, mənbələr qeyd olunub və .doc faylı kimi təqdim olunub | Yazı tələb olunan uzunluqda deyil və ya zəif hazırlanıb | Yazı təqdim olunmayıb | \ No newline at end of file diff --git a/1-Introduction/translations/README.az.md b/1-Introduction/translations/README.az.md new file mode 100644 index 0000000000..2d665a684c --- /dev/null +++ b/1-Introduction/translations/README.az.md @@ -0,0 +1,23 @@ +# Maşın öyrənməsinə giriş + +Kurikulumun bu hissəsində siz maşın öyrənməsi sahəsinin əsas fundamental konseptləri, onların tarixi və tədqiqatçıların onlarla işləmək üçün istifadə etdikləri texnikalarla tanış olacaqsınız. Gəlin Maşın Öyrənməsinin (ML) bu yeni dünyasını birlikdə kəşf edək! + +![globe](../images/globe.jpg) +>Unsplash platformasında Bill Oxford tərəfindən təsvir + +### Dərslər + +1. [Maşın öyrənməsinə giriş](../1-intro-to-ML/translations/README.az.md) +1. [Maşın öyrənmə tarixi](../2-history-of-ML/translations/README.az.md) +1. [Maşın öyrənmə və ədalət](../3-fairness/translations/README.az.md) +1. [Maşın öyrənmə texnikaları](../4-techniques-of-ML/translations/README.az.md) + +### Təşəkkürlər + +"Maşın öyrənməsinə giriş" [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan), [Ornella Altunyan](https://twitter.com/ornelladotcom) və [Jen Looper](https://twitter.com/jenlooper) daxil olan komanda tərəfindən ♥️ lə yazılmışdır + +"Maşın öyrənməsi tarixi" [Jen Looper](https://twitter.com/jenlooper) və [Amy Boyd](https://twitter.com/AmyKateNicho) tərəfindən ♥️ lə yazılmışdır + +"Maşın öyrənməsi və ədalət" [Tomomi Imura](https://twitter.com/girliemac) tərəfindən ♥️ lə yazılmışdır + +"Maşın öyrənməsi texnikaları" [Jen Looper](https://twitter.com/jenlooper) və [Chris Noring](https://twitter.com/softchris) tərəfindən ♥️ lə yazılmışdır \ No newline at end of file diff --git a/2-Regression/1-Tools/translations/README.az.md b/2-Regression/1-Tools/translations/README.az.md new file mode 100644 index 0000000000..4eeaa7a767 --- /dev/null +++ b/2-Regression/1-Tools/translations/README.az.md @@ -0,0 +1,224 @@ +# Reqressiya modellərinə Python və SciKit-learn ilə giriş + +![Reqressiyaların eskizlərlə xülasəsi](../../../sketchnotes/ml-regression.png) + +> [Tomomi Imura](https://www.twitter.com/girlie_mac) tərəfindən çəkilmiş eskiz + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/9/?loc=az) + +### [Bu dərs R proqramlaşdırma dili ilə də mövcuddur!](../solution/R/lesson_1-R.ipynb) + +## Giriş + +Bu 4 dərsdə siz reqressiya modellərinin necə qurulmasını öyrənəcəksiniz. Qısa olaraq bu modellərin nə üçün olduğunu müzakirə edəcəyik. Amma ilk öncə, prosesi başlatmaq üçün lazım olan bütün alətlərinizin olduğundan əmin olun. + +Bu dərsdə siz: +- Kompüterinizi lokal maşın öyrənməsi tapşırıqlarını icrası üçün konfiqurasiya etməyi +- Jupyter notbuklarla işləməyi +- SciKit-learn quraşdırmağı və istifadə etməyi +- Tətbiqi tapşırıqlarla xətti reqressiyanı kəşf etməyi + +öyrənəcəksiniz. + +## Quraşdırılma və Konfiqurasiyalar + +[![Yeni başlayanlar üçün maşın öyrənməsi - Maşın Öyrənməsi modellərini qurmaq üçün alətlərinizi hazır vəziyyətə gətirin](https://img.youtube.com/vi/-DfeD2k2Kj0/0.jpg)](https://youtu.be/-DfeD2k2Kj0 "Yeni başlayanlar üçün maşın öyrənməsi - Maşın Öyrənməsi modellərini qurmaq üçün alətlərinizi hazır vəziyyətə gətirin") + +> 🎥 Kompüterin ML üçün konfiqurasiyasını izah edən qısa video üçün yuxarıdakı şəkilin üzərinə klikləyin. + +1. **Python yükləyin**. Kompüterinizə [Python](https://www.python.org/downloads/) yükləndiyinizdən əmin olun. Siz data elmi və maşın öyrənməsi tapşırıqlarının çoxu üçün Python-dan istifadə edəcəksiniz. Bəzi istifadəçilər üçün quraşdırmanı daha asan etmək məqsədilə yaradılmış faydalı [Python Kodlaşdırma Paketləri](https://code.visualstudio.com/learn/educators/installers?WT.mc_id=academic-77952-leestott) də mövcuddur. + + Amma istifadəsindən asılı olaraq Python üçün bəzən bir, bəzən isə digər versiyası tələb oluna bilər. Buna görə, [virtual mühitdə](https://docs.python.org/3/library/venv.html) işləmək daha məqsədəuyğundur. + +2. **Visual Studio Code yükləyin**. Kompüterinizə [Visual Studio Code](https://www.python.org/downloads/) yükləndiyindən əmin olun. Sadə formada [Visual Studio Code yükləmək](https://code.visualstudio.com/) üçün bu təlimatları izləyə bilərsiniz. Bu kursda Python-u Visual Studio Code vasitəsilə istifadə edəcəyiniz üçün, ola bilər ki, Visual Studio Code-u Python proqramlaşdırma üçün necə [konfiqurasiya](https://docs.microsoft.com/learn/modules/python-install-vscode?WT.mc_id=academic-77952-leestott) edəcəyinizi öyrənmək istəyəsiniz. + + > Bu [öyrənmə modulları](https://docs.microsoft.com/users/jenlooper-2911/collections/mp1pagggd5qrq7?WT.mc_id=academic-77952-leestott) siyahısından istifadə etməklə özünüzü Python-la tanış edin. + > + > [![Visual Studio Code-la Python quraşdırın](https://img.youtube.com/vi/yyQM70vi7V8/0.jpg)](https://youtu.be/yyQM70vi7V8 "Visual Studio Code-la Python quraşdırın") + > + > 🎥 Python-un Visual Studio Code-da istifadəsi ilə bağlı video üçün yuxarıdakı şəkilə klikləyin. + +3. **Scikit-learn yükləyin**. [Bu təlimatları](https://scikit-learn.org/stable/install.html) izləyərək yükləyin. Python 3-ü istifadə etdiyinizdən əmin olmalı olduğunuz üçün, virtual mühitdən istifadə etməyinizi tövsiyyə edirik. Qeyd olaraq onu deyək ki, əgər bu kitabxananı M prosessorlu Mac-lər üçün yükləyirsinizsə, səhifənin yuxarısında qeyd olunmuş linkdə xüsusi təlimatlar mövcuddur. + +4. **Jupyter Notebooks yükləyin**. [Jupyter paketini yükləməyiniz](https://pypi.org/project/jupyter/) lazım olacaq. + +## ML tərtibatı üçün mühitiniz + +Python kodları yazmaq və maşın öyrənməsi modellərini qurmanız üçün siz **notbuklardan** istifadə edəcəksiniz. Bu fayl tipi data mühəndisləri arasında geniş yayılmış alətdir və `.ipynb` uzantısı və yaxud suffiksi ilə ayırd oluna bilirlər. + +Notbuklar proqramçılara kod yazmaq ilə yanaşı, həm kodda qeydlər etmək, həm də kodla bağlı dokumentasiya yazmağa imkan verdiyi üçün təcrübi və ya araşdırma yönümlü proyektlər üçün çox yararlı olan interaktiv bir mühitdir. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Maşın Öyrənməsi modellərini yaratmağa başlamaq üçün Jupyter Notebooks quraşdırın](https://img.youtube.com/vi/7E-jC8FLA2E/0.jpg)](https://youtu.be/7E-jC8FLA2E "Yeni başlayanlar üçün maşın öyrənməsi - Maşın Öyrənməsi modellərini yaratmağa başlamaq üçün Jupyter Notebooks quraşdırın") + +> 🎥 Bu tapşırığın üzərindən keçən qısa video üçün yuxarıdakı şəkilin üzərinə klikləyin. + +### Tapşırıq - notbuklarla iş + +Bu qovluqda siz _notebook.ipynb_ adlı faylı görəcəksiniz. + +1. _notebook.ipynb_ faylını Visual Studio Code-da açın. + + Jupyter serveri Python 3+ ilə birgə başlayacaq. Dəftərçənin içərisində kod hissələrini icra edəcək `başlat` sahəsini görəcəksiniz. "Play" düyməsinə bənzəyən ikonu seçərək kod bloklarını icra edə bilərsiniz. + +2. `md` simgəsini seçin və əvvəlcə "markdown", ardınca da **# Notbuka xoş gəlmisiniz** mətnini əlavə edin. + + Daha sonra, bir az Python kodunuzu əlavə edin. + +3. Kod blokunda **print('hello notebook')** yazın. +4. Kodu başlatmaq üçün ox simgəsini seçin. + + Bu ifadə ekranda çap olunacaq: + + ```output + hello notebook + ``` + +![Açıq notbuk ilə VS Code](../images/notebook.jpg) + +Notbuku sənədləşdirmək üçün öz kodunuza rəylər əlavə edə bilərsiniz. + +✅ Bir dəqiqəliyinə veb proqramçısı ilə data mühitinin iş mühitinin necə fərqləndiyi barəsində düşünün. + +## Scikit-learn ilə işin icrası + +Artıq lokal mühitinizi quraşdırdığınız və özünüzü Jupyter notbuklarına öyrəşdirdiyiniz üçün, keçək özümüzü Scikit-learn-lə(`science` sözündəki `sci` kimi tələffüz edin) də tanış edək. Scikit-learn ML tapşırıqlarını həll etmənizdə köməkçi olacaq [geniş API](https://scikit-learn.org/stable/modules/classes.html#api-ref) təqdim edir. + +[Vebsaytlarına](https://scikit-learn.org/stable/getting_started.html) görə, "Scikit-learn açıq mənbə lisenziyalı, nəzarətli və nəzarətsiz öyrənməni dəstəkləyən maşın öyrənməsi kitabxanasıdır. O həmçinin model uyğunlaşdırılması, datanın ön-emalı, model seçilməsi və dəyərləndirilməsi kimi bir çox alətləri də təqdim edir. + +Bu kursda siz, bizim 'ənənəvi maşın öyrənməsi' adlandırdığımız tapşırıqları maşın öyrənməsi modelləri qurmaqla həll etmək üçün Scikit-learn və digər alətlərdən istifadə edəcəksiniz. + +Scikit-learn, modelləri qurmaq və onların istifadəyə yararlılığının dəyərləndirməsini asanlaşdırır. O ədədi məlumatlar üzərinə fokusludur və öyrənmə aləti olaraq istifadə olunması üçün bir neçə hazır məlumat massivinə məxsusdur. Əlavə olaraq daxilində tələbələrin təcrübə etməsi üçün öncədən qurulmuş bir neçə model də mövcuddur. Gəlin əvvəlcədən paketlənmiş dataların yüklənməsini və bəzi əsas datalarla Scikit-learn ilə öncədən qurulmuş qiymətləndirmə ML modelindən istifadə edilməsini araşdıraq. + +## Tapşırıq - sizin ilk Scikit-learn notbukunuz + +> Bu təlimat Scikit-learn-ün vebsaytındakı [xətti reqressiya modelindən](https://scikit-learn.org/stable/auto_examples/linear_model/plot_ols.html#sphx-glr-auto-examples-linear-model-plot-ols-py) ilhamlanmışdır. + +[![Yeni başlayanlar üçün ML - Python-da ilk xətti reqressiya proyektiniz](https://img.youtube.com/vi/2xkXL5EUpS0/0.jpg)](https://youtu.be/2xkXL5EUpS0 "Yeni başlayanlar üçün ML - Python-da ilk xətti reqressiya proyektiniz") + +> 🎥 Bu tapşırığın üzərindən keçən qısa video üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Bu dərslə əlaqəli olan _notebook.ipynb_ faylında 'zibil qutusu' simgəsinə klikləyərək bütün xanaları təmizləyin. + +Bu bölmədə siz Scikit-learn-də öyrənmə məqsədi üçün əvvəlcədən hazırlanmış şəkərli diabet xəstələri ilə bağlı olan kiçik data seti ilə işləyəcəksiniz. Maşın öyrənməsi modelləri dəyişənlərin kombinasiyası əsasında hansı xəstələrin müalicəyə daha yaxşı cavab verə biləcəyini müəyyən etməyə kömək edə bilər. Hətta ən sadə reqressiya modeli belə vizuallaşdırıldıqda nəzəri klinik sınaqlarınızı təşkil etməkdə sizə kömək edəcək dəyişənlər haqqında məlumat verə bilər. + +✅ Reqressiya metodlarının bir çox növü mövcud olsa da, hansını seçməyiniz axtardığınız cavabdan asıldır. Əgər insanın yaşına uyğun boyunun hündürlüyünü təxmin etmək istəyirsinizsə, bu məlumat ***ədədi dəyərə** malik olduğu üçün xətti reqressiyadan istifadə edə bilərsiniz. Yox əgər hansısa mətbəxin veqan hesab edilib-edilməməli olduğunu tapmaqla maraqlanırsınızsa, deməli **kateqoriya mənimsədilməsini** axtarırsınız. Bunun üçün logistik reqressiyadan istifadə edə bilərsiniz. Logistik reqressiyalar haqqında sonradan daha çox öyrənəcəksiniz. Məlumatlarla bağlı soruşa biləcəyiniz suallar və bu metodlardan hansının daha uyğun ola biləcəyi ilə bağlı isə biraz düşünün. + +Gəlin bu tapşırıqla başlayaq. + +### Kitabxanaları köçürün + +Bu tapşırıq üçün biz bəzi kitabxanaları köçürəcəyik: +- **matplotlib** lazımlı [qrafikləşdirmə alətidir](https://matplotlib.org/) və biz ondan xətti qrafikləri yaratmaq üçün istifadə edəcəyik. +- **numpy**. [numpy](https://numpy.org/doc/stable/user/whatisnumpy.html) Python-da ədədi dataların emalı üçün faydalı bir kitabxanadır. +- **sklearn**. Bu isə [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) kitabxanasıdır. + +Tapşırıqda sizə kömək olması üçün kitabxanalardan bəzilərini köçürün. + +1. Aşağıdakı kodu yazaraq köçürmələri edək: + + ```python + import matplotlib.pyplot as plt + import numpy as np + from sklearn import datasets, linear_model, model_selection + ``` + + Yuxarıda siz `matplotlib`-i, `numpy`-ı və `sklearn`-dən `datasets`, `linear_model` və `model_selection`-ı köçürürsünüz. `model_selection` datanı öyrədilmə və test massivlərinə bölmək üçün istifadə olunur. + +### Şəkərli diabet data seti + +Öncədən qurulmuş olan [şəkərli diabet data setinə](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) 10 xüsusiyyət dəyişəni olmaqla bu xəstəliklə bağlı 442 nümunə daxildir. Xüsusiyyət dəyişənlərinin bəziləri aşağıdakılardır: +- age: illər ilə yaş +- bmi: bədənin çəki indeksi +- bp: eortalama qan təzyiqi +- s1 tc: T-hüceyrələri (ağ qan hüceyrələrinin növü) + +✅ Bu data setinə şəkərli diabet haqqında araşdırma etmək üçün önəmli bir xüsusiyyət dəyişəni olaraq 'cins' anlayışı da daxildir. Əksər tibbi data setinə bu tip ikili sinifləndirmə daxil edilir. Bir qədər bu formada kateqoriyalaşdırılmanın əhalinin bir qismini müalicələrdən necə kənarda tuta biləcəyi barəsində düşünün. + +İndi isə, X və y datalarını yükləyək. + +> 🎓 Yadda saxlayın ki, bu nəzarətli öyrənmə olduğuna görə 'y' adlı hədəfə ehtiyacımız var. + +Yeni kod xanasında, şəkərli diabet data setini `load_diabetes()` çağıraraq yükləyin. Verilən `return_X_y=True`, `X`-in bir data matrisi, `y`-in isə reqressiya hədəfi olacağını göstərir. + +1. Data matrisinin formasını və ilk elementini göstərmək üçün bir neçə "print" komandası əlavə edin: + + ```python + X, y = datasets.load_diabetes(return_X_y=True) + print(X.shape) + print(X[0]) + ``` + + Cavab olaraq aldığınız şey - *tuple* adlanır. Etdiyiniz isə *tuple*-un ilk iki dəyərini sıra ilə `X` və `y`-ə mənimsətməkdir. Tuple haqqında ətraflı [buradan](https://wikipedia.org/wiki/Tuple) öyrənin. + + Gördüyünüz kimi bu məlumat, 10 elementli massivi olan 442 sətirdən ibarətdir: + + ```text + (442, 10) + [ 0.03807591 0.05068012 0.06169621 0.02187235 -0.0442235 -0.03482076 + -0.04340085 -0.00259226 0.01990842 -0.01764613] + ``` + + ✅ Data və reqressiya hədəfi arasındakı əlaqə barəsində biraz düşünün. Xətti reqressiya X xüsusiyyəti ilə y dəyişəni arasındakı əlaqəni təxmin edir. Dokumentasiyada şəkərli diabet data setindəki [hədəfi](https://scikit-learn.org/stable/datasets/toy_dataset.html#diabetes-dataset) tapa bilərsiniz? Bu data massivi hədəf nəzərdə tutulduqda nəyi təsvir edir? + +2. Növbəti olaraq qrafiki təsvir üçün bu data setinin 3-cü sütununu seçin. Bunu `:` operatoru ilə bütün sıraları seçərək və daha sonra `index(2)` ilə bütün sütunları seçərək edə bilərsiniz. Əlavə olaraq siz datanı qrafiki təsvir üçün tələb olunduğuna görə `reshape(n_rows, n_columns)` istifadə edərək 2 ölçülü massiv formasına də sala bilərsiniz. + + ```python + X = X[:, 2] + X = X.reshape((-1,1)) + ``` + + ✅ İstənilən vaxt datanın quruluşunu yoxlamaq üçün məlumatı ekrana çap edə bilərsiniz. + +3. Artıq qrafikləşdirilə bilən datanız olduğu üçün maşının bu data setindəki rəqəmlər arasındakı məntiqi bölgünü təyin etməyə yardımçı ola bilib-bilmədiyini görə bilərsiniz. Bunun üçün hər iki (X) və hədəf (y) datalarını test və öyrətmə setlərinə ayırmağınıza ehtiyacınız var. Scikit-learn-ün bunu etmək üçün sadə bir yolu var; istənilən nöqtədə test datanızı ayıra bilərsiniz. + + ```python + X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.33) + ``` + +4. Artıq modelinizi öyrətmək üçün hazırsınız! Xətti reqressiya modelinizi yükləyin və onu `model.fit()` istifadə edərək, X və y öyrətmə massivləri ilə öyrədin: + + ```python + model = linear_model.LinearRegression() + model.fit(X_train, y_train) + ``` + + ✅ `model.fit()` TensorFlow kimi birçox ML kitabxanasında görə biləcəyiniz bir funksiyadır. + +5. Daha sonra, test datasından və `predict()` funksiyasından istifadə etməklə proqnoz yaradın. Bu proqnoz data qrupları arasındakı xəttin çəkilməsi üçün istifadə olunacaq. + + ```python + y_pred = model.predict(X_test) + ``` + +6. Artıq datanı qrafiklə göstərməyin vaxtıdır. Matplotlib bu tapşırıq üçün çox uyğun bir alətdir. Bütün X və y test məlumatlarının paylanma qrafikini yaradın və modelin data qrupları arasında ən uyğun yerə xətti çəkmək üçün proqnozdan istifadə edin. + + ```python + plt.scatter(X_test, y_test, color='black') + plt.plot(X_test, y_pred, color='blue', linewidth=3) + plt.xlabel('Scaled BMIs') + plt.ylabel('Disease Progression') + plt.title('A Graph Plot Showing Diabetes Progression Against BMI') + plt.show() + ``` + + ![şəkərli diabetlə bağlı nöqtələri göstərən paylanma qrafiki](../images/scatterplot.png) + + ✅ Bu hissədə nə baş verdiyi barədə biraz düşünün. Düz xətt çoxlu kiçik data nöqtələrinin arasından keçir. Amma tam olaraq nə baş verir? Yeni, görünməz məlumat nöqtəsinin qrafikin y oxuna nisbətən harada olacağını proqnozlaşdırmaq üçün bu xəttdən necə istifadə edə biləcəyinizi düşünə bilirsinizmi? Bu modelin praktiki istifadəsini sözlə ifadə etməyə çalışın. + +İlk reqressiya modelinizi qurduğunuz, onunla proqnoz yaradıb və təsvir etdiyiniz üçün təbriklər! + +## 🚀 Məşğələ + +Bu data setindən fərqli bir dəyişən üçün qrafik çəkin. İpucu: bu sətirə düzəliş edin: `X = X[:,2]`. Data massivinin hədəfi verilmək şərti ilə şəkərli diabetin xəstəlik olaraq inkişafı ilə bağlı nələri tapa bilərsiniz? + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/10/?loc=az) + +## Təkrarlayın və özünüz öyrənin + +Bu təlimatda çoxdəyişənli və yaxud çoxlu xətti reqressiya yerinə,sadə xətti reqressiya ilə işlədiniz. Bu metodlar arasındakı fərqlər barəsində oxuyun və ya [bu videoya](https://www.coursera.org/lecture/quantifying-relationships-regression-models/linear-vs-nonlinear-categorical-variables-ai2Ef) nəzər salın. + +Reqressiya konsepti haqqında oxuyun və bu texnika vasitəsilə hansı tip suallara cavab tapıla bildiyi barəsində düşünün. Anlayışınızı dərinləşdirmək üçün bu [təlimatı](https://docs.microsoft.com/learn/modules/train-evaluate-regression-models?WT.mc_id=academic-77952-leestott) keçin. + +## Tapşırıq + +[Fərqli bir data seti](assignment.az.md) \ No newline at end of file diff --git a/2-Regression/1-Tools/translations/assignment.az.md b/2-Regression/1-Tools/translations/assignment.az.md new file mode 100644 index 0000000000..c269a9fb6d --- /dev/null +++ b/2-Regression/1-Tools/translations/assignment.az.md @@ -0,0 +1,13 @@ +# Scikit-learn ilə reqressiya + +## Təlimatlar + +Scikit-learn-dəki [Linnerud data massivinə](https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_linnerud.html#sklearn.datasets.load_linnerud) nəzər salın. Bu data massivinin bir neçə [hədəfi](https://scikit-learn.org/stable/datasets/toy_dataset.html#linnerrud-dataset) mövcuddur: 'O fitnes klubundakı 20 orta yaşlı kişidən toplanmış 3 tapşırıq(data) və 3 psixoloji(hədəf) dəyişəndən ibarətdir'. + +Öz sözlərinizlə bel xətti ilə oturub-durma hərəkətinin edilmə sayı arasındakı əlaqəni çəkəcək reqressiya modelinin necə yaradılmasını təsvir edin. Data massivindəki digər data nöqtələri üçün də eyni şeyi edin. + +## Qiymətləndirmə + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | -------- | ------- | ------------------------ | +| Təsviri paraqraf göndərin | Ətraflı izah edilmiş paraqraf göndərildi | Bir neçə cümlə göndərildi | İzah verilmədi | \ No newline at end of file diff --git a/2-Regression/2-Data/translations/README.az.md b/2-Regression/2-Data/translations/README.az.md new file mode 100644 index 0000000000..a0ac76daf1 --- /dev/null +++ b/2-Regression/2-Data/translations/README.az.md @@ -0,0 +1,209 @@ +# Scikit-learn ilə reqressiya modelləri qurun: datanı hazırlayın və vizuallaşdırın + +![Data vizuallaşdırılması barədə infoqraf](../images/data-visualization.png) + +[Dasani Madipalli](https://twitter.com/dasani_decoded) tərəfindən yaradılmış infoqraf + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/11/?loc=az) + +> ### [Bu dərs R proqramlaşdırma dili ilə də mövcuddur!](../solution/R/lesson_2.html) + +## Giriş + +Artıq Scikit-learn ilə maşın öyrənməsi modelləri qurmaq üçün lazım olan alətləri quraşdırdığınız üçün datanız haqqında suallar soruşmağa hazırsınız. Data ilə işləyərkən və maşın öyrənməsi həlləri tətbiq edərkən data setinizin potensialını düzgün formada ortaya çıxarmağınız üçün düzgün sualı necə verməli olduğunuzu başa düşmək çox vacibdir. + +Bu dərsdə siz: +- Datanızı model qurulması necə hazırlamağı +- Matplotlib data vizuallaşdırması üçün necə istifadə etməyi + +öyrənəcəksiniz. + +## Datanızla bağlı sualı düzgün formada soruşmaq + +Cavablayacağınız sual sizin hansı növ ML alqoritmlərindən faydalanacağınızı müəyyən edəcək. Alacağınız cavabın keyfiyyəti isə bilavasitə datanızın təbiətindən asılı olacaqdır. + +Bu dərs üçün verilmiş [dataya](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) nəzər salın. Bu .csv faylını VS Code ilə aça bilərsiniz. Sürətli bir gözdən keçirmə ilə məlum olur ki, fayl boşluqlar, mətn və ədədi dataların qarışığından ibarətdir. Bundan əlavə, cədvəldə 'sacks', 'bins' və digər dəyərlərin qarışığından ibarət 'Package' adlı qəribə bir sütun da mövcuddur. Data, əslində, biraz qarışıqdır. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Data massivinin analiz olunması və təmizlənməsi](https://img.youtube.com/vi/5qGjczWTrDQ/0.jpg)](https://youtu.be/5qGjczWTrDQ "Yeni başlayanlar üçün maşın öyrənməsi - Data massivinin analiz olunması və təmizlənməsi") + +> 🎥 Bu dərs üçün datanın hazırlanmasının üzərindən keçən qısa video üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Faktiki olaraq, ML modeli qurmaq üçün tamamilə istifadəyə hazır bir data seti ilə təmin olunmaq o qədər də geniş yayılmayıb. Bu dərsdə siz xam data setini standart Python kitabxanalarının köməyi ilə necə hazır formaya gətirəcəyinizi öyrənəcəksiniz. Bundan əlavə, həmin dataların vizuallaşdırma texnikalarını da öyrənmiş olacaqsınız. + +## Araşdırma: 'balqabaq bazarı' + +Bu qovluqda yerləşən `data` adlı qovluğunda siz, şəhərlər üzrə sıralanmış balqabaqlar bazarı haqqında 1757 sətirdən ibarət [US-pumpkins.csv](https://github.com/microsoft/ML-For-Beginners/blob/main/2-Regression/data/US-pumpkins.csv) faylını tapacaqsınız. Bu xam data Amerika Birləşmiş Ştatlarının Kənd Təsərrüfatı Nazirliyi tərəfindən dərc olunmuş [Xüsusi Bitkilər Terminal Bazarlarının Standart Hesabatlarından](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) götürülmüşdür. + +### Datanın hazırlanması + +Bu data publik domendə yerləşir. O Amerika Birləşmiş Ştatlarının Kənd Təsərrüfatı Nazirliyinin vebsaytından şəhərlər üzrə ayrı-ayrı fayllar olaraq yüklənilə bilər. Çoxlu ayrı-ayrı fayllardan yayınmaq üçün biz bütün şəhərlər üzrə olan dataları bir cədvələ yerləşdirmişik. Bununla az da olsa datanı _hazırlamışıq_. Növbəti addımda gəlin məlumatları daha diqqətlə nəzərdən keçirək. + +### Balqabaqlar datası - ilkin nəticələr + +Bu məlumatlar barədə nələr diqqətinizi çəkdi? Artıq siz faylda kəsb etdiyi mənanı başa düşməli olduğunuz sözlər, ədədlər, boşluqlar və qəribə dəyərlərin qarışığını görmüsünüz. + +Reqressiya metodundan istifadə edərək, bu data ilə bağlı hansı sualları soruşa bilərsiniz? Məsələn, "Müəyyən bir ay üçün balqabaqların satış qiymətini təxmin edin". Dataya yenidən nəzər yetirdikdə məlum olur ki, bu tapşırıq üçün lazım olan data strukturunu qurmaq üçün onun üzərində bəzi dəyişikliklər edilməlidir. + +## Tapşırıq - balqabaqlar datasını analiz edin + +Gəlin bu balqabaqlar datasını analiz etmək və hazır formaya gətirmək üçün [Pandas](https://pandas.pydata.org/), (açılışı `Python Data Analysis` kimidir) alətindən istifadə edək. + +### Birinci, boş buraxılmış tarixləri yoxlayın + +Boş buraxılan tarixləri yoxlamaq üçün ilk öncə bir neçə addımı icra etməliyik: + +1. Tarixləri ay formatına keçirdək (bu tarixlər ABŞ tarixləri olduğu üçün onların formatı `MM/DD/YYYY` kimidir). +2. Ayı başqa sütuna köçürün. + +_notebook.ipynb_ faylını Visual Studio Code-da açın və cədvəli yeni Pandas datafreyminə köçürün. + +1. İlk beş sətirə baxmaq üçün `head()` funksiyasını istifadə edin. + + ```python + import pandas as pd + pumpkins = pd.read_csv('../data/US-pumpkins.csv') + pumpkins.head() + ``` + ✅ Son beş sətirə baxmaq üçün hansı funksiyadan istifadə edərsiniz? + +2. Cari datafreymdə boş datanın olub-olmadığını yoxlayın: + + ```python + pumpkins.isnull().sum() + ``` + Boş datalar olsa da, düşünürük ki, hazırki tapşırıqda bunun bir önəmi olmayacaq. + +3. Datafreym ilə işləməyi asanlaşdırmaq üçün orijinal datafreymdən sətirlər qrupunu (birinci parametr kimi ötürülür) və sütunları (ikinci parametr kimi ötürülür) çıxaran `loc` funksiyasından istifadə edərək yalnız sizə lazım olan sütunları seçin. Nümunədəki `:` ifadəsi "bütün sətirlər" deməkdir. + + ```python + columns_to_select = ['Package', 'Low Price', 'High Price', 'Date'] + pumpkins = pumpkins.loc[:, columns_to_select] + ``` + +### İkinci, balqabağın orta qiymətini təyin edin + +Verilən ayda balqabağın orta qiymətini necə təyin edəcəyiniz barədə biraz düşünün. Bu tapşırıq üçün hansı sütunları seçəcəksiniz? İpucu: 3 sütuna ehtiyacınız olacaq. + +Həll: yeni Price sütununu doldurmaq üçün `Low Price` və `High Price` sütunlarının ortalama dəyərini götürün və Date sütununu yalnız ayları göstərəcək formaya çevirin. Xoşbəxtlikdən, yuxarıdakı yoxlanışa görə tarixlər və qiymətlər üzrə boş data yoxdur. + +1. Ortalamanı hesablamaq üçün aşağıdakı kodu əlavə edin: + + ```python + price = (pumpkins['Low Price'] + pumpkins['High Price']) / 2 + + month = pd.DatetimeIndex(pumpkins['Date']).month + ``` + ✅ İstədiyiniz datanı ekrana çap etdirmək üçün `print(month)` istifadə edə bilərsiniz. + +2. İndi isə çevrilmiş datanızı Pandas datafreyminə kopyalayın: + + ```python + new_pumpkins = pd.DataFrame({'Month': month, 'Package': pumpkins['Package'], 'Low Price': pumpkins['Low Price'],'High Price': pumpkins['High Price'], 'Price': price}) + ``` + + Datafreyminizi ekrana çap etdirdikdə yeni reqressiya modeli qura biləcəyiniz təmiz, səliqəli bir data seti görəcəksiniz. + +### Amma gözləyin! Burada nəsə düz deyil + +`Package` sütununa baxdıqda, balqabaqların fərqli konfiqurasiyalarda satıldığını görürük. Bəziləri '1 1/9 bushel' ölçüdə, bəziləri isə '1/2 bushel' ölçülərdə, bəziləri balqabaq başına, bəziləri funtla, bəziləri isə müxtəlif eni olan böyük qutularda satılır. + +> Görünür balqabaqları standart formada çəkmək çox çətindir. + +İlkin məlumatlara nəzər yetirdikdə, `Unit of Sale` ilə 'EACH' və ya 'PER BIN'-ə bərabər olan hər şeyin həm də hər ədədinə, qab başına və ya 'hər biri' tipli `Package` növü var. Balqabaqları standart formada çəkmək çox çətin olduğu üçün, gəlin onları `Package` sütununda yalnız 'bushel' sətri olan balqabaqları seçərək filtirləyək. + +1. Faylın başlıq hissəsinə, ilkin .csv köçürməsi etdiyiniz hissənin aşağısına filteri əlavə edin: + + ```python + pumpkins = pumpkins[pumpkins['Package'].str.contains('bushel', case=True, regex=True)] + ``` + + Əgər indi datanı ekrana çap etdirsəniz, yalnız 415 sətiri və ya buşel ilə çəkilən balqabaqlardan ibarət data sıralarını görəcəksiniz. + +### Amma gözləyin! Ediləsi daha bir işimiz var + +Hər sıraya görə buşelin miqdarının fərqləndiyinin fərqinə vardınız? Hər buşel başına düşən qiyməti göstərə bilməyiniz üçün riyaziyyatdan istifadə edərək normallaşdırma etməlisiniz. + +1. new_pumpkins adlı datafreymi yaratdığınız hissədən sonra bu sətirləri əlavə edin: + + ```python + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1 1/9'), 'Price'] = price/(1 + 1/9) + + new_pumpkins.loc[new_pumpkins['Package'].str.contains('1/2'), 'Price'] = price/(1/2) + ``` + +✅ [The Spruce Eats-ə](https://www.thespruceeats.com/how-much-is-a-bushel-1389308) görə bir buşelin ağırlığı, həcm ölçülməsi olduğu üçün məhsulun növündən asılı olaraq dəyişir. "Misal üçün, 1 buşel pomidor təxminən 56 funt gəldiyi halda, yarpaqlar və göyərtilər az çəki ilə daha çox yer tutduqları üçün, 1 buşel ispanaq 20 funt gəlir." Kifayət qədər mürəkkəbdir! Gəlin özümüzü buşeldən-funta köçürməsi ilə yükləməyək. Bunun əvəzinə, buşelə görə qiymət təyin edək. Bu buşellə balqabaq araşdırması sizə öz datanızın təbiətini başa düşməyinizin nə qədər vacib olduğunu göstərir. + +Artıq siz, buşel ölçülərinə əsasən qiymətləri analiz edə bilərsiniz. Dataları yenidən ekrana çap etdirsəniz, onların necə standartlaşdırıldığını görəcəksiniz. + +✅ Yarım buşel olaraq satılan balqabaqların çox baha olduğunun fərqinə vardınız? Səbəbini tapa bilərsiniz? İpucu: kiçik balqabaqların böyüklərdən qat-qat baha olmasının səbəbi, çox güman ki, bir böyük balqabağın buşeldə yaratdığı boş sahə ilə müqayisədə balaca balqabaqlardan həmin buşelə daha çox yerləşmələridir. + +## Vizuallaşdırma Texnikaları + +Data mühəndislərinin vəzifələrinin bir hissəsi də üzərində işlədikləri datanın keyfiyyət və təbiətini göstərə bilmələridir. Bunu etmək üçün onlar tez-tez maraqlı vizuallar, datanın müxtəlif aspektlərini göstərmək məqsədilə qrafiklər qururlar. Bu yolla onlar, tapılması çətin olan əlaqələri və boşluqları vizual olaraq göstərməyə çalışırlar. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Matplotlib ilə Datanın Vizuallaşdırılması](https://img.youtube.com/vi/SbUkxH6IJo0/0.jpg)](https://youtu.be/SbUkxH6IJo0 "Yeni başlayanlar üçün maşın öyrənməsi - Matplotlib ilə Datanın Vizuallaşdırılması") + +> 🎥 Bu dərs üçün datanın vizuallaşdırılmasının üzərindən keçən qısa video üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Vizuallaşdırma data üçün ən uyğun maşın öyrənməsi texnikasının təyin olunmasında da yardımçı olur. Məsələn, düz xətt üzrə inkişaf edən paylanma qrafiki bu datanın xətti reqressiya üçün uyğun namizəd olduğuna işarə edir. + +Jupyter notbukları ilə əla formada işləyən data vizuallaşdırma kitabxanası [Matplotlib-dir](https://matplotlib.org/)(keçən dərsdə gördüyünüz). + +> [Bu təlimatlar](https://docs.microsoft.com/learn/modules/explore-analyze-data-with-python?WT.mc_id=academic-77952-leestott) ilə data vizuallaşdırılması ilə bağlı təcrübənizi artırın. + +## Tapşırıq - Matplotlib ilə təcrübə + +Yaratdığınız datafreymi vizuallaşdırmaq üçün bir neçə qrafik yaratmağa çalışın. + +1. Faylın başlıq hissəsində, Pandas-ı köçürdüyünüz hissənin aşağısında Matplotlib-i köçürün: + + ```python + import matplotlib.pyplot as plt + ``` + +2. Yenilənmə üçün notbuku yenidən başladın. +3. Notbukun aşağı hissəsinə datanı qutu formasında təsvir etməsi üçün yeni xana əlavə edin: + + ```python + price = new_pumpkins.Price + month = new_pumpkins.Month + plt.scatter(price, month) + plt.show() + ``` + + ![Qiymətlə ay arasındakı əlaqəni göstərən paylanma qrafiki](../images/scatterplot.png) + + Bu qrafik faydalıdırmı? Sizi təəccübləndirən bir şey varmı? + + Etdiyi tək şey datanızı verilən aylar üzrə nöqtələr toplusu kimi göstərmək olduğu üçün o qədər də faydalı hesab olunmur. + +### Onu faydalı et + +Qrafiklərin yararlı informasiya göstərə bilməsi üçün adətən dataları hansısa yolla qruplaşdırmanıza ehtiyac yaranır. Gəlin y oxunun ayları, dataların isə məlumatın yayılmasını göstərdiyi bir qrafik qurmağa çalışaq. + +1. Qruplaşdırılmış barqraf yaratmaq üçün yeni xana yaradın: + + ```python + new_pumpkins.groupby(['Month'])['Price'].mean().plot(kind='bar') + plt.ylabel("Pumpkin Price") + ``` + + ![Qiymətlə ay arasındakı əlaqəni göstərən barqraf](../images/barchart.png) + + Bu daha faydalı data vizuallaşdırılması oldu! Deyəsən, balqabağın ən yüksək qiyməti sentyabr və oktyabr aylarına təsadüf edir. Bu sizin gözləntilərinizi qarşılayırmı? Niyə hə və ya niyə yox? + +--- + +## 🚀 Məşğələ + +Matplotlib-in təklif etdiyi müxtəlif vizuallaşdırma tiplərini araşdırın. Hansılar reqressiya problemləri üçün ən uyğunudur? + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/12/?loc=az) + +## Təkrarlayın və özünüz öyrənin + +Datanı vizuallaşdırmağın bir çox yolunu nəzərdən keçirin. Mövcud olan müxtəlif kitabxanaların siyahısını tərtib edin və verilən tapşırıq tipləri üçün ən yaxşısını qeyd edin. Məsələn, 2D və 3D vizuallaşdırma. Nə kəşf edirsiniz? + +## Tapşırıq + +[Vizuallaşdırmanın araşdırılması](assignment.az.md) \ No newline at end of file diff --git a/2-Regression/2-Data/translations/assignment.az.md b/2-Regression/2-Data/translations/assignment.az.md new file mode 100644 index 0000000000..db9a8c9824 --- /dev/null +++ b/2-Regression/2-Data/translations/assignment.az.md @@ -0,0 +1,9 @@ +# Vizuallaşdırmanın araşdırılması + +Datanı vizuallaşdırmaq üçün müxtəlif kitabxanalar mövcuddur. Nümunə notbukda matplotlib və seaborn ilə Balqabaq datasını bir neçə formada vizuallaşdırın. Kitabxanalardan hansı ilə işləmək daha rahatdır? + +## Qiymətləndirmə + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | -------- | ------- | ------------------------ | +| | 2 araşdırma/vizualizasiyadan ibarət notbuk göndərildi | 1 araşdırma/vizualizasiyadan ibarət notbuk göndərildi | Notbuk göndərilmədi | \ No newline at end of file diff --git a/2-Regression/3-Linear/translations/README.az.md b/2-Regression/3-Linear/translations/README.az.md new file mode 100644 index 0000000000..657b34fb39 --- /dev/null +++ b/2-Regression/3-Linear/translations/README.az.md @@ -0,0 +1,358 @@ +# Scikit-learn istifadə edərək reqressiya modeli qurun: reqressiyanın dörd yolu + +![Xətti və Polinom reqressiya infoqrafiki](../images/linear-polynomial.png) +> [Dasani Madipalli](https://twitter.com/dasani_decoded) tərəfindən çəkilmiş infoqrafik +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/13/?loc=az) + +> ### [Bu dərs R proqramlaşdırma dili ilə də mövcuddur!](../solution/R/lesson_3.html) + +İndiyədək və bu dərs ərzində istifadə edəcəyimiz balqabaq qiymətlərinin data seti ilə reqressiyanın nə olduğunu araşdırmısınız. Həmçinin, Matplotlib ilə də onu vizuallaşdırmısınız. + +Artıq maşın öyrənməsi üçün reqressiyanın dərinliklərinə enməyə hazırsınız. Vizuallaşdırma sizə datadan məna çıxarmaqda yardımçı olsa da, maşın öyrənməsi gücünü _öyrətmə modellərindən_ alır. Modellər, data asılılıqlarını avtomatik olaraq tutmaq üçün keçmiş datalar üzərində öyrədilir və sizə modelin daha əvvəllər görmədiyi yeni datalar üçün proqnozlar verməyə imkan verirlər. + +Bu dərsdə siz reqressiyanın daha 2 növü olan _sadə xətti reqressiya_ ilə _polinom reqressiya_, və onların arxasında dayanan riyazi texnikalar haqqında öyrənəcəksiniz. Bu modellər bizə fərqli giriş datalarından asılı olaraq balqabaq qiymətlərini proqnozlaşdırmağa imkan verəcək. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Xətti reqressiyanı başa düşmək](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Yeni başlayanlar üçün maşın öyrənməsi - Xətti reqressiyanı başa düşmək") + +> 🎥 Xətti reqressiyanın qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +> Bu kurikulum boyunca biz sizin minimal riyazi biliklərə sahib olduğunuzu güman edirik və bunu digər sahələrdən gələn tələbələr üçün də əlçatan etməyə çalışırıq. Ona görə də başa düşmənizə yardımçı olacaq qeydlərə, 🧮 izahlara, diaqramlara və digər öyrənmə alətlərinə nəzər yetirə bilərsiniz. + +### İlkin Şərt + +Araşdırdığımız balqabaq datalarının strukturu ilə artıq tanış olmalısınız. Siz onu bu dərsin _notebook.ipynb_ faylında əvvəlcədən yüklənmiş və təmizlənmiş şəkildə tapa bilərsiniz. Faylda balqabağın qiyməti yeni datafreymdə buşel ilə göstərilmişdir. Bu notbukları Visual Studio Code-da işlədə bildiyinizdən əmin olun. + +### Hazırlıq + +Bu dataları sual vermək üçün yüklədiyinizi xatırlatmaq istəyirik. + +- Balqabaq almaq üçün ən yaxşı vaxt nə zamandır? +- Bir qab miniatür balqabaqdan nə qədər qiymət gözləyə bilərəm? +- Onları yarım buşellik səbətlərlə, yoxsa 1 1/9 buşellik qutularda almalıyam? +Gəlin bu dataları araşdırmağa davam edək. + +Bundan öncəki dərsdə siz Pandas-da yeni datafreym yaradaraq onu orijinal data setinin bir hissəsi ilə doldurdunuz və qiymətləri buşellə standartlaşdırdınız. Amma bunu etməklə siz ancaq payız ayları üçün təxminən 400 data nöqtəsi toplaya bildiniz. + +Bu dərsi müşayiət edən notbuka yüklədiyimiz datalara nəzər salın. Məlumatlar əvvəlcədən yüklənilmiş və paylanma qrafiki aylarla bağlı datanı göstərəcək formada çəkilmişdir. Bu datanı biraz da təmizləyərək onun təbiəti haqqında az da olsa əlavə məlumat ala bilərik. + +### Xətti reqressiya xətti + +1-ci dərsdə öyrəndiyiniz kimi, xətti reqressiya tapşırığının məqsədi aşağıdakılara bir xətt çəkə bilməkdir: + +- **Dəyişənlər arası əlaqəni göstərmək**. Dəyişənlər arasındakı əlaqəni göstərin. +- **Təxminlər irəli sürmək**. Yeni data nöqtəsinin həmin xəttlə əlaqədə olduğu yer haqqında dəqiq təxminlər irəli sürün. + +Bu tip bir xətt çəkmək **Ən Kiçik Kvadratlar Reqressiyasının** tipik bir nümunəsidir. 'Ən kiçik kvadratlar' ifadəsinin mənası reqressiya xəttini əhatələyən bütün nöqtələrinin kvadratlarının cəmlənməsi deməkdir. Az sayda xəta və ya `ən kiçik kvadratlar` istədiyimiz üçün, ideal formada, alınan cəm mümkün qədər kiçik olur. + +Bütün məlumat nöqtələrimizdən ən az məcmu məsafəyə malik olan xətti modelləşdirmək istədiyimiz üçün bunu edirik. Biz onun istiqaməti deyil, böyüklüyü ilə maraqlandığımıza görə şərtləri də əlavə etməzdən əvvəl kvadratlaşdırırıq. + +> **🧮 Mənə riyaziyyatı göstərin** +> +> _Ən uyğun xətt_ adlanan bu xətt, [tənliklə](https://en.wikipedia.org/wiki/Simple_linear_regression) ifadə oluna bilər: +> +> ``` +> Y = a + bX +> ``` +> +> `X` 'izahedici dəyişən', `Y` 'asılı dəyişəndir'. `b`, xəttin bucaq əmsalı, `a` isə `X = 0` olduqda `Y` dəyərinə istinad edən y-kəsənidir. +> +>![bucaq əmsalını hesablayın](../images/slope.png) +> +> İlk olaraq `b` bucaq əmsalını hesablayın. [Jen Looper](https://twitter.com/jenlooper) tərəfindən çəkilmiş infoqrafik. +> +> Digər sözlə və balqabaq datasının orijinal sualına-"bir buşel balqabağın ay üzrə qiymətini təxmin edin" istinad etsək, `X` qiymətə, `Y` isə aylıq satışa istinad edə bilər. +> +>![tənliyi tamamlayın](../images/calculation.png) +> +> Y-in dəyərini hesablayın. Əgər 4$ ətrafında ödəyirsinizsə, bu Aprel ayı olmalıdır! [Jen Looper](https://twitter.com/jenlooper) tərəfindən çəkilən infoqrafik. +> Xətti hesablayan riyazi əməliyyat kəsəndən və ya `X = 0` olduqda `Y`-in bərabər olduğu dəyərdən asılı olan bucaq əmsalını göstərməlidir. +> Bu dəyərlərin hesablanması üçün olan metodlara [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) vebsaytından baxa bilərsiniz. Ədədlərin sahib olduğu dəyərin xəttə necə təsir etməsinə baxmaq üçün isə [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) saytına keçid edin. + +## Korrelyasiya + +Başa düşməniz lazım olan daha bir ifadə isə X və Y dəyişənləri arasındakı **korrelyasiya əmsalıdır**. Paylanma qrafikindən istifadə edərək bu əmsalları tez bir şəkildə vizuallaşdıra bilərsiniz. Aydın bir xətt üzrə səpələnmiş data nöqtələri olan qarifikin yüksək korrelyasiyası, hər yerə səpələnmiş data nöqtələri olan qrafikin isə aşağı korrelyasiyası olur. + +Yaxşı bir reqresiyya modeli, reqressiya xətti ilə Ən Kiçik Kvadratlar Reqresiyyası metodundan istifadə olunmuş yüksək (0-dan fərqli, 1-ə yaxın) Korrelyasiya Əmsalı olan model hesab olunacaq. + +✅ Bu dərsi müşayiət edən notbuku işə salın və Ay-Qiymət paylanma qrafikinə baxın. Paylanma qrafikinin vizual təsvirinə əsasən balqabaq satışı üçün Ay ilə Qiyməti əlaqələndirən datanın yüksək yoxsa aşağı korrelyasiyası var? `Ay` əvəzinə daha dəqiq ölçüdən, məsələn *ilin günündən*(məsələn, il başlayandan keçən günlərin sayı) istifadə etsəniz dəyişiklik olacaqmı? + +Aşağıdakı kodda, biz datanı təmizlədiyimizi və aşağıdakı formaya bənzər `new_pumpkins` adlı datafreymini əldə etdiyimizi fərz edirik: + +ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364 + +> Datanı təmizləmək üçün istifadə olunan kodlara [`notebook.ipynb`](../notebook.ipynb) faylından baxa bilərsiniz. Keçən dərsdəki eyni təmizləmə addımlarını icra etmişik və `DayOfYear` adlı sütunu aşağıdakı ifadə ilə hesablamışıq: + +```python +day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) +``` + +Artıq xətti reqressiyanın arxasında dayanan riyaziyyatı başa düşdüyünüz üçün, gəlin hansı balqabaq paketinin ən yaxşı qiymətə malik olduğunu Reqressiya modeli quraraq təxmin edək. Bu məlumatı bayram üçün balqabaq alan alıcı öz xərclərini optimallaşdırmaq üçün istəyə bilər. + +## Korrelyasiyanı axtarırıq + +[![Yeni başlayanlar üçün maşın öyrənməsi - Korrelyasiyanın axtarışında: Xətti Reqressiyanın açarı](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Yeni başlayanlar üçün maşın öyrənməsi - Korrelyasiyanı axtarırıq: Xətti Reqressiyanın açarı") + +> 🎥 Korrelyasiyanın qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Keçən dərsdən çox güman ki, balqabağın aylar üzrə ortalama qiymətinin bu formada olduğunu görmüsünüz: + + + +Bu şəkil bizə biraz korrelyasiyaya ehtiyac olduğuna işarə edir. Biz `Month` və `Price`, və yaxud `DayOfYear` və `Price` arasındakı əlaqəni təxmin etmək üçün reqressiya modellərimizi öyrədə bilərik. İkinci əlaqəni göstərən paylanma qrafiki: + + + +Gəlin `corr` funksiyasından istifadə etməklə korrelyasiyanın mövcud olub olmadığına baxaq: + +```python +print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) +print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) +``` + +Belə görünür ki, `Month` üzrə korrelyasiya -0.15, `DayOfMonth` üzrə isə -0.17 olmaqla çox kiçik dəyərə malikdir. Amma burada daha mühüm əlaqə ola bilər. Görünən odur ki, fərqli balqabaq növləri üzrə fərqli qiymət yığınları mövcuddur. Bu hipotezisi isbat etmək üçün, gəlin hər balqabaq kateqoriyasının qrafikini fərqli bir rənglə çəkək. `ax`-i `scatter` adlı qrafik çəkən funksiyaya ötürməklə biz eyni qrafik üzərində bütün nöqtələri göstərə bilərik: + +```python +ax=None +colors = ['red','blue','green','yellow'] +for i,var in enumerate(new_pumpkins['Variety'].unique()): + df = new_pumpkins[new_pumpkins['Variety']==var] + ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) +``` + + + +Gəlin bir müddət yalnız 'yeməli növ' balqabaq sortuna fokuslanaq and tarixin onun qiyməti üzərindəki təsirinə baxaq: + +```python +pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] +pie_pumpkins.plot.scatter('DayOfYear','Price') +``` + + + +Əgər indiki halda `corr` funksiyasında istifadə edərək `Price` və `DayOfYear` arasındakı korrelyasiyanı hesablasaq, təxminən `-0.27`-ə bərabər olan bir qiymət alarıq. Bu da o deməkdir ki, bizim təxminedici model daha məntiqli təxminlər verməyə başlayır. + +> Xətti reqressiyanı öyrətməzdən öncə datamızın təmiz olduğundan əmin olmalıyıq. Xətti reqressiya boş qiymətlərlə o qədər də yaxşı işləmədəyi üçün boş xanalardan qurtulmağımızda fayda var: + +```python +pie_pumpkins.dropna(inplace=True) +pie_pumpkins.info() +``` + +Başqa bir yanaşma, həmin boş dəyərləri müvafiq sütundakı orta qiymətlərlə doldurmaq olardı. + +## Sadə xətti reqressiya + +[![Yeni başlayanlar üçün maşın öyrənməsi - Scikit-learn ilə Xətti və Polinom Reqressiyalar](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Yeni başlayanlar üçün maşın öyrənməsi - Scikit-learn ilə Xətti və Polinom Reqressiyalar") + +> 🎥 Xətti və polinom reqresiyyaların qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Xətti Reqressiya modelimizi öyrətmək üçün **Scikit-learn** kitabxanasından istifadə edəcəyik. + +```python +from sklearn.linear_model import LinearRegression +from sklearn.metrics import mean_squared_error +from sklearn.model_selection import train_test_split +``` + +İlkin olaraq giriş(özəlliklər) və çıxış(label) dəyərlərini fərqli setlərə ayıraraq başlayırıq: + +```python +X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) +y = pie_pumpkins['Price'] +``` + +Diqqət edin ki, Xətti Reqressiya paketinin giriş datasını düzgün başa düşməsi üçün onu `reshape`(yenidən formalaşdırmaq) etməli olduq. Xətti reqressiya giriş parametri olaraq hər sırasının giriş özəlliklərindən ibarət vektora uyğun olduğu 2 ölüçülü set gözləyir. Bizim situasiyada yalnız bir giriş olduğu üçün N×1 formalı setə ehtiyacımız olacaq. Buradakı N data setinin ölçüsünü bildirir. + +Öyrətmədən sonra modelimizi validasiya etməyimiz üçün datanı öyrətmə və test data setlərinə ayırmağa ehtiyacımız var: + +```python +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) +``` + +Yekunda Xətti Reqressiya modelini öyrətmək 2 sətirlik kod tələb etmiş olur. `LinearRegression` adlı bir obyekt yaradaraq onu `fit` metodundan istifadə etməklə öz datamıza uyğunlaşdırırıq: + +```python +lin_reg = LinearRegression() +lin_reg.fit(X_train,y_train) +``` + +`.coef_` istifadə edərək `LinearRegression` obyektinin `fit` ilə uyğunlaşdırılandan sonra özündə saxladığı bütün reqressiya əmsallarına baxa bilərsiniz. Bizim situasiyada yalnız bir əmsal var ki, o da `-0.017` civarında olmalıdır. Bu da o deməkdir ki, qiymətlər zamanla düşsə də, bu düşüş çox yox, təxminən günə 2 sent civarında dəyişir. Həmçinin reqressiyanın Y oxu ilə kəsişmə nöqtəsinə `lin_reg.intercept` ilə baxa bilərik. O isə bizim situasiyada `21` aralığında olacaq ki, bu da ilin əvvəlindəki qiyməti göstərir. + +Modelimizin nə dərəcə dəqiq olduğunu görmək üçün test data setində qiymətləri təxmin edib, daha sonra onların gözlənilən qiymətlərə nə dərəcə yaxın olduğunu ölçə bilərik. Bunu orta kvadratik xəta (OKX), daha aydın formada desək, bütün gözlənilən və təxmin olunan dəyərlər arasındakı fərqin kvadratları cəminin ədədi ortası ölçümü ilə həll edə bilərik. + +```python +pred = lin_reg.predict(X_test) + +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +``` + +Görünür ki, xətamız 2 xal civarındadır, bu da ~17%-dir. O qədər də yaxşı deyil. Modelin keyfiyyət göstəricilərindən biri olan **determinasiya əmsalı** isə bu formada əldə olunur: + +```python +score = lin_reg.score(X_train,y_train) +print('Model determination: ', score) +``` + +Əgər qiymət 0-a bərabərdirsə, bu o deməkdir ki, model giriş datalarını nəzərə almır və *ən pis xətti təxminedici* rolunu oynayaraq, nəticənin orta qiymətinə bərabər olur. 1 dəyəri isə bizim bütün gözlənilən dəyərləri mükəmməl bir şəkildə təxmin edə biləcəyimiz mənasına gəlir. Bizim situasiyada əmsal kifayət qədər aşağı, 0.06 civarındadır. + +Reqressiyanın necə işlədiyini görmək üçün reqressiya xətti ilə birgə test datasını da qrafikləşdirə bilərik: + +```python +plt.scatter(X_test,y_test) +plt.plot(X_test,pred) +``` + + + +## Polinom Reqressiya + +Xətti Reqressiyanın digər bir növü Polinom Reqressiyadır. Bəzən dəyişənlər arasındakı əlaqə xətti(balqabaq nə qədər böyük olarsa, qiyməti də o qədər yüksək olacaq) olsa da, bəzən düz xətt və ya müstəvi formasında qrafikləşdirilə bilinməyən əlaqələr də olur. + +✅ [Burada olan data nümunələrində](https://online.stat.psu.edu/stat501/lesson/9/9.8) Polinom Reqressiyadan istifadə oluna bilər. + +Date və Price arasındakı əlaqəyə fərqli bucaqdan baxmağa çalışın. Sizcə bu paylanma qrafiki mütləq şəkildə hansısa bir düz xətt ilə analiz olunmalıdırmı? Qiymətlər dəyişə bilməzmi? Bu durumda polinom reqressiyanı yoxlaya bilərsiniz. + +✅ Polinomlar bir və ya bir neçə dəyişən və əmsallardan ibarət olan riyazi ifadələrə deyilir. + +Polinom reqressiya qeyri-xətti datalara daha yaxşı uyğunlaşmaq üçün əyri xətt yaradır. İndiki situasiyada, `DayOfYear` dəyişəninin kvadratını giriş datasına daxil etsək, datamızı parabolik əyriyə uyğunlaşdıra bilərik. Bunun sayəsində il ərzindəki hansısa nöqtədə minimum dəyərə malik olacağıq. + +Scikit-learn-də data emalının müxtəlif addımlarını birləşdirmək üçün [payplayn API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) mövcuddur. **Payplayn**, **təxminedicilərdən** formalaşan bir zəncirdir. Bizim situasiyada ilk öncə polinom özəllikləri modelimizə əlavə edən payplaynı yaradacayıq və daha sonra reqressiyanı öyrədəcəyik: + +```python +from sklearn.preprocessing import PolynomialFeatures +from sklearn.pipeline import make_pipeline + +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) + +pipeline.fit(X_train,y_train) +``` + +`PolynomialFeatures(2)` istifadə edilməsi, bizim giriş datasındakı bütün ikinci dərəcəli polinomları daxil edəcəyimizi bildirir. Bizim vəziyyətimizdə bu, sadəcə `DayOfYear`2 mənasını verəcək, amma iki giriş dəyişəni, X və Y verildikdə isə, bu, X2, XY və Y2-ni əlavə edəcək. İstəyə bağlı olaraq daha yüksək dərəcəli polinom da istifadə edə bilərik. + +Payplaynlar orijinal `LinearRegression` obyektində olduğu kimi, eyni üsulla istifadə oluna bilər. Məsələn, payplaynı `fit` ilə uyğunlaşdıra, daha sonra isə təxmin nəticələrini əldə etmək üçün `predict` istifadə edə bilərik. Aşağıdakı qrafikdə test datası və təxmin əyrisi göstərilmişdir: + + + +Polinom Reqressiyadan istifadə etməklə biz nəzərəçarpacaq qədər olmasa da, nisbətən daha aşağı OKX(orta kvadratik xəta) və yüksək dəqiqlik əldə edə bilərik. Unutmayın ki, digər özəllikləri də nəzərə almalıyıq! + +> Artıq balqabağın Hellouin ərəfəsində minimum qiymətə düşdüyünü müşahidə edə bilərsiniz. Bunu necə izah edə bilərsiniz? + +🎃 Təbrik edirik, siz indicə yeməli növ balqabaqların qiymətini proqnozlaşdırmağa kömək edə biləcək bir model yaratdınız. Böyük ehtimalla eyni prosedurları digər balqabaq növləri üçün də təkrarlaya bilərsiniz. Amma bu yorucu olacaq. Gəlin balqabaq növünü modelimizdə necə nəzərə alacağımızı öyrənək! + +## Kateqorik Xüsusiyyətlər + +İdeal şəraitdə eyni modeldən istifadə edərək fərqli balqabaq növləri üçün təxminlər istəyə bilərik. Amma `Variety` sütunu qeyri-ədədi dəyərlərdən ibarət olduğu üçün `Month` sütunundan fərqlənir. Bu tip sütunlar **kateqorik** adlandırılır. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Xətti Reqressiya ilə Kateqorik Xüsusiyyətlərin Təxmini](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "Yeni başlayanlar üçün maşın öyrənməsi - Xətti Reqressiya ilə Kateqorik Xüsusiyyətlərin Təxmini") + +> 🎥 Kateqorik xüsusiyyətlərdən istifadəsi barədə qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Burada ortalama qiymətin növdən asılılığını görə bilərsiniz: + + + +Növləri nəzərə alsaq, ilk olaraq biz onu ədədi formaya çevirməli və yaxud **kodlaşdırmalıyıq**. Bunu etməyimiz üçün müxtəlif yollar vardır: + +* Sadə **ədədi kodlaşdırma** müxtəlif növlərdən ibarət bir cədvəl quracaq və növün adını həmin cədvəldəki indeksi ilə əvəzləyəcək. Bu xətti reqressiya üçün yaxşı fikir deyil, çünki xətti reqressiya indeksin cari qiymətini alaraq onu hansısa əmsala vurub, nəticəyə əlavə edir. Bizim situasiyada isə indeks və qiymət arasındakı əlaqə elementlərin hansısa bir yol ilə sıralansa belə, bariz şəkildə qeyri-xəttidir. + +* **Tək-aktiv kodlaşdırma** `Variety` sütununu, hər növ üçün bir ədəd olmaqla 4 fərqli sütunla əvəz edəcək. Hər sütun əgər müvafiq sıra verilən növə uyğundursa `1`-dən, deyilsə `0`-dan ibarət olacaq. Bu da o deməkdir ki, xətti reqressiyada hər balqabaq növü üçün həmin növün "başlanğıc qiymətindən" (və ya "əlavə qiymət") məsul olan 4 əmsal olacaq. + +Aşağıdakı kodda növü necə tək-aktiv kodlaşdıra biləcəyimiz göstərilmişdir: + +```python +pd.get_dummies(new_pumpkins['Variety']) +``` + + ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE +----|-----------|-----------|--------------------------|---------- +70 | 0 | 0 | 0 | 1 +71 | 0 | 0 | 0 | 1 +... | ... | ... | ... | ... +1738 | 0 | 1 | 0 | 0 +1739 | 0 | 1 | 0 | 0 +1740 | 0 | 1 | 0 | 0 +1741 | 0 | 1 | 0 | 0 +1742 | 0 | 1 | 0 | 0 + +Xətti reqressiyanı tək aktiv kodlaşdırmanın giriş olaraq istifadə edərək öyrətmək üçün `X` və `y` datalarını düzgün formada başlatmalıyıq: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) +y = new_pumpkins['Price'] +``` + +Kodun qalan hissəsi yuxarıda Xətti Reqressiyanı öyrətməyimiz üçün istifadə olunan kodlarla eynidir. Əgər yoxlasanız, orta kvadratik xətanın eyni olduğunu, amma determinasiya əmsalının çox daha yüksək(~77%) olduğunu görəcəksiniz. Daha da dəqiq təxminlər əldə etmək üçün, `Month` və ya `DayOfYear` tipli ədədi özəllikləri də nəzərə ala bilərik. Özəlliklərdən ibarət böyük bir set əldə etmək üçün `join` istifadə edə bilərik: + +```python +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] +``` + +Burada bizə 2.84 (10%) OKX (orta kvadratik xəta), 0.94 determinasiya qaytaran `City` və `Package` tiplərini də nəzərə alırıq! + +## Hamısını bir araya gətirərək + +Ən yaxşı modeli qurmaq üçün, biz mürəkkəb (tək-aktiv kodlaşdırılmış kateqorik + ədədi) dataları Polinom Reqressiya ilə birlikdə istifadə edə bilərik. İşinizi asanlaşdırmaq üçün kod nümunəsini aşağıda yerləşdirmişik: + +```python +# set up training data +X = pd.get_dummies(new_pumpkins['Variety']) \ + .join(new_pumpkins['Month']) \ + .join(pd.get_dummies(new_pumpkins['City'])) \ + .join(pd.get_dummies(new_pumpkins['Package'])) +y = new_pumpkins['Price'] + +# make train-test split +X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + +# setup and train the pipeline +pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) +pipeline.fit(X_train,y_train) + +# predict results for test data +pred = pipeline.predict(X_test) + +# calculate MSE and determination +mse = np.sqrt(mean_squared_error(y_test,pred)) +print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') + +score = pipeline.score(X_train,y_train) +print('Model determination: ', score) +``` + +Bu bizə 97%-lə ən yaxşı determinasiya əmsalını, və OKX=2.23 (~8% təxmin xətası) verəcək. + +| Model | MSE | Determination | +|-------|-----|---------------| +| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 | +| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 | +| `Variety` Linear | 5.24 (19.7%) | 0.77 | +| All features Linear | 2.84 (10.5%) | 0.94 | +| All features Polynomial | 2.23 (8.25%) | 0.97 | + +🏆 Əla! Siz bir dərsdə 4 Reqressiya modeli yaratdınız və modelin keyfiyyətini 97%-ə qədər artırdınız. Reqressiyanın final bölməsində kateqoriyaları müəyyənləşdirmək üçün olan Logistik Reqressiya haqqında öyrənəcəksiniz. + +## 🚀 Məşğələ + +Bu notbukda bir neçə fərqli dəyişəni test edərək korrelyasiyanın modelin dəqiqliyinə necə təsir etdiyini izləyin. + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/14/?loc=az) + +## Təkrarlayın və özünüz öyrənin + +Bu dərsdə Xətti Reqressiya haqqında öyrəndiniz. Reqressiyanın başqa vacib növləri də mövcuddur. Stepwise, Ridge, Lasso və Elasticnet texnikaları barədə oxuyun. Daha ətraflı öyrənə biləcəyiniz yaxşı kurs [Stenford Statistik Öyrənmə kursudur.](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) + +## Tapşırıq + +[Model qurun](assignment.az.md) \ No newline at end of file diff --git a/2-Regression/3-Linear/translations/assignment.az.md b/2-Regression/3-Linear/translations/assignment.az.md new file mode 100644 index 0000000000..a6be8c94e8 --- /dev/null +++ b/2-Regression/3-Linear/translations/assignment.az.md @@ -0,0 +1,11 @@ +# Reqressiya Modeli yaradın + +## Təlimatlar + +Bu dərsdə sizə Xətti və Polinom Reqressiyalardan istifadə olunaraq model qurulması göstərildi. Bu məlumatlardan istifadə etməklə Scikit-learn hazır setlərindən və ya başqa bir data seti tapmaqla yeni bir model qurun. Notbukunuzda istifadə etdiyiniz texnikadan istifadə səbəbinizi əsaslandırın və modelinizin dəqiqliyini göstərin. Əgər o dəqiq deyilsə, səbəbini izah edin. + +## Qiymətləndirmə + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | -------- | ------- | ------------------------ | +| | əla formada sənədləşdirilmiş notbuk təqdim edilib | həll yarımçıqdır | həll qüsurlu və ya səhvdir | \ No newline at end of file diff --git a/2-Regression/4-Logistic/translations/README.az.md b/2-Regression/4-Logistic/translations/README.az.md new file mode 100644 index 0000000000..4fde37a096 --- /dev/null +++ b/2-Regression/4-Logistic/translations/README.az.md @@ -0,0 +1,397 @@ +# Kateqoriyaları təxmin etmək üçün logistik reqressiya + +![Logistik və xətti reqressiya infoqrafiki](../images/linear-vs-logistic.png) + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/15/?loc=az) + +> ### [Bu dərs R proqramlaşdırma dili ilə də mövcuddur!](../solution/R/lesson_4.html) + +## Giriş + +Reqressiyanın bu final hissəsində, _klassik_ maşın öyrənmə texnikası olan Xətti Reqressiyaya nəzər salacayıq. Bu texnikadan ikili kateqoriyalardakı şablonları kəşf etmək üçün istifadə edə bilərsiniz. Bu qənnadı məmulatı şokoladdırmı? Bu xəstəlik yoluxucudurmu? Müştəri bu məhsulu seçəcəkmi? + +Bu dərsdə siz: + +- Məlumatların vizuallaşdırılması üçün yeni kitabxananı +- Logistik reqressiya texnikalarını + +öyrənəcəksiniz. + +✅ Bu [öyrənmə modulunda](https://docs.microsoft.com/learn/modules/train-evaluate-classification-models?WT.mc_id=academic-77952-leestott) olan reqressiya tipləri ilə işləyərək öz biliklərinizi təkmilləşdirin. + +### İlkin Şərt + +Balqabaq məlumatları ilə işlədikdən sonra artıq tanış olduq ki, onunla işləyə biləcəyimiz yalnız bir ədəd ikili kateqoriya-`Color` mövcuddur. + +Gəlin bir neçə dəyişən verilməklə _balqabağın hansı rəngdə(narıncı 🎃 və ya ağ 👻) olacağını_ təxmin edən logistik reqressiya modeli quraq. + +> Reqressiya barəsində olan dərsdə nə üçün ikili klassifikasiya haqqında danışırıq? Logistik reqressiya əslində, xətti əsaslı olsa da bir [klassifikasiya metodudur](https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression). Növbəti bölmədə məlumatları təsnifləndirməyin yollarını öyrənəcəksiniz. + +## Sualı müəyyənləşdirin + +İstəklərimiz üzərindən gedərək bunu ikili formasında ifadə edəcəyik: 'Ağ' və ya 'Ağ olmayan'. Data dəstimizdə "zolaqlı" kateqoriya olsa da, bu tip bir neçə nümunə olduğu üçün ondan istifadə etməyəcəyik. Hər bir halda data setimizdən boş dəyərləri sildikdən sonra yox olacaqlar. + +> 🎃 Maraqlı fakt. Bəzən ağ balqabaqlara 'ruh' balqabaqlar da deyirlər. Onları çərtmək o qədər də asan olmadığı üçün narıncı balqabaqlar qədər məşhur deyillər. Amma çox gözəl görünürlər! Ona görə də biz sualımızı bir balaca yenidən formalaşdıra bilərik: 'Ruh olan' or 'Ruh olmayan'. 👻 + +## Logistik reqressiya haqqında + +Logistik reqressiya keçən dərslərdə haqqında öyrəndiyiniz xətti reqressiyadan bir neçə vacib yolla fərqlənir. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Maşın Öyrənməsində Klassifikasiya üçün Logistik Reqressiyanın başa düşülməsi](https://img.youtube.com/vi/KpeCT6nEpBY/0.jpg)](https://youtu.be/KpeCT6nEpBY "Yeni başlayanlar üçün maşın öyrənməsi - Maşın Öyrənməsində Klassifikasiya üçün Logistik Reqressiyanın başa düşülməsi") + +> 🎥 Logistik reqressiyanın qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +### İkili klassifikasiya + +Logistik reqressiya xətti reqressiyanın təklif etdiyi özəllikləri təklif etmir. Biri ikili kateqoriya ("narıncı olan və ya olmayan") haqqında təxminlər irəli sürsə də, digəri balqabağın mənşəyi və yığılma vaxtını nəzərə alsaq, _qiymətinin nə qədər yüksələcəyi_ tipli davamedici dəyərləri təxmin etmək potensialındadır. + +![Balqabaq qruplaşdırma modeli](../images/pumpkin-classifier.png) +> [Dasani Madipalli](https://twitter.com/dasani_decoded) tərəfindən çəkilmiş infoqrafik + +### Digər klassifikasiya + +Multinomial və ordinal daxil olmaqla logistik reqressiyanın digər növləri də mövcuddur: + +- **Multinomial** özündə daha çox kateqoriyanı ehtiva edir. Məsələn, "Narıncı, Ağ, and Zolaqlı". +- Sıralanmış kateqoriyalardan ibarət olan **Ordinal** isə limitli ölçülərə (mini,sm,med,lg,xl,xxl) görə sıralanmış balqabaqlarımız kimi nəticələrimizi məntiqi olaraq sıralamaq istədikdə faydalıdır. + +![Multinomial və ordinal reqressiya](../images/multinomial-vs-ordinal.png) + +### Dəyişənlər korrelyasiya etməli deyil + +Xətti reqressiyanın daha çox korrelyasiyalı dəyişənlərlə necə daha rahat işlədiyini xatırlayırsınızmı? Logistik reqressiyada bunun əksi baş verir. Belə ki, dəyişənlər uyğunlaşmasına ehtiyac yoxdur. Ona görə də, zəif korrelyasiyaları olan bu datamız üçün işə yarayır. + +### Çoxlu təmiz dataya ehtiyacınız var + +Xətti reqressiya daha çox data istifadə etdikcə daha dəqiq nəticələr verəcək. Bizim balaca data dəstimizin bu tapşırıq üçün o qədər də optimal olmadığını unutmayın. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Datanın Analizi və Logistik Reqressiya üçün hazırlanması](https://img.youtube.com/vi/B2X4H9vcXTs/0.jpg)](https://youtu.be/B2X4H9vcXTs "Yeni başlayanlar üçün maşın öyrənməsi - Datanın Analizi və Logistik Reqressiya üçün hazırlanması") + +> 🎥 Logistik reqressiya üçün datanın hazırlanması barədə qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +✅ Logistik reqressiya üçün tam uyğun olan data tipləri haqqında düşünün + +## Tapşırıq - datanı səliqəyə salın + +İlkin olaraq datanı biraz təmizləyək, boş dəyərləri kənarlaşdıraq və bəzi sütunları seçək: + +1. Aşağıdakı kodu əlavə edin: + + ```python + + columns_to_select = ['City Name','Package','Variety', 'Origin','Item Size', 'Color'] + pumpkins = full_pumpkins.loc[:, columns_to_select] + + pumpkins.dropna(inplace=True) + ``` + + Hər zaman öz datafreyminizə nəzər yetirə bilərsiniz: + + ```python + pumpkins.info + ``` + +### Vizuallaşdırma - kateqorik qrafik + +Artıq bir neçə dəfə [başlanğıc dəftərçəsini](../notebook.ipynb) yükləmiş və `Color` dəyişəni də daxil olmaqla bir neçə dəyişən qalacaq şəkildə onu təmizləmisiniz. Gəlin dəftərçədə datafreymimizi fərqli kitabxanadan - [Seaborn](https://seaborn.pydata.org/index.html)-dan istifadə edərək vizuallaşdıraq. Bu kitabxana əvvəlki dərslərdə istifadə etmiş olduğumuz Matplotlib kitabxanası üzərinə qurulmuşdur. + +1. `catplot` funksiyasından `pumpkins` adlı balqabaq datamızdan istifadə etməklə və hər balqabaq kateqoriyası (narıncı və ya ağ) üçün rəng xəritəsini təyin etməklə belə bir qrafik yaradın: + + ```python + import seaborn as sns + + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + + sns.catplot( + data=pumpkins, y="Variety", hue="Color", kind="count", + palette=palette, + ) + ``` + + ![Vizuallaşdırılmış dataların qrafiki](../images/pumpkins_catplot_1.png) + + Bu datanı müşahidə edərək rənglərlə növlərin bir birinə necə təsir etdiyini görə bilərsiniz. + + ✅ Bu kateqorik qrafikə nəzər yetirdikdə ağlınıza hansı maraqlı yeni fikirlər gəlir? + +### Datanın ön-emalı özəllik və etiket kodlaşdırılması +Bizim balqabaq datalarımızdakı bütün sütunlar mətni dəyərlərdən ibarətdir. Kateqorik datalarla işləmək insanlar üçün intuitiv olsa da, maşınlar üçün bu belə deyil. Maşın öyrənmə alqoritmləri rəqəmlərlə yaxşı işləyir. Buna görə də kodlaşdırma bizə kateqoriyalı məlumatları heç bir məlumatı itirmədən ədədi məlumatlara çevirməyə imkan verdiyi üçün dataların önemalı mərhələsində çox vacib bir addımdır. Yaxşı kodlaşdırma yaxşı bir model yaratmağa səbəb olur. + +Özəlliklərin kodlaşdırılması üçün kodlaşdırıcıların 2 əsas tipi var: + +1. Ordinal şifrələyicilər data dəstimizdəki `Item Size` sütununda olduğu kimi müəyyən məntiqi sıralamanı izləyən ordinal dəyişənlər üçün uyğundur. Bu şifrələyici hər kateqoriyanı aid olduğu sütun sırasına uyğun ədədlə ifadə edən bir əlaqə yaradır. + + ```python + from sklearn.preprocessing import OrdinalEncoder + + item_size_categories = [['sml', 'med', 'med-lge', 'lge', 'xlge', 'jbo', 'exjbo']] + ordinal_features = ['Item Size'] + ordinal_encoder = OrdinalEncoder(categories=item_size_categories) + ``` +2. Kateqorik şifrələyicilər isə date dəstimizdə `Item Size` çıxmaq şərtilə digər özəlliklər kimi heç bir məntiqi qanunauyğunluğu izləməyən kateqorik dəyişlənlər üçün uyğundur. Bu tək-aktiv növ şifrələmədir. Bu növ şifrələmədə hər kateqoriya ikili sütunla ifadə olunur. Əgər balqabaq həmin növə aiddirsə 1, deyilsə şifrələnmiş dəyişən 0-a bərabər olur. + + ```python + from sklearn.preprocessing import OneHotEncoder + + categorical_features = ['City Name', 'Package', 'Variety', 'Origin'] + categorical_encoder = OneHotEncoder(sparse_output=False) + ``` + +Daha sonra bir neçə şifrələyicini 1 addımda birləşdirmək və müvafiq sütuna tətbiq etmək üçün `ColumnTransformer`-dən istifadə olunur. + +```python + from sklearn.compose import ColumnTransformer + + ct = ColumnTransformer(transformers=[ + ('ord', ordinal_encoder, ordinal_features), + ('cat', categorical_encoder, categorical_features) + ]) + + ct.set_output(transform='pandas') + encoded_features = ct.fit_transform(pumpkins) +``` +Digər tərəfdən etiketi kodlaşdırmaq üçün onları yalnız 0 və siniflərin_sayı-1 (burada 0 və 1-dir) arasında olan dəyərlərlə normallaşdıran scikit-learn-ün `LabelEncoder` sinifindən istifadə edəcəyik. + +```python + from sklearn.preprocessing import LabelEncoder + + label_encoder = LabelEncoder() + encoded_label = label_encoder.fit_transform(pumpkins['Color']) +``` + +Özəllikləri və etikətləri kodlaşdırdıqdan sonra onları yeni `encoded_pumpkins` adlı datafreymə birləşdirə bilərik. + +```python + encoded_pumpkins = encoded_features.assign(Color=encoded_label) +``` + +`Item Size` sütunu üçün ordinal şifrələyicilərdən istifadə etməyin üstünlükləri nədir? + +### Dəyişənlər arasındakı əlaqəni analiz edin + +Artıq dəyişənlərimizi öncədən emal etdiyimizə görə modelin verilən özəlliklərə uyğun etiketi nə qədər düzgün təxmin edə biləcəyi barədə fikir sahibi ola bilərik. Bunun üçün özəlliklərlə etiketlər arasındakı əlaqələri analiz edə bilərik. +Bu tip analizləri aparmağın ən yaxşı yolu onları qrafikləşdirməkdir. Bu dəfə də kateqorik qrafikdə `Item Size`, `Variety` və `Color` arasındakı əlaqəni vizuallaşdırmaq üçün Seaborn-un `catplot` funksiyasından istifadə edəcəyik. Datanı daha yaxşı vizuallaşdırmaq üçün şifrələnmiş `Item Size` və şifrələnməmiş `Variety` sütunlarını istifadə edirik. + +```python + palette = { + 'ORANGE': 'orange', + 'WHITE': 'wheat', + } + pumpkins['Item Size'] = encoded_pumpkins['ord__Item Size'] + + g = sns.catplot( + data=pumpkins, + x="Item Size", y="Color", row='Variety', + kind="box", orient="h", + sharex=False, margin_titles=True, + height=1.8, aspect=4, palette=palette, + ) + g.set(xlabel="Item Size", ylabel="").set(xlim=(0,6)) + g.set_titles(row_template="{row_name}") +``` + +![Vizuallaşdırılmış məlumatların qrafiki](../images/pumpkins_catplot_2.png) + +### Sürü qrafikindən istifadə edin + +`Color` ikili kateqoriya(Ağ və ya Ağ olmayan) olduğu üçün vizuallaşdırma üçün [xüsusi yanaşmaya](https://seaborn.pydata.org/tutorial/categorical.html?highlight=bar) ehtiyacı var. Bu kateqoriyanın digər dəyişənlərlə olan əlaqəsini vizuallaşdırmaq üçün başqa yollar da mövcuddur. + +Dəyişənləri yanaşı formada Seaborn qrafikləri ilə vizuallaşdıra bilərsiniz. + +1. Dəyərlərin paylanmasını göstərmək üçün 'swarm' qrafikini yoxlayın: + + ```python + palette = { + 0: 'orange', + 1: 'wheat' + } + sns.swarmplot(x="Color", y="ord__Item Size", data=encoded_pumpkins, palette=palette) + ``` + + ![Vizuallaşdırılmış məlumatların sürü qrafiki](../images/swarm_2.png) + +**Diqqət edin**: Seaborn bu qədər çox məlumat nöqtəsini sürü qrafiki ilə göstərməyi bacara bilmədiyi üçün yuxarıdakı kod bir xəbərdarlıq göstərə bilər. Problemin potensial həlli, 'size' parametrindən istifadə edərək işarələyicinin ölçüsünü azaltmaqdır. Amma nəzərə alın ki, bu qrafikin oxunaqlılığını aşağı salacaq. + +> **🧮 Mənə riyaziyyatı göstərin** +> +> Logistik reqressiya [siqmoid funksiyalarından](https://wikipedia.org/wiki/Sigmoid_function) istifadə edilən 'maksimum bənzərlik' konseptinə əsaslanır. Qrafiki formada 'Siqmoid Funksiyası' 'S' hərfinə oxşayır. Bu funksiya bir dəyər götürür və onu 0 və 1 arasındakı bir qiymətə köçürür. Qrafiki əyrisi isə 'logistik əyri' də adlanır. Düsturu isə bu formadadır: +> +> ![logistic function](../images/sigmoid.png) +> +> siqmoidin orta nöqtəsi x-in 0 nöqtəsində olduğu nöqtədə L əyrinin maksimum dəyəri, k isə əyrinin dikliyidir. Əgər funksiyanın nəticəsi 0.5-dən çoxdursa, etiketə ikili seçimin '1' sinifi veriləcək, əks halda '0' olaraq sinifləndiriləcəkdir. + +## Modelinizi qurun + +Həmin ikili klassifikasiyanı tapmaq üçün bir model qurmaq Scikit-learn-də təəccüblü dərəcədə sadədir. + +[![Yeni başlayanlar üçün maşın öyrənməsi - Datanın Klassifikasiyası üçün Logistik Reqressiya](https://img.youtube.com/vi/MmZS2otPrQ8/0.jpg)](https://youtu.be/MmZS2otPrQ8 "Yeni başlayanlar üçün maşın öyrənməsi - Datanın Klassifikasiyası üçün Logistik Reqressiya") + +> 🎥 Logistik reqressiya modelinin qurulmasını göstərən qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +1. Təsnifat modelində istifadə istifadə etmək istədiyiniz dəyişənləri seçin və `train_test_split()`-i çağıraraq onları öyrənmə və test dəstlərinə ayırın. + + ```python + from sklearn.model_selection import train_test_split + + X = encoded_pumpkins[encoded_pumpkins.columns.difference(['Color'])] + y = encoded_pumpkins['Color'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + + ``` + +2. Artıq `fit()`-i öyrənmə dataları ilə çağıraraq modelinizi öyrədə və nəticəni ekrana çap edə bilərsiniz: + + ```python + from sklearn.metrics import f1_score, classification_report + from sklearn.linear_model import LogisticRegression + + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('F1-score: ', f1_score(y_test, predictions)) + ``` + + Qiymətlər tablosuna nəzər yetirin. Yalnız 1000 sətirlik datanızın olduğunu nəzərə alsaq, o qədər də pis görünmür: + + ```output + precision recall f1-score support + + 0 0.94 0.98 0.96 166 + 1 0.85 0.67 0.75 33 + + accuracy 0.92 199 + macro avg 0.89 0.82 0.85 199 + weighted avg 0.92 0.92 0.92 199 + + Predicted labels: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 + 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 + 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 + 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 0 0 0 1 0 0 0 0 0 0 0 0 1 1] + F1-score: 0.7457627118644068 + ``` + +## Xəta matrisi vasitəsilə daha yaxşı başa düşmə + +Yuxarıdakıları ekrana çap edərək bir xal tablosu [reportu](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html?highlight=classification_report#sklearn.metrics.classification_report) əldə edə bilsəniz də, modelinizin necə bir performans göstərməsini [xəta matrisi](https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix) istifadə edərək daha rahat başa düşə bilərsiniz. + +> 🎓 '[Xəta matrisi](https://wikipedia.org/wiki/Confusion_matrix)' təxminlərin dəqiqliyini ölçən, modelinizin pozitiv və neqativ olmaqla, doğru və yanlışları göstərən bir cədvəldir. + +1. Xəta matirisini işlətmək üçün `confusion_matrix()`-i çağırın: + + ```python + from sklearn.metrics import confusion_matrix + confusion_matrix(y_test, predictions) + ``` + + Modelinizin xəta matrisinə baxın: + + ```output + array([[162, 4], + [ 11, 22]]) + ``` + +Scikit-learn-də xəta matrisində Cərgələr (0 oxu) əsl etiketlər, sütunlar (1 oxu) isə təxmin edilənləri göstərir. + +| | 0 | 1 | +| :---: | :---: | :---: | +| 0 | TN | FP | +| 1 | FN | TP | + +Burada nə baş verir? Misal üçün modelimizdən balqabaqları 2 ikili kateqoriya- 'ağ' və 'ağ olmayan' üzrə qruplaşdırmağı istəmişik. + +- Modeliniz balqabağın ağ olmadığını təxmin edirsə və o reallıqda 'ağ olmayan' kateqoriyasına aiddirsə, biz onu yuxarı sol rəqəmlə göstərilən doğru neqativ (True Negative) adlandırırıq. +- Modeliniz balqabağı ağ kimi təxmin edirsə və o reallıqda 'ağ olmayan' kateqoriyasına aiddirsə, biz onu aşağı sol nömrə ilə göstərilən yanlış neqativ (False Negative) adlandırırıq. +- Modeliniz balqabağın ağ olmadığını təxmin edirsə və o reallıqda 'ağ' kateqoriyasına aiddirsə, biz onu yuxarı sağ nömrə ilə göstərilən yanlış pozitiv (False Positive) adlandırırıq. +- Modeliniz balqabağı ağ kimi təxmin edirsə və o reallıqda 'ağ' kateqoriyasına aiddirsə, biz onu aşağı sağ rəqəmlə göstərilən doğru pozitiv (True Positive) adlandırırıq. + +Təxmin etdiyiniz kimi, daha çox sayda doğru pozitiv və doğru neqativlərə və daha az sayda yanlış pozitiv və yanlış neqativlərə üstünlük verilir. Bu da modelin daha yaxşı performans göstərdiyini göstərir. + +Xəta matrisinin dəqiqlik və xatırlatma ilə necə bir əlaqəsi var? Yuxarıda çap edilmiş təsnifat hesabatın dəqiqliyini (0,85) və xatırlamanı isə (0,67) olaraq göstərdiyini unutmayın. + +Dəqiqlik = tp / (tp + fp) = 22 / (22 + 4) = 0.8461538461538461 + +Xatırlama = tp / (tp + fn) = 22 / (22 + 11) = 0.6666666666666666 + +✅ Sual: Xəta matrisinə əsasən bizim modelimiz necə işlədi? Cavab: O qədər də pis deyildi. Nəzərəçarpacaq qədər doğru neqativlər olmasına baxmayaraq, az da olsa yanlış neqativlər var. + +TP/TN və FP/FN-nin xəta matrisinin xəritələşdirilməsinin köməyi ilə əvvəllər gördüyümüz şərtlərə yenidən baxaq: + +🎓 Dəqiqlik: TP/(TP + FP) Alınmış nümunələr arasında müvafiq nümunələrin payı (məsələn, hansı etiketlər düzgün etiketlənib) + +🎓 Xatırlama: TP/(TP + FN) Yaxşı etiketlənmiş və ya etiketlənməmiş fərqi olmadan, əldə edilmiş müvafiq nümunələrin bir hissəsi + +🎓 f1-balı: (2 * dəqiqlik * xatırlama)/(dəqiqlik + xatırlatma) Ən yaxşısı 1, ən pisi isə 0 olmaqla dəqiqlik və xatırlatmanın çəkili ortalaması + +🎓 Dəstək: Alınan hər bir etiketin təkrarlanma sayı + +🎓 Dəqiqlik: (TP + TN)/(TP + TN + FP + FN) Nümunə üçün dəqiq proqnozlaşdırılmış etiketlərin faizi. + +🎓 Makro Ortalama: Etiket balanssızlığını nəzərə almadan hər bir etiket üçün ölçülməmiş orta göstəricilərin hesablanması. + +🎓 Çəkili Ortalama: Hər bir etiket üçün orta göstəricilərin hesablanması, etiket balanssızlığının hesaba qatılması və dəstəklərinə (hər etiket üçün doğru nümunələrin sayı) görə çəkiləndirilməsidir. + +✅ Modelinizin yanlış neqativlərinin sayını azaltmaq istədikdə hansı ölçümü izləməli olduğunuzu düşünürsünüz? + +## Bu modelin ROC əyrisini vizuallaşdırın + +[![Yeni başlayanlar üçün maşın öyrənməsi - ROC əyriləri ilə Logistik Reqressiyanın Performans Analizi](https://img.youtube.com/vi/GApO575jTA0/0.jpg)](https://youtu.be/GApO575jTA0 "Yeni başlayanlar üçün maşın öyrənməsi - ROC əyriləri ilə Logistik Reqressiyanın Performans Analizi") + +> 🎥 ROC əyrilərinin qısa icmal videosu üçün yuxarıdakı şəkilin üzərinə klikləyin. + +'ROC' adlandırılan əyrini görmək üçün gəlin daha bir vizuallaşdırma edək: + +```python +from sklearn.metrics import roc_curve, roc_auc_score +import matplotlib +import matplotlib.pyplot as plt +%matplotlib inline + +y_scores = model.predict_proba(X_test) +fpr, tpr, thresholds = roc_curve(y_test, y_scores[:,1]) + +fig = plt.figure(figsize=(6, 6)) +plt.plot([0, 1], [0, 1], 'k--') +plt.plot(fpr, tpr) +plt.xlabel('False Positive Rate') +plt.ylabel('True Positive Rate') +plt.title('ROC Curve') +plt.show() +``` + +Matplotlib-dən istifadə edərək modelin [Receiving Operating Characteristic (Qəbul Əməliyyatlarının Xarakteristikası)](https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html?highlight=roc) və ya ROC əyrisini qrafikləşdirək. ROC əyriləri daha çox bir klassifikatorun nəticəsinin doğru və ya yanlış pozitivləri baxımından bir təsvirini yaratmaq üçün istifadə olunur. "ROC əyrilərində doğru pozitivlərin nisbəti Y oxu üzrə, yanlış pozitivlərin nisbəti isə X oxu üzrə göstərilir." Əyrinin dikliyi və qrafikin orta xətti ilə əyri arasındakı məsafə önəm daşıdığına görə sürətlə yuxarı doğru çıxan və xətti keçən bir əyri istəyirsiniz. Bizim situasiyada, başlanğıcda yanlış pozitivlər var və daha sonra əyri düzgün bir şəkildə yuxarı və aşağı doğru gedir. + +![ROC](../images/ROC_2.png) + +Yekun olaraq 'Əyrinin Aşağısındakı Sahə'-ni (ƏAS) hesablamaq üçün Scikit-learn-ün [`roc_auc_score` metodundan](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html?highlight=roc_auc#sklearn.metrics.roc_auc_score) istifadə edin: + +```python +auc = roc_auc_score(y_test,y_scores[:,1]) +print(auc) +``` + +Nəticə `0.9749908725812341`-ə bərabərdir. ƏAS əmsalının 0 ilə 1 arasında dəyişdiyini və 100% düzgün işləyən modelin ƏAS əmsalının 1-ə bərabər olduğunu nəzərə alsaq, daha yüksək xal istəməyiniz normaldır. İndiki durumda modelimiz _çox yaxşıdır_. + +Klassifikasiya ilə bağlı gələcək dərslərdə, modelin balını yüksəltmək üçün necə iterasiyalar etməyi öyrənəcəksiniz. Amma indilik bu qədər bəsdir. Reqressiya dərslərini bitirdiyinizə görə sizi təbrik edirik! + +## 🚀 Məşğələ + +Logistik reqressiya mövzusunda öyrəniləsi hələ çox şey var. Amma ən yaxşı öyrənmə təcrübə etməkdir. Bunun üçün dərsdəki analizə bənzər bir dataset tapın və onunla bir model qurun. Nə öyrəndiniz? Maraqlı datasetlər üçün [Kaggle](https://www.kaggle.com/search?q=logistic+regression+datasets) yoxlaya bilərsiniz. + +## [Mühazirə sonrası test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/16/?loc=az) + +## Təkrarlayın və özünüz öyrənin + +Logistik reqressiyanın praktiki istifadələri haqqında olan [bu məqalənin](https://web.stanford.edu/~jurafsky/slp3/5.pdf) ilk bir neçə səhifəsini oxuyun. İndiyə qədər öyrəndiyimiz bu və ya digər növ reqressiya tapşırıqları üçün daha uyğun olan istifadə halları haqqında düşünün. Ən yaxşısı hansı olardı? + +## Tapşırıq + +[Bəzi Reqressiyaların yenidən sınanması](assignment.az.md) \ No newline at end of file diff --git a/2-Regression/4-Logistic/translations/assignment.az.md b/2-Regression/4-Logistic/translations/assignment.az.md new file mode 100644 index 0000000000..98e43e5ff9 --- /dev/null +++ b/2-Regression/4-Logistic/translations/assignment.az.md @@ -0,0 +1,11 @@ +# Bəzi Reqressiyaların yenidən sınanması + +## Təlimatlar + +Bu dərsdə siz balqabaqlarla bağlı olan məlumatların alt setindən istifadə etdiniz. İndi ilkin məlumatlara qayıdın və həmin dataların hamısının təmizlənmiş, standartlaşdırılmış formasından istifadə edərək Logistik Reqressiya modeli qurun. + +## Qiymətləndirmə + +| Meyarlar | Nümunəvi | Adekvat | İnkişaf Etdirilməli Olan | +| -------- | -------- | ------- | ------------------------ | +| | əla formada izah edilmiş və performansı güclü olan model təqdim edilib | minimal funksionallıqda bir model təqdim edilib | aşağı və ya qeyri funskionallıqlı model təqdim edilmişdir | \ No newline at end of file diff --git a/2-Regression/translations/README.az.md b/2-Regression/translations/README.az.md new file mode 100644 index 0000000000..44d9f817d9 --- /dev/null +++ b/2-Regression/translations/README.az.md @@ -0,0 +1,39 @@ +# Maşın Öyrənməsi üçün reqressiya modelləri +## Regional mövzu: Şimali Amerikada balqabaq qiymətləri üçün reqressiya modelləri 🎃 + +Şimali Amerikada balqabaqlar tez-tez Hellouin bayramı üçün qorxunc üz formasında çərtilirlər. Gəlin bu tərəvəz haqqında maraqlı faktları öyrənək! + +![jack-o-lanterns](../images/jack-o-lanterns.jpg) +>Beth Teutschmann tərəfindən çəkilmiş şəkil. Mənbə: Unsplash + +## Nə öyrənəcəksiniz + +[![Reqressiyaya giriş](https://img.youtube.com/vi/5QnJtDad4iQ/0.jpg)](https://youtu.be/5QnJtDad4iQ "Reqressiya giriş videosu - İzləmək üçün klikləyin!") +> 🎥 Bu dərsə sürətli giriş videosu üçün yuxarıdakı şəkilə klikləyin. + +Bu bölmədəki dərslər maşın öyrənməsi konteksti çərçivəsində reqressiyaların növlərini əhatə edir. Reqressiya modelləri dəyişənlər arasındakı _əlaqəni_ təyin etməyə kömək edir. Bu model tipi dəyişənlər arası əlaqəni data nöqtələri vasitəsilə analiz edərək üzə çıxarır və bunun sayəsində uzunluq, temperatur və ya yaş kimi dəyərləri təxmin edə bilir. + +Bu dərslər seriyasında, xətti və məntiqi reqressiyalar arasındakı fərqi, nə zaman hansını seçməli olduğunuzu öyrənəcəksiniz. + +[![Yeni başlayanlar üçün ML- Maşın Öyrənməsi üçün reqressiya modellərinə giriş](https://img.youtube.com/vi/XA3OaoW86R8/0.jpg)](https://youtu.be/XA3OaoW86R8 "Yeni başlayanlar üçün ML- Maşın Öyrənməsi üçün reqressiya modellərinə giriş") + +> 🎥 Reqressiya modellərinə giriş üçün yuxarıdakı şəkilin üzərinə klikləyin. + +Bu dərslər qrupunda siz data mühəndisləri üçün ümumi mühit olan notbukları maşın öyrənmə tapşırıqlarında idarə etmək üçün Visual Studio Code-u necə konfiqurasiya etməli olduğunuzu öyrənəcəksiniz. Siz maşın öyrənməsi üçün olan Scikit-learn kitabxanası haqqında öyrənəcək və bu fəsildə Reqressiya modellərinə diqqət yetirərək ilk modellərinizi quracaqsınız. + +> Reqressiya 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 ML-i](https://docs.microsoft.com/learn/modules/create-regression-model-azure-machine-learning-designer/?WT.mc_id=academic-77952-leestott) sınaqdan keçirin. + +### Dərslər + +1. [Ticarət alətləri](../1-Tools/translations/README.az.md) +2. [Datanın idarə olunması](../2-Data/transalations/README.az.md) +3. [Xətti and polinomial reqressiya](../3-Linear/translations/README.az.md) +4. [Logistik reqressiya](../4-Logistic/translations/README.az.md) + +### Təşəkkürlər + +"Reqressiya ilə ML" [Jen Looper](https://twitter.com/jenlooper) tərəfindən ♥️-lə yazılmışdır. + +♥️ Quizlərə töhvə verənlər: [Muhammad Sakib Khan Inan](https://twitter.com/Sakibinan) və [Ornella Altunyan](https://twitter.com/ornelladotcom) + +Balqabaq data seti [Kaagle-dakı bu proyekt](https://www.kaggle.com/usda/a-year-of-pumpkin-prices) tərəfindən məsləhət görülmüşdür və datalar Amerika Birləşmiş Ştatlarının Kənd Təsərrüfatı Nazirliyi tərəfindən dərc olunmuş [Xüsusi Bitkilər Terminal Bazarlarının Standart Hesabatlarından](https://www.marketnews.usda.gov/mnp/fv-report-config-step1?type=termPrice) götürülmüşdür. Paylanmanı normallaşdırmaq üçün müxtəlifliyə görə rəng əsaslı bəzi nöqtələr əlavə etmişik. Bu məlumatlar publik domendədir. \ No newline at end of file diff --git a/3-Web-App/1-Web-App/translations/README.az.md b/3-Web-App/1-Web-App/translations/README.az.md new file mode 100644 index 0000000000..6725a8d215 --- /dev/null +++ b/3-Web-App/1-Web-App/translations/README.az.md @@ -0,0 +1,343 @@ +# ML modeli istifadə etmək üçün veb tətbiq yaradaq + +Bu dərsdə ML modelini dünyamızdan tamamilə kənar data toplusu ilə öyrədəcəyik: _Ötən əsrdə UFO müşahidələri_, nümunəsi NUFORC verilənlər bazasından mənbə götürmüşdür. + +Nələr öyrənəcəksiniz: + +- Öyrədilmiş modeli necə pikl etmək ("turşuya qoymaq") (uzunmüddətli istifadə üçün) olar. +- Bu modeli Flask proqramında necə istifadə etmək olar + +Məlumatları təmizləmək və modelimizi öyrətmək üçün noutbuklardan istifadəni davam etdirəcəyik. Prosesi bir addım irəli aparıb modeli “yabanı mühitdə” istifadə etməklə təcrübə apara bilərsiniz: Veb tətbiq daxilində bunu etmək üçün Flask istifadə edərək veb proqram qurmalısınız. + +## [Mühazirədən əvvəl test](https://gray-sand-07a10f403.1.azurestaticapps.net/quiz/17/?loc=az) + +## Proqram yaratmaq + +Maşın öyrənmə modellərini emal etmək üçün veb tətbiq yaratmağın bir neçə üsulu var. Veb arxitekturası modelin öyrədilməsinə birbaşa təsir göstərə bilər. Fərz edin ki, data ilə bağlı elmi qrupda proqram daxilində istifadə etməyinizi istədikləri modeli öyrədiblər. + +### Mülahizələr + +Soruşmalı olduğunuz çoxlu suallar var: + +- **Bu veb yoxsa mobil tətbiqdir?** Əgər mobil tətbiq yaradırsınızsa və tətbiqi IoT konteksində istifadə edəcəksinizsə, modeli Android və ya iOS tətbiqdə istifadə etmək üçün [TensorFlow Lite](https://www.tensorflow.org/lite/) istifadə edə bilərsiniz. +- **Model harada yerləşəcək?** Bulud yoxsa lokal yaddaşda? +- **Oflayn dəstək.** Tətbiq oflayn da işləməlidirmi? +- **Modeli öyrətmək üçün hansı texnologiya istifadə edilmişdir?** Seçilmiş texnologiya istifadə etməli olduğunuz alətlərə təsir göstərə bilər. + - **TensorFlow.** Məsələn, modeli TensorFlow istifadə edərək öyrədirsinizsə, ekosistem TensorFlow modelini veb proqramında istifadə etmək üçün çevirmək/dəyişdirmək imkanı verir. [TensorFlow.js](https://www.tensorflow.org/js/). + - **PyTorch.** Əgər modeli [PyTorch](https://pytorch.org/) ilə öyrədirsinizsə, onu [ONNX](https://onnx.ai/) istifadə edərək JavaScript veb tətbiqində [Onnx Runtime](https://www.onnxruntime.ai/) işlədə bilən xüsusi (Open Neural Network Exchange) formata eksport edə bilərsiniz. Bu seçim növbəti dərsdə Scikit tərəfindən öyrənilən model üçün araşdırılacaq. + - **Lobe.ai və ya Azure Custom Vision** Əgər modeli ML SaaS (Xidmət kimi Proqram) sistemi kimi [Lobe.ai](https://lobe.ai/) və ya [Azure Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77952-leestott) istifadə edərək öyrədirsinizsə, bu tip proqram təminatı bir çox platformalar üçün onu eksport etmək imkanı, həmçinin onlayn tətbiq tərəfindən buludda sorğulanan növbəli API yaradılmasını təmin edir. + +Bütöv bir Flask veb tətbiqi yaradaraq veb brauzerdə modeli öyrətmək imkanınız var. Bunu həm də JavaScript konteksində TensorFlow.js istifadə edərək də edə bilərsiniz. + +Məqsədə uyğun olaraq, Python əsaslı noutbuklarla işlədiyimizə görə öyrədilmiş modeli Python-da qurulmuş veb tətbiqi ilə oxuna bilən formatda daxil etmək üçün atmalı olduğunuz addımları araşdıraq. + +## Alət + +Bu tapşırığı yerinə yetirmək üçün iki alətə ehtiyacınız var: Python-da işləyən Flask və Pickle. + +✅ [Flask](https://palletsprojects.com/p/flask/) nədir? Yaradıcıları tərəfindən 'mikro-çərçivə' kimi adlandırılan Flask, Python istifadə edərək veb çərçivələrin əsas xüsusiyyətlərini və veb səhifələr yaratmaq üçün şablon mexanizmini təmin edir. Flask yaratmaq üçün [bu öyrənmə moduluna](https://docs.microsoft.com/learn/modules/python-flask-build-ai-web-app?WT.mc_id=academic-77952-leestott) nəzər yetirin. + +✅ [Pickle](https://docs.python.org/3/library/pickle.html) nədir? Pickle 🥒, Python obyekt strukturunu seriallaşdıran və deseriallaşdıran bir Python moduludur. Modeli 'pickle' etdiyiniz zaman, onun strukturunu veb üçün seriallaşdırır və dəqiqləşdirirsiniz. Diqqət edin ki pickle mahiyyətcə təhlükəsiz deyil. Bu səbəbdən faylı 'un-pickle' etməyə çağrıldıqda diqqətli olmaq lazımdır. 'pickle' edilmiş fayl `.pkl` uzantısına sahib olur. + +## Məşğələ - datanı təmizlə + +Bu dərsdə [NUFORC](https://nuforc.org) (Milli UFO Melumatlar Mərkəzi) tərəfindən toplanmış 80,000 UFO görülməsi məlumatlarından istifadə edəcəksiniz. Bu məlumatlar UFO görmələrin maraqlı təsvirlərini əhatə edir, məsələn: + +- **Əhatəli nümunə.** "Bir adam gecə otlu bir tarlada parlayan işıq şüasından çıxır və Texas Instruments dayanacağına tərəf qaçır". +- **Qısa nümunə.** "İşıq bizi təqib edir". + +[ufos.csv](../data/ufos.csv) cədvəli görülmənin baş verdiyi `şəhər`, `ştat` and `ölkə`, obyektin `forması`, `coğrafi enlik` və `çoğrafi uzunluq` sütunlarına bölün. + +Bu dərsə daxil olan boş [qeyd notbuk](../notebook.ipynb) verilmişdir. + +1. `pandas`, `matplotlib`, və `numpy` kitabxanalarını və ufolar cədvəlini keçən dərs olduğu kimi daxil edin. Sadə verilənlər toplusuna nəzər yetirin: + + ```python + import pandas as pd + import numpy as np + + ufos = pd.read_csv('./data/ufos.csv') + ufos.head() + ``` + +1. UFO məlumatlarını yeni başlıqlarla kiçik dataframə çevirin. `Ölkə` sütununda unikal dəyərləri yoxlayın. + + ```python + ufos = pd.DataFrame({'Seconds': ufos['duration (seconds)'], 'Country': ufos['country'],'Latitude': ufos['latitude'],'Longitude': ufos['longitude']}) + + ufos.Country.unique() + ``` + +1. İndi isə, prosesi işlənməli olan datada lazımsız null dəyərləri silməklə və ancaq 1-60 saniyə arası görülmələri daxil etməklə qısalda bilərik: + + ```python + ufos.dropna(inplace=True) + + ufos = ufos[(ufos['Seconds'] >= 1) & (ufos['Seconds'] <= 60)] + + ufos.info() + ``` + +1. Scikit-learn `LabelEncoder` kitabxanası ölkələr üçün növbəli dəyərləri rəqəmlərə keçirtmək üçündür: + + ✅ LabelEncoder datanı əlifba sırası ilə kodlaşdırır. + + ```python + from sklearn.preprocessing import LabelEncoder + + ufos['Country'] = LabelEncoder().fit_transform(ufos['Country']) + + ufos.head() + ``` + + Datanız belə görünməlidir: + + ```output + Seconds Country Latitude Longitude + 2 20.0 3 53.200000 -2.916667 + 3 20.0 4 28.978333 -96.645833 + 14 30.0 4 35.823889 -80.253611 + 23 60.0 4 45.582778 -122.352222 + 24 3.0 3 51.783333 -0.783333 + ``` + +## Məşğələ - modelini yarat + +Artıq modeli öyrətmək üçün məlumatları tədris və sınaq qruplarına bölməyə başlaya bilərsiniz. + +1. X vektorunda öyrətmək istədiyiniz 3 xüsusiyyəti seçin, və Y vektoru `Ölkə` olacaq. `Saniyələr`, `Coğrafi enlik`, `Coğrafi uzunluq` daxil edə bilməli və ölkənin `id` dəyərini geri qaytara bilməlisiniz. + + ```python + from sklearn.model_selection import train_test_split + + Selected_features = ['Seconds','Latitude','Longitude'] + + X = ufos[Selected_features] + y = ufos['Country'] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) + ``` + +1. Məntiqi reqressiya testi istifadə etməklə modelinizi öyrədin: + + ```python + from sklearn.metrics import accuracy_score, classification_report + from sklearn.linear_model import LogisticRegression + model = LogisticRegression() + model.fit(X_train, y_train) + predictions = model.predict(X_test) + + print(classification_report(y_test, predictions)) + print('Predicted labels: ', predictions) + print('Accuracy: ', accuracy_score(y_test, predictions)) + ``` + +Dəqiqlik o qədər də pis deyil **(təxminən 95%)**. Təəcüblü deyil ki `Ölkə` və `Coğrafi enlik, Coğrafi uzunluq` məlumatları əlaqəlidir. + +Yaratdığımız model o qədər də inqilabi deyil, çünki `Ölkə`ni `Coğrafi enlik` və `Coğrafi uzunluq`dan çıxara bilməliyik. Bununla belə, təmizlədiyiniz, daxil etdiyiniz, daha sonra ilkin məlumatlardan öyrətməyə çalışdığımız məlumat datanı məşq etdirmək üçün faydalıdır. Bu modeli veb proqramında istifadə edək. + +## Məşğələ - modelini 'pikl' edək + +İndi, modelinizi _pikl_ etməyin vaxtıdır! Bunu bir neçə kod sətiri ilə edə bilərsiniz. Pikl(turşu) halına gələndən sonra, pikl modelinizi yükləyin və onu saniyə, coğrafi enlik və coğrafi uzunluq dəyərlərini ehtiva edən məlumat massivi ilə sınaqdan keçirin. + +```python +import pickle +model_filename = 'ufo-model.pkl' +pickle.dump(model, open(model_filename,'wb')) + +model = pickle.load(open('ufo-model.pkl','rb')) +print(model.predict([[50,44,-12]])) +``` + +Model **'3'** qaytarır, hansıki Birləşmiş Krallığın kodudur. İnanılmaz! 👽 + +## Məşğələ - Flask tətbiq yarat + +İndi isə modeli çağırmaq və oxşar nəticələri qaytarmaq üçün Flask proqramı yarada bilərsiniz, lakin vizual olaraq daha xoşagəlimli olmalıdır. + +1. **web-app** adlanan bir qovluq yaratmaqla başlayın. Qovluq _notebook.ipynb_ faylının yanında _ufo-model.pkl_ faylınızın yerləşdiyi yerdə olmalıdır. + +1. Həmin qovluqda daha üç qovluq yaradın: daxilində **css** olan **static** qovluğu və **templates**. İndi aşağıdakı formada fayl və istiqamətlər olmalıdır: + + ```output + web-app/ + static/ + css/ + templates/ + notebook.ipynb + ufo-model.pkl + ``` + + ✅ Yekunlaşmış tətbiq üçün mənbə faylına nəzər yetirin. + +1. _web-app_ qovluğunda yaratmalı olduğunuz ilk fayl **requirements.txt** faylıdır. JavaScript tətbiqində _package.json_ faylı kimi, tətbiq tərəfindən tələb olunan faylları sıralayır. **requirements.txt** faylında aşağıdakı sətirləri əlavə edin: + + ```text + scikit-learn + pandas + numpy + flask + ``` + +1. İndi isə, _web-app_ faylına keçməklə tətbiqi işə salın: + + ```bash + cd web-app + ``` + +1. Terminalınızda _requirements.txt_ faylında qeyd olunmuş kitabxanaları yükləmək üçün `pip install` yazın: + + ```bash + pip install -r requirements.txt + ``` + +1. Artıq daha üç fayl yaradaraq tətbiqi hazırlamağı yekunlaşdıra bilərik: + + 1. **app.py** faylını əsas qovluqda yaradın. + 2. **index.html** faylını _templates_ kataloqunda yaradın. + 3. **styles.css** faylını _static/css_ kataloqunda yaradın. + +1. _styles.css_ faylını aşağıdakı bir neçə dizayn skriptləri ilə yaradın: + + ```css + body { + width: 100%; + height: 100%; + font-family: 'Helvetica'; + background: black; + color: #fff; + text-align: center; + letter-spacing: 1.4px; + font-size: 30px; + } + + input { + min-width: 150px; + } + + .grid { + width: 300px; + border: 1px solid #2d2d2d; + display: grid; + justify-content: center; + margin: 20px auto; + } + + .box { + color: #fff; + background: #2d2d2d; + padding: 12px; + display: inline-block; + } + ``` + +1. Daha sonra, _index.html_ faylını yaradın: + + ```html + + +
+ +Saniyə dəyəri, coğrafi enlik və corafi uzunluğa görə, hansı ölkə UFO gördüyünü bildirmişdir?
+ + + +{{ prediction_text }}
+ +