> ### [Ši pamoka taip pat prieinama R kalba!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [Ši pamoka prieinama ir R kalba!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Įvadas
Iki šiol jūs susipažinote, kas yra regresija, naudodami pavyzdinius duomenis iš moliūgų kainų rinkinio, kurį naudosime per visą pamoką. Taip pat juos vizualizavote naudodami Matplotlib.
Iki šiol jau tyrinėjote, kas yra regresija, naudodamiesi pavyzdiniais duomenimis iš moliūgų kainų duomenų rinkinio, kurį naudosime visos pamokos metu. Taip pat jį vizualizavote naudodami Matplotlib.
Dabar esate pasiruošę giliau gilintis į regresiją ML kontekste. Nors vizualizacija leidžia geriau suprasti duomenis, tikroji Mašininio Mokymosi galia kyla iš _modelių mokymo_. Modeliai mokomi pagal istorinį duomenų rinkinį, kad automatiškai užfiksuotų duomenų priklausomybes ir leistų prognozuoti rezultatus naujiems, anksčiau nematytiems duomenims.
Dabar esate pasiruošę gilintis į regresiją mašininio mokymosi srityje. Nors vizualizacija leidžia suprasti duomenis, tikroji mašininio mokymosi galia yra modelių _mokymas_. Modeliai yra mokomi pagal istoriniai duomenys, kad automatiškai aptiktų duomenų priklausomybes ir leistų prognozuoti rezultatus naujiems, modeliui nematytiems duomenims.
Šioje pamokoje sužinosite daugiau apie du regresijos tipus: _pagrindinę linijinę regresiją_ ir _polininę regresiją_, taip pat apie dalį matematikos, esančios šių metodų pagrindu. Šie modeliai leis mums prognozuoti moliūgų kainas, remiantis skirtingais įvesties duomenimis.
Šioje pamokoje sužinosite daugiau apie du regresijos tipus: _pagrindinę linijinę regresiją_ ir _polinominę regresiją_, kartu su kai kuriais šių technikų matematiniu pagrindu. Šie modeliai leis prognozuoti moliūgų kainas, atsižvelgiant į skirtingus įvesties duomenis.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Paspauskite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą linijinės regresijos apžvalgą.
> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie linijinę regresiją.
> Per visą šią kurso programą mes laikome, kad matematikos žinios minimalios ir stengiamės jas padaryti prieinamas studentams iš kitų sričių, todėl atkreipkite dėmesį į pastabas, 🧮 iškylamuosius langus, diagramas ir kitus mokymosi įrankius, padedančius suvokimui.
> Visos šios mokymo programos metu pradedame nuo minimalių matematikos žinių, siekdami, kad ji būtų prieinama studentams iš kitų sričių, todėl atkreipkite dėmesį į pastabas, 🧮 išryškinimus, diagramas ir kitas mokymosi priemones.
### Reikalavimai
### Priešžinios
Jau turėtumėte būti susipažinę su moliūgų duomenų struktūra, kurią nagrinėjame. Ją galite rasti iš anksto įkeltą ir išvalytą šios pamokos _notebook.ipynb_ faile. Faile moliūgų kaina rodoma už bushelį naujame duomenų rinkinyje. Užtikrinkite, kad galite paleisti šiuos užrašų knygelių failus Visual Studio Code branduoliuose.
Turėtumėte jau būti susipažinę su moliūgų duomenų struktūra, kurią nagrinėjame. Juos rasite iš anksto įkeltus ir išvalytus šiame pamokos _notebook.ipynb_ faile. faile moliūgų kaina pateikiama už sklypą naujame duomenų rinkinyje. Įsitikinkite, kad galite paleisti šiuos užrašų knygeles Visual Studio Code branduoliuose.
### Paruošimas
Primename, kad duomenis įkeliame tam, kad galėtume užduoti klausimus.
Primename, kad įkeliate šiuos duomenis, kad galėtumėte užduoti klausimus apie juos.
- Kada geriausia pirkti moliūgus?
- Kokios kainos galiu tikėtis už iešminius moliūgus dėžėje?
- Ar pirkti juos per pusės bushelio krepšius, ar per 1 1/9 bushelio dėžutes?
Toliau gilinamės į šiuos duomenis.
- Kokios kainos galima tikėtis už dėžę miniatiūrinių moliūgų?
- Ar juos verta pirkti pusės sklypo krepšyje, ar vieno ir vienos devintosios sklypo dėžėje?
Toliau gilinkimės į šiuos duomenis.
Praeitoje pamokoje sukūrėte Pandas duomenų rinkinį ir užpildėte jį dalimi originalių duomenų, standartizuodami kainas pagal bushelį. Tačiau tai leido surinkti tik apie 400 duomenų taškų ir tik rudens mėnesiams.
Ankstesnėje pamokoje sukūrėte Pandų duomenų rėmelį ir užpildėte jį dalimi pradinio duomenų rinkinio, standartizuodami kainas pagal sklypą. Tačiau tai leido užfiksuoti tik apie 400 duomenų taškų ir tik rudens mėnesiams.
Pažiūrėkite į duomenis, kuriuos iš anksto įkėlėme šios pamokos užrašų knygelėje. Duomenys įkelti ir parodytas pradinis sklaidos grafikas rodo mėnesio duomenis. Galbūt galime dar šiek tiek plačiau pažvelgti į duomenų pobūdį, juos dar labiau išvalydami.
Pažvelkite į duomenis, kuriuos iš anksto įkėlėme šios pamokos knygoje. Duomenys yra įkelti ir pavaizduota pradinė paskirstymo diagrama, rodanti mėnesių duomenis. Galbūt galime gauti šiek tiek daugiau informacijos apie duomenų prigimtį, juos dar labiau išvalydami.
## Linijinės regresijos tiesė
Kaip sužinojote 1-pamokoje, linijinės regresijos užduotis yra nubraižyti tiesę, kuri:
Kaip sužinojote 1 pamokoje, linijinės regresijos tikslas yra nubrėžti tiesę, kad galėtume:
- **Atvaizduoja kintamųjų ryšius**. Parodo sąryšį tarp kintamųjų
- **Leidžia prognozuoti**. Tiksliai numatyti, kur naujas duomenų taškas kris santykyje su ta tiesė.
- **Rodyti kintamųjų santykius**. Parodyti santykį tarp kintamųjų
- **Daryti prognozes**. Tiksliai prognozuoti, kur nukris naujas taškas, palyginti su ta linija.
Įprasta **mažiausių kvadratų regresijoje** piešti tokį tiesiųjį grafiką. Terminas „Mažiausių kvadratų“ reiškia procesą, kurio metu minimalizuojama bendroji klaida modelyje. Kiekvienam duomenų taškui matuojame vertikalų atstumą (vadinamą likučiu) tarp tikrosios reikšmės ir mūsų regresijos linijos.
Įprasta naudoti **mažiausių kvadratų regresiją** tokio tipo linijai nubrėžti. Terminas „mažiausių kvadratų“ reiškia procesą, kai sumažinamas bendras modelio klaidos dydis. Kiekvienam duomenų taškui matuojamas vertikalus atstumas (vadinamas likučiu) tarp tikro taško ir mūsų regresijos linijos.
Šiuos atstumus kvadratuojame dėl dviejų pagrindinių priežasčių:
Šiuos atstumus pakeliame kvadratu dėl dviejų pagrindinių priežasčių:
1. **Dydžio svarba, o ne kryptis:** Norime, kad klaida -5 būtų vertinama taip pat kaip +5. Kvadratuojant visos reikšmės tampa teigiamos.
1. **Dydis svarbiau už kryptį:** Norime, kad klaida -5 būtų tokia pat reikšminga kaip ir klaida +5. Keldami kvadratu visa paverčiame teigiama.
2. **Išskirtinių atvejų bausmė:** Kvadratuojant didelės klaidos įgauna didesnį svorį, dėl to tiesė stengiasi būti arčiau toli esančių taškų.
2. **Išskirtinių reikšmių bausmė:** Kvadratu pakeldami didesnė klaida sveria labiau, priversdami tiesę artėti prie tolimų taškų.
Tada sudedame visus kvadratuotus atstumus. Mūsų tikslas – rasti tą tiesę, kuri minimizuoja šį sumą (mažiausia įmanoma reikšmė) – todėl vadinama „mažiausių kvadratų“ metodu.
Tada sudedame visas pakeltas kvadratu klaidas. Mūsų tikslas yra rasti tokią tiesę, kurioje ši suma būtų mažiausia (mažiausia įmanoma reikšmė) – todėl pavadinimas „mažiausių kvadratų“.
> **🧮 Parodykite man matematiką**
>
> Ši tiesė, vadinama _geriausiai pritaikyta tiesė_, gali būti išreikšta [lygtimi](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> **🧮 Parodykite man matematiką**
>
> Ši linija, vadinama _geriausiai atitinkančia linija_, gali būti išreikšta [lygtimi](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` yra 'paaiškinamasis kintamasis'. `Y` yra 'priklausomas kintamasis'. Tiesės nuolydis yra `b`, o `a` yra y-interceptas, kuris reiškia `Y` reikšmę, kai `X = 0`.
> `X` yra „paaiškinamasis kintamasis“. `Y` yra „priklausomas kintamasis“. Linijos nuolydis yra `b`, o `a` yra y-kirčio reikšmė, kuri nurodo `Y` reikšmę, kai `X = 0`.
>
>
> Pirmiausia apskaičiuojame nuolydį `b`. Infografika autoriaus [Jen Looper](https://twitter.com/jenlooper)
> Pirmiausia apskaičiuokite nuolydį `b`. Infografika iš [Jen Looper](https://twitter.com/jenlooper)
>
> Kitaip tariant, kalbant apie mūsų moliūgų duomenų pradinį klausimą: „prognozuoti moliūgų kainą už bushelį pagal mėnesį“, `X` reikštų kainą, o `Y` būtų pardavimo mėnuo.
> Kitais žodžiais tariant, ir remiantis mūsų moliūgų duomenų pradiniu klausimu: „prognozuoti moliūgo kainą už sklypą pagal mėnesį“, `X` būtų kaina, o `Y`– pardavimo mėnuo.
>
>
> Apskaičiuokite `Y` reikšmę. Jei mokate apie 4 USD, tai turi būti balandis! Infografika autoriaus [Jen Looper](https://twitter.com/jenlooper)
> Apskaičiuokite `Y` reikšmę. Jei mokate apie 4 dolerius, tai turi būti balandis! Infografika iš [Jen Looper](https://twitter.com/jenlooper)
>
> Matematikos formule turi parodyti linijos nuolydį, kuris taip pat priklauso nuo sankirtos, arba kur `Y` yra, kai `X=0`.
> Formulė, kuri apskaičiuoja liniją, turi parodyti linijos nuolydį, kuris taip pat priklauso nuo kirčio, arba kur yra `Y`, kai `X = 0`.
>
> Galite stebėti skaičiavimo metodą šioje svetainėje [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Taip pat apsilankykite [Šiame mažiausių kvadratų skaičiuoklyje](https://www.mathsisfun.com/data/least-squares-calculator.html), kad pamatytumėte, kaip skaičių vertės veikia tiesę.
> Galite pamatyti šios vertės skaičiavimo metodą svetainėje [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Taip pat apsilankykite [šiame mažiausių kvadratų skaičiuoklyje](https://www.mathsisfun.com/data/least-squares-calculator.html), norėdami pamatyti, kaip skaičių vertės veikia liniją.
## Koreliacija
Dar vienas svarbus terminas yra **koreliacijos koeficientas** tarp tam tikrų X ir Y kintamųjų. Naudodami sklaidos grafiką greitai galite vizualizuoti šį koeficientą. Grafikas su duomenų taškais, susitelkusiais į tvarkingą liniją, turi aukštą koreliaciją, o su duomenų taškais išsibarsčiusiais tarp X ir Y - žemą koreliaciją.
Dar vienas suprantamas terminas yra **koreliacijos koeficientas** tarp pasirinktų `X` ir `Y` kintamųjų. Naudodami sklaidos diagramą galite greitai vizualizuoti šį koeficientą. Taškai, išsidėstę tvarkingai linijoje, rodo aukštą koreliaciją, o taškai, išmėtyti plačiai tarp X ir Y, rodo mažą koreliaciją.
Geras linijinės regresijos modelis turi būti toks, kurio koreliacijos koeficientas pagal mažiausių kvadratų regresijos metodą yra aukštas (arčiau 1 nei 0).
Geras linijinės regresijos modelis bus tas, kuris turi aukštą (artimą 1, o ne 0) koreliacijos koeficientą, naudojant mažiausių kvadratų regresijos metodą su regresijos linija.
✅ Paleiskite šios pamokos užrašų knygelę ir pažiūrėkite į Month–Price sklaidos grafiką. Ar duomenys, susiejantys mėnesį su moliūgų kainomis, atrodo turintys aukštą ar žemą koreliaciją pagal jūsų vizualinę sklaidos grafiką? Ar tai pasikeičia, jei vietoje `Month` panaudojate smulkesnį matavimą, pvz., *metų dieną* (t.y. dienų skaičių nuo metų pradžios)?
✅ Paleiskite šios pamokos užrašų knygą ir pažiūrėkite į mėnesio ir kainos sklaidos diagramą. Ar pagal jūsų sklaidos diagramos vizualinį įvertinimą moliūgų pardavimų duomenys, susiejantys mėnesį su kaina, atrodo turintys aukštą ar žemą koreliaciją? Ar tai pasikeičia, jei naudotumėte smulkesnį matavimą, pvz., *metų dienos* (t. y. dienų skaičių nuo metų pradžios)?
Toliau pateiktame kode skelbiame, kad duomenys buvo sutvarkyti ir mes turime duomenų rėmelį `new_pumpkins`, panašų į šį:
Žemiau pateiktame kode laikysimės, kad duomenys yra išvalyti ir turime duomenų rėmelį `new_pumpkins`, panašų į šį:
ID | Mėnuo | MetųDiena | Veislė | Miestas | Pakuotė | Žemiausia kaina | Aukščiausia kaina | Kaina
> Duomenų valymo kodas yra prieinamas faile [`notebook.ipynb`](notebook.ipynb). Atlikome tuos pačius valymo žingsnius kaip ir ankstesnėje pamokoje ir apskaičiavome `DayOfYear` stulpelį naudodami šią išraišką:
> Duomenų valymo kodas pateiktas [`notebook.ipynb`](notebook.ipynb). Atlikome tokius pačius valymo veiksmus kaip ankstesnėje pamokoje ir apskaičiavome `DayOfYear` stulpelį naudodami šią išraišką:
Dabar, kai suprantate linijinės regresijos matematinius pagrindus, sukurkime Regresijos modelį, kad sužinotume, ar galime prognozuoti, kuri moliūgų pakuotė turės geriausias kainas. Kas nors, perkantis moliūgus šventiniam moliūgų laukui, norėtų turėti šią informaciją, kad galėtų optimizuoti moliūgų pirkimus.
Dabar, kai suprantate linijinės regresijos matematiką, sukurkime regresijos modelį, kad pamatytume, ar galime prognozuoti, kuri moliūgų pakuotė turės geriausias kainas. Moliūgų pirkėjas, norintis sukurti moliūgų dekoracijų kampelį šventėms, gali norėti šios informacijos, kad optimizuotų moliūgų pirkimą.
## Koreliacijos paieška
## Ieškome koreliacijos
[](https://youtu.be/uoRq-lW2eQo "ML pradedantiesiems - Koreliacijos paieška: raktas į linijinę regresiją")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Paspauskite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą koreliacijos apžvalgą.
> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie koreliaciją.
Iš ankstesnės pamokos greičiausiai jau matėte, kad vidutinė kainų tendencija pagal mėnesius atrodo maždaug taip:
Iš ankstesnės pamokos tikriausiai matėte, kad vidutinė kaina skirtingais mėnesiais atrodo maždaug taip:
<imgalt="Vidutinė kaina pagal mėnesį" src="../../../../translated_images/lt/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Average price by month" src="../../../../translated_images/lt/barchart.a833ea9194346d76.webp"width="50%"/>
Tai rodo, kad turėtų būti kažkokia koreliacija, ir galime bandyti apmokyti linijinės regresijos modelį prognozuoti ryšį tarp `Month` ir `Price` arba tarp `DayOfYear` ir `Price`. Štai sklaidos grafikas, rodantis pastarąjį ryšį:
Tai leidžia manyti, kad turėtų būti tam tikra koreliacija, ir galime pabandyti apmokyti linijinį regresijos modelį, prognozuojant santykį tarp `Month` ir `Price` arba tarp `DayOfYear` ir `Price`. Žemiau pateikta sklaidos diagrama rodo pastarąjį ryšį:
<imgalt="Sklaidos grafikas: Kaina prieš Metų dieną" src="../../../../translated_images/lt/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/lt/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Pažiūrėkime, ar yra koreliacija naudodami funkciją `corr`:
Pažiūrėkime, ar yra koreliacija, naudodami funkciją `corr`:
Atrodo, kad koreliacija gana maža, -0,15 pagal `Month` ir -0,17 pagal `DayOfMonth`, bet gali būti kitas svarbus ryšys. Atrodo, kad kainų grupės atitinka skirtingas moliūgų veisles. Norėdami patvirtinti šią hipotezę, nubraižykime kiekvieną moliūgų kategoriją skirtingomis spalvomis. Paduodami `ax` parametrą funkcijai `scatter`, galime nubraižyti visus taškus vienoje diagramoje:
Atrodo, kad koreliacija yra gana maža, -0.15 pagal `Mėnesį` ir -0.17 pagal `Metų dieną`, tačiau gali būti kita svarbi priklausomybė. Atrodo, kad yra skirtingų kainų grupių, atitinkančių skirtingas moliūgų veisles. Norint patvirtinti šią hipotezę, nubraižykime kiekvieną moliūgų kategoriją skirtinga spalva. Pateikdami parametrą `ax` funkcijai `scatter` galime nubrėžti visus taškus viename grafike:
```python
ax=None
@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Sklaidos grafikas: Kaina prieš Metų dieną su spalvomis" src="../../../../translated_images/lt/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/lt/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Mūsų tyrimas rodo, kad veislė labiau veikia bendrą kainą nei tikroji pardavimo data. Tai galime pamatyti ir juostinėje diagramoje:
Mūsų tyrimas rodo, kad veislė daro didesnį poveikį bendrai kainai nei tikrasis pardavimo laikas. Tai matosi ir stulpeline diagramoje:
<imgalt="Sklaidos grafikas: Kaina prieš Metų dieną, tik pie type" src="../../../../translated_images/lt/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/lt/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Jei dabar apskaičiuosime koreliaciją tarp `Price` ir `DayOfYear` panaudodami funkciją `corr`, gausime kažką panašaus į `-0.27`– o tai reiškia, kad verta apmokyti prognozuojamą modelį.
Jei dabar apskaičiuosime koreliaciją tarp `Price` ir `DayOfYear`, naudodami funkciją `corr`, gausime apie `-0.27` - tai reiškia, kad verta mokyti prognozinį modelį.
> Prieš pradėdami apmokyti linijinės regresijos modelį, svarbu įsitikinti, kad duomenys yra švarūs. Linijinė regresija prastai veikia su trūkstamomis reikšmėmis, todėl verta pašalinti visas tuščias langelius:
> Prieš mokant linijinį regresijos modelį svarbu įsitikinti, kad mūsų duomenys yra švarūs. Linijinė regresija blogai veikia su trūkstamomis reikšmėmis, todėl verta atsikratyti visų tuščių langelių:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Kitas būdas - užpildyti tuščias reikšmes atitinkamų stulpelių vidurkiais.
Kita galimybė būtų užpildyti trūkstamas reikšmes vidutinėmis tos stulpelio reikšmėmis.
## Paprasta linijinė regresija
[](https://youtu.be/e4c_UP2fSjg "ML pradedantiesiems - Linijinė ir polininė regresija naudojant Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Paspauskite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą linijinės ir polininės regresijos apžvalgą.
> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie linijinę ir polinominę regresiją.
Mūsų Linijinės regresijos modelio mokymui naudosime **Scikit-learn** biblioteką.
Norėdami apmokyti mūsų linijinį regresijos modelį, naudosime **Scikit-learn** biblioteką.
```python
from sklearn.linear_model import LinearRegression
@ -183,48 +183,48 @@ from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Pradėsime atskirdami įvesties reikšmes ( požymius) ir laukiamą išvestį (etiketę) į atskirus numpy masyvus:
Pradėsime atskirdami įvesties reikšmes (požymius) ir tikėtiną išvestį (etiketę) į atskirus numpy masyvus:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Atkreipkite dėmesį, kad reikėjo atlikti `reshape` su įvesties duomenimis, kad Linijinės regresijos paketas suprastų juos teisingai. Linijinė regresija laukia 2D masyvo kaip įvesties, kur kiekviena masyvo eilutė atitinka požymių vektorių. Mūsų atveju, kai turime tik vieną įvestį, mums reikia masyvo formos N×1, kur N – duomenų rinkinio dydis.
> Atkreipkite dėmesį, kad turėjome naudoti metodą `reshape` su įvesties duomenimis, kad linijinės regresijos paketas teisingai juos suprastų. Linijinė regresija tikisi 2D masyvo kaip įvesties, kur kiekviena masyvo eilutė atitinka požymių vektorių. Mūsų atveju, kadangi turime tik vieną įvestį – mums reikia masyvo formos N×1, kur N yra duomenų rinkinio dydis.
Tada turime padalinti duomenis į mokymo ir testavimo rinkinius, kad galėtume modelį patikrinti po mokymo:
Tuomet turime padalyti duomenis į mokymo ir testavimo rinkinius, kad vėliau patikrintume modelio veikimą:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Galiausiai, faktinis Linijinės regresijos modelio mokymas užima tik dvi kodo eilutes. Apibrėžiame `LinearRegression` objektą ir pritaikome jį mūsų duomenims naudodami `fit` metodą:
Galiausiai, tikrasis linijinės regresijos modelio apmokymas užtrunka tik dvi kodo eilutes. Sukuriame `LinearRegression` objektą ir pritaikome jį mūsų duomenims naudodami metodą `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
`LinearRegression` objektas po `fit`pritaikymo turi visus regresijos koeficientus, prie kurių galima prieiti naudodami `.coef_` savybę. Mūsų atveju yra tik vienas koeficientas, kuris turėtų būti maždaug`-0.017`. Tai reiškia, kad kainos, atrodo, šiek tiek krinta laikui bėgant, bet ne per daug, apie 2 centus per dieną. Taip pat galime prieiti prie regresijos susikirtimo su Y ašimi naudodami `lin_reg.intercept_`– mūsų atveju jis bus maždaug`21`, rodantis kainą metų pradžioje.
`LinearRegression` objektas po `fit`treniravimo turi visas regresijos koeficientus, kuriuos galima pasiekti naudojant `.coef_` savybę. Mūsų atveju yra tik vienas koeficientas, kuris turėtų būti apie`-0.017`. Tai reiškia, kad kainos, atrodo, šiek tiek krinta su laiku, bet ne per daug, apie 2 centus per dieną. Taip pat galime pasiekti regresijos sankirtos su Y ašimi tašką naudodami `lin_reg.intercept_`– mūsų atveju jis bus apie`21`, rodantis kainą metų pradžioje.
Norėdami pamatyti, kokia tiksliai yra mūsų modelio kokybė, galime prognozuoti kainas testiniame duomenų rinkinyje ir tada pamatuoti, kiek mūsų prognozės yra arti tikėtinų reikšmių. Tai galima padaryti naudojant vidurinės kvadratinės paklaidos (MSE) metriką, kuri yra visų kvadratinių skirtumų tarp tikėtinos ir prognozuotos reikšmės vidurkis.
Kad pamatytume, kaip tikslus mūsų modelis, galime prognozuoti kainas testiniame duomenų rinkinyje ir tada išmatuoti, kiek mūsų prognozės yra arti tikėtinų reikšmių. Tai galima padaryti naudojant šaknies kvadratinės vidutinės klaidos (RMSE) metriką, kuri yra visų kvadratinių skirtumų tarp tikėtinos ir prognozuotos reikšmės vidurkio šaknis.
Mūsų klaida atrodo apie 2 taškus, tai apie ~17%. Ne per gera. Kitas modelio kokybės indikatorius yra **nustatymo koeficientas**, kurį galima gauti taip:
Mūsų klaida atrodo apie 2 taškus, tai yra ~17%. Ne per gera. Kitas modelio kokybės rodiklis yra **determinacijos koeficientas**, kurį galima gauti taip:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Jei reikšmė yra 0, tai reiškia, kad modelis neatsižvelgia į įvesties duomenis ir veikia kaip *blogiausias tiesinis prognozuotojas*, kuris tiesiog paima vidutinę reikšmę. Reikšmė 1 reiškia, kad galime tobulai prognozuoti visas tikėtinas reikšmes. Mūsų atveju koeficientas yra apie 0.06, kas yra gan žema.
Jei reikšmė yra 0, tai reiškia, kad modelis neatsižvelgia į įvesties duomenis ir veikia kaip *blogiausias tiesinis prognozuotojas*, kuris tiesiog yra rezultatų vidurkis. 1 reikšmė reiškia, kad galime tobulai prognozuoti visus tikėtinus rezultatus. Mūsų atveju koeficientas yra apie 0.06, kas yra gana žema reikšmė.
Taip pat galime nupiešti testinius duomenis kartu su regresijos linija, kad geriau matytume, kaip regresija veikia mūsų atveju:
Taip pat galime pavaizduoti testinius duomenis kartu su regresijos linija, kad geriau matytume, kaip regresija veikia mūsų atveju:
```python
plt.scatter(X_test,y_test)
@ -235,17 +235,17 @@ plt.plot(X_test,pred)
## Polinominė regresija
Kitas linijinės regresijos tipas yra polinominė regresija. Nors kartais tarp kintamųjų yra tiesinė priklausomybė – kuo didesnis moliūnas tūriu, tuo didesnė kaina – kartais šių priklausomybių negalima nubraižyti plokštuma ar tiesia linija.
Kitas tiesinės regresijos tipas yra polinominė regresija. Nors kartais tarp kintamųjų yra tiesinis ryšys – kuo didesnė moliūgo apimtis, tuo didesnė kaina – kartais šių ryšių negalima nubraižyti kaip plokštumos ar tiesės.
✅ Čia yra [daugiau pavyzdžių](https://online.stat.psu.edu/stat501/lesson/9/9.8) duomenų, kuriems gali tikti polinominė regresija
✅ Štai [dar keletas pavyzdžių](https://online.stat.psu.edu/stat501/lesson/9/9.8) duomenų, kuriuose galima naudoti polinominę regresiją.
Dar kartą pažiūrėkite į priklausomybę tarp Datos ir Kainos. Ar šis taškų debesis būtinai turėtų būti analizuojamas tiesia linija? Ar kainos negali svyruoti? Tokiu atveju galite išbandyti polinominę regresiją.
Dar kartą pažiūrėkite į ryšį tarp Datos ir Kainos. Ar šis sklaidos grafikas tikrai turėtų būti analizuojamas tiesės pagalba? Ar kainos negali svyruoti? Tokiu atveju galima išbandyti polinominę regresiją.
✅ Polinomai yra matematiniai išraiškos, kurios gali susidaryti iš vieno ar daugiau kintamųjų ir koeficientų
✅ Polinomai yra matematiniai reiškiniai, galintys susidaryti iš vieno ar daugiau kintamųjų ir koeficientų.
Polinominė regresija sukuria išlenktą liniją, kad geriau pritaikytų netiesinius duomenis. Mūsų atveju, jei į įvesties duomenis įtrauksime pakeltą kvadratu `DayOfYear` kintamąjį, galėsime pritaikyti duomenis parabolės formai, turinčiai minimumą metų viduje.
Polinominė regresija sukuria išlenktą liniją, kad geriau atitiktų netiesinius duomenis. Mūsų atveju, jei įvesime kvadratinį `DayOfYear` kintamąjį, galėsime pritaikyti parabolinį kreivę, kuri turės minimumą tam tikru metų momentu.
Scikit-learn turi naudingą [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), leidžiančią sujungti skirtingus duomenų apdorojimo žingsnius. **Pipeline** yra **lankų** seka. Mūsų atveju sukursime pipeline, kuris pirmiausia prideda polinominius požymius prie mūsų modelio ir tada treniruoja regresiją:
Scikit-learn turi naudingą [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), leidžiantį sujungti kelis duomenų apdorojimo žingsnius. **Pipeline** yra **vertintojų** grandinė. Mūsų atveju sukursime pipeline, kuris pirmiausia pridės polinominius bruožus modelyje, o tada išmokys regresiją:
```python
from sklearn.preprocessing import PolynomialFeatures
Naudojant `PolynomialFeatures(2)` reiškia, kad įtraukiame visus antro laipsnio polinomus iš įvesties duomenų. Mūsų atveju tai reikštų tik `DayOfYear`<sup>2</sup>, bet turint du kintamuosius X ir Y, bus pridedama X<sup>2</sup>, XY ir Y<sup>2</sup>. Taip pat galime naudoti aukštesnio laipsnio polinomus, jei norime.
Naudojant `PolynomialFeatures(2)` reiškia, kad naudosime visus antrinės laipsnio polinomus iš įvesties duomenų. Mūsų atveju tai reikš tik `DayOfYear`<sup>2</sup>, tačiau turint du įvesties kintamuosius, pvz., X ir Y, bus pridėta X<sup>2</sup>, XY ir Y<sup>2</sup>. Taip pat galime naudoti aukštesnių laipsnių polinomus, jei norime.
Pipelines galima naudoti taip pat kaip originalų `LinearRegression` objektą, t.y. galime pritaikyti `fit` pipeline, o paskui naudoti `predict`, kad gautume prognozių rezultatus. Čia pateiktas grafikas, rodantis testinius duomenis ir aproksimacinę kreivę:
Pipeline galima naudoti taip pat kaip ir pradinį `LinearRegression` objektą, t.y. galime `fit` treniruoti pipeline ir tada naudoti `predict`, kad gautume prognozių rezultatus. Štai grafikas, rodantis testinius duomenis ir apytikslę kreivę:
Naudodami polinominę regresiją galime gauti šiek tiek mažesnį MSE ir didesnį nustatymo koeficientą, bet ne žymiai. Turime atsižvelgti į daugiau požymių!
Naudodami polinominę regresiją galime gauti šiek tiek mažesnę MSE ir didesnį determinacijos koeficientą, bet ne žymiai. Turime atsižvelgti į kitas savybes!
> Galite pastebėti, kad mažiausios moliūnų kainos fiksuojamos kažkur apie Heloviną. Kaip tai galėtumėte paaiškinti?
> Matote, kad mažiausios moliūgų kainos fiksuojamos kažkur apie Heloviną. Kaip tai galima paaiškinti?
🎃 Sveikiname, ką tik sukūrėte modelį, kuris gali padėti prognozuoti pyraginių moliūnų kainą. Tikriausiai galite tą patį padaryti visoms moliūnų rūšims, bet tai būtų varginanti užduotis. Dabar išmoksime, kaip atsižvelgti į moliūnų veislę mūsų modelyje!
🎃 Sveikiname, ką tik sukūrėte modelį, kuris gali padėti prognozuoti moliūgų rūšių kainas pyragams. Tikriausiai tą patį procedūrą galima pakartoti visoms moliūgų rūšims, tačiau tai būtų varginantis darbas. Dabar išmokime, kaip mūsų modelyje atsižvelgti į moliūgo veislę!
## Kategoriniai požymiai
## Kategoriniai bruožai
Idealioje pasaulyje norėtume galėti prognozuoti kainas skirtingoms moliūnų veislėms naudojant tą patį modelį. Tačiau stulpelis `Variety` yra šiek tiek kitoks nei, pavyzdžiui, `Month`, nes jame yra ne skaitinės reikšmės. Tokie stulpeliai vadinami **kategoriniais**.
Idealioje situacijoje norėtume prognozuoti kainas skirtingoms moliūgų veislėms naudojant tą patį modelį. Tačiau stulpelis `Variety` šiek tiek skiriasi nuo tokių stulpelių kaip `Month`, nes jis turi ne skaitines reikšmes. Tokie stulpeliai vadinami **kategoriniais**.
[](https://youtu.be/DYGliioIAE0 "ML pradedantiesiems – kategorinių požymių prognozės su tiesine regresija")
[](https://youtu.be/DYGliioIAE0 "ML pradedantiesiems – kategorinių bruožų prognozės su tiesine regresija")
> 🎥 Paspauskite aukščiau esančią nuotrauką, jei norite trumpą vaizdo įrašą apie kategorinių požymių naudojimą.
> 🎥 Paspauskite aukščiau esantį paveikslėlį, kad peržiūrėtumėte trumpą vaizdo įrašą apie kategorinius bruožus.
Čia matote, kaip vidutinė kaina priklauso nuo veislės:
<imgalt="Average price by variety"src="../../../../translated_images/lt/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Norėdami atsižvelgti į veislę, pirmiausia turime ją paversti skaitine reikšme, arba **užkoduoti** ją. Yra keli būdai, kaip tai padaryti:
Kad atsižvelgtume į veislę, pirmiausia turime ją paversti į skaitmeninę formą arba **užkoduoti**. Yra keli būdai, kaip tai padaryti:
* Paprastas **skaitmeninis kodavimas** sukurs skirtingų veislių lentelę, o tada veislės pavadinimą pakeis indeksu šioje lentelėje. Tai nėra geriausias sprendimas tiesinei regresijai, nes tiesinė regresija naudoja tikrąją skaitinę indekso reikšmę ir prideda ją prie rezultato pasvėrusi tam tikru koeficientu. Mūsų atveju priklausomybė tarp indekso numerio ir kainos yra aiškiai netiesinė, net jei užtikrintume, kad indeksai būtų išdėstyti tam tikra tvarka.
* **One-hot kodavimas** pakeis `Variety` stulpelį 4 skirtingais stulpeliais, po vieną kiekvienai veislei. Kiekviename stulpelyje bus `1`, jei atitinkamas įrašas yra tos veislės, ir `0` kitu atveju. Tai reiškia, kad tiesinėje regresijoje bus keturi koeficientai, po vieną kiekvienai moliūnų veislei, atsakingi už "pradinę kainą" (ar tiksliau - "papildomą kainą") konkrečiai veislei.
* Paprastas **skaitmeninis kodavimas** sukurs lentelę skirtingų veislių ir pakeis veislės pavadinimą į tos lentelės indeksą. Tai nėra geriausia idėja tiesinei regresijai, nes tiesinė regresija ima tikrąjį skaitinę indekso vertę ir prideda ją prie rezultato, daugindama iš tam tikro koeficiento. Mūsų atveju ryšys tarp indekso ir kainos yra akivaizdžiai nelinijinis, net jei užtikrinsime, kad indeksai būtų tam tikra tvarka.
* **Vieno karšto kodavimas (one-hot encoding)** pakeis `Variety` stulpelį į 4 atskirus stulpelius, po vieną kiekvienai veislei. Kiekviename stulpelyje bus `1`, jei atitinkamas įrašas priklauso tai veislei, ir `0` kitu atveju. Tai reiškia, kad tiesinėje regresijoje bus keturi koeficientai, po vieną kiekvienai moliūgų veislei, atsakingi už „pradinę kainą“ (ar tiksliau „papildomą kainą“) už tą tam tikrą veislę.
Žemiau pateiktas kodas, rodantis, kaip galima one-hot koduoti veislę:
Žemiau esantis kodas rodo, kaip galima vieno karšto kodavimo būdu užkoduoti veislę:
Norėdami apmokyti tiesinę regresiją, naudodami one-hot koduotą veislę kaip įvestį, tiesiog turime teisingai inicializuoti `X` ir `y` duomenis:
Kad treniruotume tiesinę regresiją su vieno karšto kodavimu kaip įvestimi, tereikia tinkamai inicializuoti `X` ir `y` duomenis:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Likusi kodo dalis tokia pati kaip aukščiau naudota tiesinei regresijai treniruoti. Jei išbandysite, pamatysite, kad vidutinė kvadratinė klaida bus maždaug tokia pati, bet gausime daug didesnį nustatymo koeficientą (~77%). Norėdami gauti dar tikslesnes prognozes, galime atsižvelgti į daugiau kategorinių požymių, taip pat į skaitinius požymius, tokius kaip `Month` ar `DayOfYear`. Norėdami gauti vieną didelį požymių masyvą, galime naudoti `join`:
Likusi kodo dalis ta pati, kaip ir anksčiau treniruojant tiesinę regresiją. Jei pabandysite, pamatysite, kad vidutinė kvadratinė klaida yra maždaug ta pati, tačiau gauname daug aukštesnį determinacijos koeficientą (~77%). Norint gauti dar tikslesnes prognozes, galime atsižvelgti į daugiau kategorinių savybių, taip pat ir į skaitmeninius kintamuosius, pavyzdžiui, `Month` ar `DayOfYear`. Kad gautume vieną didelį savybių masyvą, galime naudoti `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +319,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Čia taip pat atsižvelgiame į `City` ir `Package` tipą, kas duoda MSE 2.84 (10%) ir nustatymo koeficientą 0.94!
Čia taip pat atsižvelgiama į `City` ir `Package` tipus, kas suteikia MSE 2.84 (10%) ir determinaciją 0.94!
## Apibendrinimas
## Viso sujungimas
Kad sukurtume geriausią modelį, galime naudoti sujungtus (one-hot koduotus kategorinius + skaitinius) duomenis kartu su polinomine regresija. Štai viso kodo pavyzdys jūsų patogumui:
Kad sukurtume geriausią modelį, galime naudoti sujungtus (vieno karšto kodavimo kategorinius + skaitmeninius) duomenis kartu su polinomine regresija. Štai visas kodas jūsų patogumui:
```python
# nustatyti mokymo duomenis
@ -333,10 +333,10 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# padaryti treniruočių ir testavimo skaidymą
# atlikti mokymo ir testavimo duomenų padalijimą
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Tai turėtų duoti geriausią nustatymo koeficientą beveik 97% ir MSE=2.23 (~8% prognozės klaida).
Tai turėtų suteikti geriausią determinacijos koeficientą, beveik 97%, ir MSE=2.23 (~8% prognozės klaida).
| Modelis | MSE | Nustatymas |
|---------|-----|------------|
| `DayOfYear`Tiesinė | 2.77 (17.2%) | 0.07 |
| `DayOfYear`Polinominė | 2.73 (17.0%) | 0.08 |
| `Variety`Tiesinė | 5.24 (19.7%) | 0.77 |
| Visi požymiai Tiesinė | 2.84 (10.5%) | 0.94 |
| Visi požymiai Polinominė | 2.23 (8.25%) | 0.97 |
| Modelis | MSE | Determinacija |
|---------|-----|--------------|
| `DayOfYear`tiesinė | 2.77 (17.2%) | 0.07 |
| `DayOfYear`polinominė | 2.73 (17.0%) | 0.08 |
| `Variety`tiesinė | 5.24 (19.7%) | 0.77 |
| Visos savybės tiesinė | 2.84 (10.5%) | 0.94 |
| Visos savybės polinominė | 2.23 (8.25%) | 0.97 |
🏆 Puikiai! Pamokoje sukūrėte keturis regresijos modelius ir pagerinote modelio kokybę iki 97%. Galutinėje regresijos dalyje susipažinsite su logistinę regresiją, skirtą kategorijoms nustatyti.
🏆 Puikiai padirbėta! Šiame užsiėmime sukūrėte keturis regresijos modelius ir pagerinote modelio kokybę iki 97%. Paskutinėje regresijos dalyje sužinosite apie logistinę regresiją, skirtą klasių nustatymui.
---
## 🚀Iššūkis
Išbandykite kelis skirtingus kintamuosius šiame sąsiuvinyje, kad pamatytumėte, kaip koreliacija atitinka modelio tikslumą.
Išbandykite kelis skirtingus kintamuosius šiame užrašų knygelėje, kad pamatytumėte, kaip koreliacija atitinka modelio tikslumą.
Šioje pamokoje išmokome apie tiesinę regresiją. Yra ir kitų svarbių regresijos tipų. Perskaitykite apie žingsninę, „ridge“, lasso ir elasticnet technikas. Geras kursas, norint sužinoti daugiau, yra [Stanford statistinio mokymosi kursas](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
Šioje pamokoje sužinojome apie tiesinę regresiją. Yra ir kitų svarbių regresijos tipų. Perskaitykite apie žingsninę, Ridge, Lasso ir Elasticnet metodikas. Gera kursų programa norint gilintis yra [Stanfordo statistinės mokymosi kursas](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Užduotis
[Sukurti modelį](assignment.md)
[Sudaryti modelį](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, atkreipkite dėmesį, kad automatizuoti vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Svarbiai informacijai rekomenduojame pasitelkti profesionalų žmogišką vertimą. Mes neatsakome už bet kokius nesusipratimus ar klaidingą interpretaciją, kilusią naudojant šį vertimą.
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinėje informacijoje rekomenduojama naudotis profesionaliu žmogaus atliktu vertimu. Mes neatsakome už bet kokias nesusipratimus ar neteisingas interpretacijas, kylančias naudojant šį vertimą.
Šioje pamokoje naudosite duomenų rinkinį, kurį išsaugojote iš ankstesnės pamokos, pilną subalansuotų ir švarių duomenų apie virtuvės tipus.
Šiame pamokoje naudosite duomenų rinkinį, kurį išsaugojote iš paskutinės pamokos, pilną subalansuotų, švarių duomenų apie virtuves.
Naudodami šį duomenų rinkinį su įvairiais klasifikatoriais, _prognozuosite tam tikrą nacionalinę virtuvę pagal ingredientų grupę_. Tuo pačiu sužinosite daugiau apie tai, kaip algoritmai gali būti naudojami klasifikavimo užduotims.
Naudosite šį duomenų rinkinį su įvairiais klasifikatoriais, kad _numatytumėte tam tikrą nacionalinę virtuvę pagal ingredientų grupę_. Tai darydami sužinosite daugiau apie kai kuriuos būdus, kaip algoritmai gali būti panaudoti klasifikavimo užduotims.
Jei baigėte [1 pamoką](../1-Introduction/README.md), įsitikinkite, kad _cleaned_cuisines.csv_ failas yra `/data` aplanke, skirtame šioms keturioms pamokoms.
Jei baigėte [1-ą pamoką](../1-Introduction/README.md), įsitikinkite, kad šių keturių pamokų metu turite _cleaned_cuisines.csv_ failą pagrindiniame `/data` kataloge.
## Užduotis - prognozuoti nacionalinę virtuvę
## Užduotis - numatyti nacionalinę virtuvę
1. Dirbdami šios pamokos _notebook.ipynb_ aplanke, importuokite failą kartu su Pandas biblioteka:
1. Šios pamokos _notebook.ipynb_ aplanke importuokite tą failą kartu su Pandas biblioteka:
```python
import pandas as pd
@ -40,14 +40,14 @@ Jei baigėte [1 pamoką](../1-Introduction/README.md), įsitikinkite, kad _clean
import numpy as np
```
1. Padalinkite X ir y koordinates į du duomenų rėmelius mokymui. `cuisine` gali būti etikečių duomenų rėmelis:
1. Padalinkite X ir y koordinates į du duomenų kadrus treniravimui. `cuisine` gali būti žymių duomenų kadras:
```python
cuisines_label_df = cuisines_df['cuisine']
cuisines_label_df.head()
```
Tai atrodys taip:
Atrodys taip:
```output
0 indian
@ -58,7 +58,7 @@ Jei baigėte [1 pamoką](../1-Introduction/README.md), įsitikinkite, kad _clean
Name: cuisine, dtype: object
```
1. Pašalinkite `Unnamed: 0` stulpelį ir `cuisine` stulpelį, naudodami `drop()`. Likusius duomenis išsaugokite kaip mokymui tinkamus požymius:
1. Išmeskite `Unnamed: 0` ir `cuisine` stulpelius, naudodami `drop()`. Likusius duomenis išsaugokite kaip treniruojamus požymius:
Kai jūsų duomenys yra švarūs ir paruošti mokymui, turite nuspręsti, kokį algoritmą naudoti.
Kadangi jūsų duomenys švarūs ir pasiruošę mokymuisi, turite nuspręsti, kurį algoritmą naudoti šiai užduočiai.
Scikit-learn klasifikavimą priskiria prie Prižiūrimo Mokymosi (Supervised Learning), ir šioje kategorijoje rasite daugybę būdų klasifikuoti. [Įvairovė](https://scikit-learn.org/stable/supervised_learning.html) iš pradžių gali atrodyti gana paini. Šie metodai apima klasifikavimo technikas:
Scikit-learn klasifikaciją priskiria prie Prižiūrimo mokymosi (Supervised Learning), o šioje kategorijoje rasite daug skirtingų būdų klasifikuoti. [Įvairovė](https://scikit-learn.org/stable/supervised_learning.html) iš pirmo žvilgsnio yra ganėtinai didelė. Šie metodai visi apima klasifikavimo technikas:
- Daugiaklasiai ir daugiatiksliai algoritmai (daugiaklasis ir daugiatikslis klasifikavimas)
- Ansamblio metodai (voting Classifier)
- Keliaklasiai ir kelių išėjimų algoritmai (multiclass ir multilabel klasifikacija, multiclass-multioutput klasifikacija)
> Taip pat galite naudoti [neuroninius tinklus duomenims klasifikuoti](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), tačiau tai nėra šios pamokos tema.
> Taip pat galite naudoti [dirbtinius neuroninius tinklus duomenims klasifikuoti](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), tačiau tai ne šios pamokos tema.
### Kurį klasifikatorių pasirinkti?
### Kuri klasifikatorių pasirinkti?
Taigi, kurį klasifikatorių pasirinkti? Dažnai verta išbandyti kelis ir ieškoti geriausio rezultato. Scikit-learn siūlo [palyginimą](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) sukurto duomenų rinkinio pagrindu, lyginant KNeighbors, SVC dviem būdais, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB ir QuadraticDiscriminationAnalysis, vizualizuojant rezultatus:
Taigi, kurį klasifikatorių rinktis? Dažnai naudinga išbandyti kelis ir ieškoti geriausio rezultato. Scikit-learn siūlo [šalia šalia palyginimą](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) sukurtame duomenų rinkinyje, palyginant KNeighbors, SVC dviem būdais, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB ir QuadraticDiscrinationAnalysis, rodydami rezultatus vizualiai:
> AutoML išsprendžia šią problemą efektyviai, atlikdamas šiuos palyginimus debesyje, leidžiant jums pasirinkti geriausią algoritmą jūsų duomenims. Išbandykite [čia](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML šią problemą sprendžia efektyviai vykdydamas šiuos palyginimus debesyje ir leydamas išsirinkti geriausią algoritmą jūsų duomenims. Išbandykite [čia](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Geresnis požiūris
Geresnis būdas nei spėliojimas yra vadovautis idėjomis iš šio atsisiunčiamo [ML Cheat Sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Čia sužinome, kad mūsų daugiaklasio problemos atveju turime keletą pasirinkimų:
Tačiau geresnis būdas nei laužtu būdu spėlioti – sekti mintimis šioje atsisiunčiamoje [ML „Cheat sheet“](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Čia mes atrandame, kad mūsų keliaklasiui problemos sprendimui turime šiuos pasirinkimus:
> Microsoft algoritmų cheat sheet dalis, apibūdinanti daugiaklasio klasifikavimo galimybes

> Microsoft algoritmų „Cheat sheet“ ištrauka, aprašanti keliaklasių klasifikavimo galimybes
✅ Atsisiųskite šį cheat sheet, atsispausdinkite ir pakabinkite ant sienos!
✅ Atsisiųskite šį lapelį, išspausdinkite ir prikabinkite prie sienos!
### Argumentavimas
### Argumentacija
Pažiūrėkime, ar galime logiškai pasirinkti skirtingus metodus, atsižvelgdami į turimus apribojimus:
Pažiūrėkime, ar galime pamąstyti apie skirtingus požiūrius atsižvelgiant į turimas sąlygas:
- **Neuroniniai tinklai per sudėtingi**. Atsižvelgiant į mūsų švarius, bet minimalius duomenis ir tai, kad mokymą vykdome lokaliai per užrašų knygeles, neuroniniai tinklai yra per sudėtingi šiai užduočiai.
- **Dviejų klasių klasifikatorius netinka**. Mes nenaudojame dviejų klasių klasifikatoriaus, todėl tai atmeta one-vs-all metodą.
- **Sprendimų medis arba logistinė regresija galėtų veikti**. Sprendimų medis galėtų veikti, arba logistinė regresija daugiaklasiams duomenims.
- **Daugiaklasiai sustiprinti sprendimų medžiai sprendžia kitą problemą**. Daugiaklasiai sustiprinti sprendimų medžiai labiausiai tinka neparametrinėms užduotims, pvz., užduotims, skirtoms sudaryti reitingus, todėl jie mums nėra naudingi.
- **Neuroniniai tinklai yra per sunkūs**. Atsižvelgiant į švarius, bet minimaliai didelius duomenis ir faktą, kad mokymą vykdome vietoje su užrašų knygelėmis, neuroniniai tinklai yra per sunkūs šiai užduočiai.
- **Nenaudojamas dviejų klasių klasifikatorius**. Mes nenaudojame dviejų klasių klasifikatoriaus, taigi „one-vs-all“ metodas netinka.
- **Sprendimų medis arba logistinė regresija gali veikti**. Galėtų tikti sprendimų medis arba logistinė regresija keliaklasiams duomenims.
- **Keliaklasiai stiprinami sprendimų medžiai sprendžia kitokį uždavinį**. Keliakliai stiprinami sprendimų medžiai labiau tinka neparametrinėms užduotims, pvz., reitingų kūrimui, tad mums nėra naudingi.
### Naudojant Scikit-learn
### Naudojant Scikit-learn
Naudosime Scikit-learn analizuoti mūsų duomenis. Tačiau yra daug būdų naudoti logistinę regresiją Scikit-learn. Pažvelkite į [parametrus, kuriuos galima perduoti](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Naudosime Scikit-learn duomenų analizei. Tačiau logistinę regresiją Scikit-learn galima naudoti įvairiais būdais. Pažvelkite į [parametrus, kuriuos reikia perduoti](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Iš esmės yra du svarbūs parametrai - `multi_class` ir `solver` - kuriuos reikia nurodyti, kai prašome Scikit-learn atlikti logistinę regresiją. `multi_class` reikšmė taiko tam tikrą elgesį. Solver reikšmė nurodo, kokį algoritmą naudoti. Ne visi solver gali būti derinami su visomis `multi_class` reikšmėmis.
Iš esmės yra du svarbūs parametrai –`multi_class` ir `solver`– kuriuos reikia nurodyti prašant Scikit-learn atlikti logistinę regresiją. `multi_class` nustato tam tikrą elgesį. `solver` nurodo, kurį algoritmą naudoti. Ne visi sprendikliai tinka visiems `multi_class` parinkčių deriniams.
Pagal dokumentaciją, daugiaklasio atveju mokymo algoritmas:
Pagal dokumentaciją, keliaklasiu atveju, treniravimo algoritmas:
- **Naudoja one-vs-rest (OvR) schemą**, jei `multi_class`parinktis nustatyta kaip`ovr`
- **Naudoja kryžminio entropijos nuostolį**, jei `multi_class` parinktis nustatyta kaip `multinomial`. (Šiuo metu `multinomial` parinktis palaikoma tik su ‘lbfgs’, ‘sag’, ‘saga’ ir ‘newton-cg’ solver.)
- **Naudoja one-vs-rest (OvR) schemą**, jei `multi_class`nustatyta į`ovr`
- **Naudoja kryžminio entropijos nuostolio funkciją**, jei `multi_class` nustatyta į `multinomial`. (Šiuo metu `multinomial` parinktis palaikoma tik su `lbfgs`, `sag`, `saga` ir `newton-cg` sprendikliais.)"
> 🎓 Čia "schema" gali būti 'ovr' (one-vs-rest) arba 'multinomial'. Kadangi logistinė regresija iš esmės skirta dvejetainiam klasifikavimui, šios schemos leidžia jai geriau tvarkyti daugiaklasio klasifikavimo užduotis. [šaltinis](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 Čia „schema“ gali būti arba `ovr` (one-vs-rest), arba „multinomial“. Kadangi logistinė regresija iš esmės skirta dvejetainiaiems klasifikavimo uždaviniams, šios schemos leidžia geriau tvarkyti keliaklasius uždavinius. [šaltinis](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 "Solver" apibrėžiamas kaip "algoritmas, naudojamas optimizavimo problemoms spręsti". [šaltinis](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 „Solver“ apibrėžiamas kaip „algoritmas, naudojamas optimizacijos problemai spręsti“. [šaltinis](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn siūlo šią lentelę, kad paaiškintų, kaip solver sprendžia skirtingus iššūkius, kuriuos kelia skirtingos duomenų struktūros:
Scikit-learn pateikia lentelę, kurioje paaiškinama, kaip sprendikliai elgiasi su įvairiais duomenų struktūrų iššūkiais:
Kadangi naudojate daugiaklasio atvejį, turite pasirinkti, kokią _schemą_ naudoti ir kokį _solver_ nustatyti. Naudokite LogisticRegression su multi_class nustatytu kaip `ovr` ir solver nustatytu kaip `liblinear` mokymui.
Kadangi naudojate keliaklasių atvejį, turite pasirinkti, kokią _schemą_ naudoti ir kokį _sprendiklį_ nustatyti. Naudokite LogisticRegression su keliaklasių nustatymu ir **liblinear** sprendikliu mokymui.
1. Sukurkite logistinę regresiją su multi_class nustatytu kaip `ovr` ir solver nustatytu kaip`liblinear`:
1. Sukurkite logistinę regresiją su multi_class nustatytu į `ovr` ir sprendikliu į`liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
Šioje pamokoje naudojote išvalytus duomenis, kad sukurtumėte mašininio mokymosi modelį, galintį prognozuoti nacionalinę virtuvę pagal ingredientų seriją. Skirkite laiko perskaityti daugybę Scikit-learn siūlomų galimybių duomenų klasifikavimui. Gilinkitės į „sprendiklio“ (solver) koncepciją, kad suprastumėte, kas vyksta užkulisiuose.
Šioje pamokoje naudojote savo išvalytus duomenis, kad sukurtumėte mašininio mokymosi modelį, galintį prognozuoti nacionalinę virtuvę pagal ingredientų rinkinį. Skirkite laiko perskaityti daugybę variantų, kuriuos Scikit-learn siūlo duomenų klasifikavimui. Gilinkitės į 'solver' sąvoką, kad suprastumėte, kas vyksta užkulisiuose.
Pasigilinkite į matematiką, slypinčią už logistinės regresijos, [šioje pamokoje](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama profesionali žmogaus vertimo paslauga. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius naudojant šį vertimą.
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritiniais atvejais rekomenduojamas profesionalus žmogaus vertimas. Mes neatsakome už jokius nesusipratimus ar neteisingus interpretavimus, kylant iš šio vertimo naudojimo.
> Šis saugykla apima daugiau nei 50 kalbų vertimų, kurie žymiai padidina atsisiuntimo dydį. Norėdami klonuoti be vertimų, naudokite riboto ištraukimo funkciją (sparse checkout):
> Šiame saugykloje yra virš 50 kalbų vertimų, kas žymiai padidina atsisiuntimo dydį. Norėdami klonuoti be vertimų, naudokite retinį atsisiuntimą:
Mes turime Discord mokymosi su dirbtiniu intelektu ciklą, sužinokite daugiau ir prisijunkite prie mūsų [Learn with AI Series](https://aka.ms/learnwithai/discord) nuo 2025 m. rugsėjo 18 - 30 dienos. Gaunate patarimų ir gudrybių kaip naudoti GitHub Copilot duomenų mokslui.
Mes turime vykdomą Discord mokymosi su DI seriją, sužinokite daugiau ir prisijunkite prie mūsų [Learn with AI Series](https://aka.ms/learnwithai/discord) nuo 2025 m. rugsėjo 18 iki 30 d. Ten gausite patarimų ir triukų, kaip naudoti GitHub Copilot duomenų moksle.

# Mašinų mokymasis pradedantiesiems - mokymo programa
# Mašininis mokymasis pradedantiesiems – mokymo programa
> 🌍 Keliaukite po pasaulį tyrinėdami mašinų mokymąsi per pasaulio kultūras 🌍
> 🌍 Keliaukite po pasaulį, tyrinėdami mašininį mokymąsi per pasaulio kultūras 🌍
„Microsoft“ debesų platformos šalininkai džiaugiasi galėdami pasiūlyti 12 savaičių, 26 pamokų mokymo programą apie **Mašinų mokymąsi**. Šioje programoje sužinosite apie tai, kas kartais vadinama **klasikiniu mašinų mokymusi**, daugiausia naudojant Scikit-learn biblioteką ir vengiant giluminio mokymosi, kuris aprašytas mūsų [AI pradedantiesiems programoje](https://aka.ms/ai4beginners). Derinkite šias pamokas su mūsų ['Duomenų mokslas pradedantiesiems' programa](https://aka.ms/ds4beginners).
Microsoft Cloud Advocates džiaugiasi galėdami pasiūlyti 12 savaičių, 26 pamokų mokymo programą apie **mašininį mokymąsi**. Šioje programoje sužinosite apie tai, ką kartais vadiname **klasikiniu mašininiu mokymusi**, daugiausiai naudodami Scikit-learn biblioteką ir vengdami giluminio mokymosi, kuris aprašytas mūsų [DI pradedantiesiems mokymo programoje](https://aka.ms/ai4beginners). Taip pat derinkite šias pamokas su mūsų ['Duomenų mokslas pradedantiesiems' programa](https://aka.ms/ds4beginners)!
Keliaukite kartu su mumis po pasaulį, pritaikydami šias klasikines technikas duomenims iš įvairių pasaulio sričių. Kiekviena pamoka apima priešpamokinius ir po pamokinių testus, rašytines nurodas, kaip atlikti pamoką, sprendimą, užduotį ir daugiau. Mūsų projektinis mokymosi metodas leidžia mokytis kuriant, tai įrodyta kaip sėkmingas būdas įsisavinti naujus įgūdžius.
Keliaukite kartu po pasaulį, taikydami šias klasikines technikas duomenims iš įvairių pasaulio vietų. Kiekviena pamoka apima prieš ir po pamokos testus, rašytines instrukcijas pamokos užbaigimui, sprendimą, užduotį ir dar daugiau. Mūsų projektinis mokymo metodas leidžia mokytis statant projektus – tai įrodytas būdas naujiems įgūdžiams „įsitvirtinti“.
**✍️ Širdingas ačiū mūsų autoriams** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ir Amy Boyd
**✍️ Širdingi dėkojame mūsų autoriams** Jen Looper, Stephen Howell, Francesca Lazzeri, Tomomi Imura, Cassie Breviu, Dmitry Soshnikov, Chris Noring, Anirban Mukherjee, Ornella Altunyan, Ruth Yakubu ir Amy Boyd
**🎨 Ačiū taip pat mūsų iliustratoriams** Tomomi Imura, Dasani Madipalli ir Jen Looper
**🙏 Specialus ačiū 🙏 mūsų Microsoft Studentų Ambasadoriams autoriams, recenzentams ir turinio bendradarbiams**, ypač Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ir Snigdha Agarwal
**🙏 Ypatingas ačiū 🙏 Microsoft studentų ambasadoriams autoriams, recenzentams ir turinio prisidėjusiems**, ypač Rishit Dagli, Muhammad Sakib Khan Inan, Rohan Raj, Alexandru Petrescu, Abhishek Jaiswal, Nawrin Tabassum, Ioan Samuila ir Snigdha Agarwal
**🤩 Papildomas dėkingumas Microsoft Studentų Ambasadoriams Eric Wanjau, Jasleen Sondhi ir Vidushi Gupta už mūsų R pamokas!**
**🤩 Papildoma padėka Microsoft studentų ambasadoriams Eric Wanjau, Jasleen Sondhi ir Vidushi Gupta už mūsų R pamokas!**
# Pradžia
Sekite šiuos žingsnius:
1. **Daryti šaką (Fork)**: Spauskite mygtuką „Fork“ šio puslapio viršutiniame dešiniajame kampe.
> [rasite visus papildomus išteklius šiam kursui mūsų Microsoft Learn kolekcijoje](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> [raskite visas papildomas šio kurso medžiagas mūsų Microsoft Learn kolekcijoje](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Reikia pagalbos?** Patikrinkite mūsų [Trikčių šalinimo vadovą](TROUBLESHOOTING.md) dėl dažniausiai pasitaikančių problemų su diegimu, konfigūracija ir pamokų vykdymu.
> 🔧 **Reikia pagalbos?** Peržiūrėkite mūsų [Gedimų šalinimo gaires](TROUBLESHOOTING.md), kur rasite sprendimus dažniausiai pasitaikančioms problemoms diegiant, nustatant ir vykdant pamokas.
**[Studentai](https://aka.ms/student-page)**, kad naudotumėtės šia programa, šaknikite visą saugyklą į savo GitHub paskyrą ir atlikite užduotis savarankiškai arba grupėje:
**[Studentams](https://aka.ms/student-page)**, norėdami naudotis šia programa, padarykite šaką visam repozitorijui į savo GitHub paskyrą ir mokykitės patys arba grupėje:
- Pradėkite nuo priešpamokinio testo.
- Perskaitykite paskaitą ir atlikite veiklas, sustokite ir apmąstykite kiekvieną žinių patikrinimą.
- Stenkitės kurti projektus suprasdami pamokas, o ne tik paleisdami sprendimo kodą; kodas prieinamas kiekvienos projektinės pamokos `/solution` aplankuose.
- Atlikite po paskaitos testą.
- Įvykdykite iššūkį.
- Pradėkite nuo priešpaskaitinio testo.
- Perskaitykite paskaitą ir atlikite veiklas, sustodami bei apmąstydami kiekvieną žinių patikrinimą.
- Stenkitės kurti projektus suprasdami pamokas, o ne paleisdami sprendimo kodą; vis dėlto tas kodas prieinamas kiekvienos projektinės pamokos `/solution` aplankuose.
- Laikykite po paskaitos testą.
- Įveikite iššūkį.
- Atlikite užduotį.
- Baigę pamokų grupę apsilankykite [Diskusijų lentoje](https://github.com/microsoft/ML-For-Beginners/discussions) ir „mokykitės garsiai“, užpildydami tinkamą PAT įvertinimo šabloną. „PAT“ yra pažangos vertinimo įrankis, kurį pildote gilindamiesi į mokymosi procesą. Taip pat galite reaguoti į kitų PAT, kad galėtume mokytis kartu.
- Baigę pamokos grupę, apsilankykite [Diskusijų lentoje](https://github.com/microsoft/ML-For-Beginners/discussions) ir „mokykitės garsiai“, užpildydami atitinkamą PAT rubriką. 'PAT' yra pažangos vertinimo įrankis, kurį pildote, norėdami pagerinti mokymąsi. Taip pat galite reaguoti į kitus PAT, kad mokytumės kartu.
> Dėl tolimesnio mokymosi rekomenduojame sekti šiuos [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulius ir mokymosi kelius.
> Tolimesniam mokymuisi rekomenduojame šiuos [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott) modulius ir mokymosi kelius.
**Mokytojams**, mes pateikėme [kelias rekomendacijas](for-teachers.md), kaip naudotis šia programa.
**Mokytojai**, mes įtraukėme [keletą pasiūlymų](for-teachers.md), kaip naudoti šią mokymo programą.
---
## Vaizdo įrašų apžvalgos
## Vaizdo įrašų peržiūros
Kai kurios pamokos pateikiamos trumpais vaizdo įrašais. Visus juos galite rasti tiesiogiai pamokose arba [ML pradedantiesiems grojaraštyje Microsoft Developer YouTube kanale](https://aka.ms/ml-beginners-videos), spustelėję žemiau esančią nuotrauką.
Kai kurios pamokos prieinamos trumpųjų vaizdo įrašų forma. Galite rasti visus juos įterptus pamokose arba [ML pradedantiesiems grojaraštyje Microsoft Developer YouTube kanale](https://aka.ms/ml-beginners-videos) spustelėję žemiau esančią nuotrauką.
[](https://aka.ms/ml-beginners-videos)
> 🎥 Spustelėkite paveikslėlį aukščiau, norėdami peržiūrėti vaizdo įrašą apie projektą ir jo kūrėjus!
> 🎥 Spustelėkite aukščiau esančią paveikslėlį, jei norite pamatyti vaizdo įrašą apie projektą ir jį sukūrusius žmones!
---
## Pedagogika
Kurdami šią programą pasirinkome du pagrindinius ugdymo principus: užtikrinti, kad ji būtų praktiškai orientuota ir paremta **projektų principais**, ir kad ji apimtų **dažnus testus**. Be to, programa turi bendrą **temą**, kad būtų vientisa.
Kuriant šią programą pasirinkome du pedagoginius principus: užtikrinti, kad ji būtų praktinė, **projektinė** ir kad būtų **dažni testai**. Be to, ši programa turi bendrą **temą**, suteikiančią jai vientisumo.
Užtikrinant turinio suderinamumą su projektais, procesas tampa įdomesnis studentams, o koncepcijų išlaikymas bus pagerintas. Taip pat, mažo spaudimo testas prieš pamoką padeda studentui susikoncentruoti į mokymąsi, o antras testas po pamokos užtikrina papildomą įsisavinimą. Ši programa yra lanksti ir smagi, ją galima atlikti pilnai arba dalinai. Projektai prasideda nuo paprastų užduočių ir baigiasi sudėtingesniais ciklo pabaigoje. Programa taip pat apima pastabą apie realaus gyvenimo ML taikymą, kuri gali būti naudojama kaip papildomi kreditai ar diskusijų pagrindas.
Užtikrinant turinio atitikimą projektams, procesas tampa įdomesnis studentams, o konceptų įsisavinimas – geresnis. Be to, mažo svorio testas prieš pamoką nukreipia studentų dėmesį mokytis temos, o antras testas po pamokos užtikrina geresnį įsisavinimą. Programa buvo sukurta lanksti ir linksma, ją galima vykdyti pilnai arba dalimis. Projektai pradžioje yra maži ir tampa vis sudėtingesni per 12 savaičių ciklą. Programoje taip pat pateikiamas priedas apie tikrų pasaulio ML taikymų, kuris gali būti naudojamas kaip papildomas įvertinimas arba diskusijų pagrindas.
> Raskite mūsų [Elgesio kodeksą](CODE_OF_CONDUCT.md), [Prisidėjimo gairės](CONTRIBUTING.md), [Vertimus](..) ir [Trikčių šalinimo](TROUBLESHOOTING.md) taisykles. Laukiame jūsų konstruktyvios grįžtamosios informacijos!
> Raskite mūsų [Elgesio kodeksą](CODE_OF_CONDUCT.md), [Prisidėjimo gaires](CONTRIBUTING.md), [Vertimus](..) ir [Gedimų šalinimą](TROUBLESHOOTING.md). Laukiame jūsų konstruktyvios grįžtamosios informacijos!
> **Pastaba apie kalbas**: Šios pamokos daugiausia parašytos Python kalba, bet dauguma jų taip pat yra prieinamos R kalba. Norėdami baigti R pamoką, eikite į `/solution` katalogą ir ieškokite R pamokų. Jos turi .rmd plėtinį, kuris reiškia **R Markdown** failą, kuris gali būti apibrėžiamas kaip `kodo blokų` (R ar kitų kalbų) ir `YAML antraštės` (nurodančios, kaip formatuoti rezultatus, pvz., PDF) įterpimas į `Markdown dokumentą`. Tokiu būdu tai tarnauja kaip pavyzdinė autorystės sistema duomenų mokslui, nes leidžia jums sujungti savo kodą, jo rezultatą ir mintis, leidžiant jas užrašyti Markdown formatu. Be to, R Markdown dokumentai gali būti atvaizduojami į įvairius išvesties formatus, tokius kaip PDF, HTML ar Word.
> **Pastaba apie testus**: Visi testai yra laikomi [Quiz App kataloge](../../quiz-app), iš viso 52 testai, kiekviename po tris klausimus. Jie susieti su pamokomis, bet testų programėlę galima paleisti vietoje; vadovaukitės nurodymais `quiz-app` kataloge, kad ją paleistumėte vietoje arba išdėstytumėte Azure.
| Pamokos numeris | Tema | Pamokų grupė | Mokymosi tikslai | Susieta pamoka | Autorius |
| 01 | Įvadas į mašininį mokymąsi | [Introduction](1-Introduction/README.md) | Sužinoti pagrindines mašininio mokymosi sąvokas | [Pamoka](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Mašininio mokymosi istorija | [Introduction](1-Introduction/README.md) | Sužinoti šio srities istoriją | [Pamoka](1-Introduction/2-history-of-ML/README.md) | Jen ir Amy |
| 03 | Teisingumas ir mašininis mokymasis | [Introduction](1-Introduction/README.md) | Kokie svarbūs filosofiniai klausimai dėl teisingumo, kuriuos turėtų apsvarstyti mokiniai kurdami ir taikydami MM modelius? | [Pamoka](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Mašininio mokymosi technikos | [Introduction](1-Introduction/README.md) | Kokias technikas MM tyrėjai naudoja kurdami MM modelius? | [Pamoka](1-Introduction/4-techniques-of-ML/README.md) | Chris ir Jen |
| 05 | Įvadas į regresiją | [Regression](2-Regression/README.md) | Pradėti dirbti su Python ir Scikit-learn regresijos modeliams | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regression](2-Regression/README.md) | Vizualizuoti ir išvalyti duomenis, ruošiantis MM | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regression](2-Regression/README.md) | Kurti tiesinės ir polinominės regresijos modelius | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ir Dmitry • Eric Wanjau |
| 08 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regression](2-Regression/README.md) | Kurti logistinės regresijos modelį | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) |Jen • Eric Wanjau |
| 09 | Internetinė programa 🔌 | [Web App](3-Web-App/README.md) | Kurti internetinę programą, kad naudotumėte savo apmokytą modelį | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Įvadas į klasifikaciją | [Classification](4-Classification/README.md) | Išvalyti, paruošti ir vizualizuoti duomenis; įvadas į klasifikaciją | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ir Cassie • Eric Wanjau |
| 11 | Skani Azijos ir Indijos virtuvė 🍜 | [Classification](4-Classification/README.md) | Įvadas į klasifikatorius | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ir Cassie • Eric Wanjau |
| 12 | Skani Azijos ir Indijos virtuvė 🍜 | [Classification](4-Classification/README.md) | Daugiau klasifikatorių | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ir Cassie • Eric Wanjau |
| 13 | Skani Azijos ir Indijos virtuvė 🍜 | [Classification](4-Classification/README.md) | Kurti rekomendacijų internetinę programėlę naudodami savo modelį | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Įvadas į klasterizaciją | [Clustering](5-Clustering/README.md) | Išvalyti, paruošti ir vizualizuoti duomenis; įvadas į klasterizaciją | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Nigerijos muzikos skonių tyrinėjimas 🎧 | [Clustering](5-Clustering/README.md) | Tyrinėti K-Means klasterizacijos metodą | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Įvadas į natūralios kalbos apdorojimą ☕️ | [Natural language processing](6-NLP/README.md) | Sužinoti NLP pagrindus kuriant paprastą botą | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Bendros NLP užduotys ☕️ | [Natural language processing](6-NLP/README.md) | Gilinti NLP žinias suprantant bendras užduotis, susijusias su kalbos struktūra | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Vertimas ir nuotaikų analizė ♥️ | [Natural language processing](6-NLP/README.md) | Vertimas ir nuotaikų analizė su Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiški viešbučiai Europoje ♥️ | [Natural language processing](6-NLP/README.md) | Nuotaikų analizė su viešbučių atsiliepimais 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiški viešbučiai Europoje ♥️ | [Natural language processing](6-NLP/README.md) | Nuotaikų analizė su viešbučių atsiliepimais 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Įvadas į laiko eilių prognozavimą | [Time series](7-TimeSeries/README.md) | Įvadas į laiko eilių prognozavimą | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Pasaulinis energijos suvartojimas ⚡️ - laiko eilių prognozavimas su ARIMA | [Time series](7-TimeSeries/README.md) | Laiko eilių prognozavimas su ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Pasaulinis energijos suvartojimas ⚡️ - laiko eilių prognozavimas su SVR | [Time series](7-TimeSeries/README.md) | Laiko eilių prognozavimas su parama vektoriniais regresoriais | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Įvadas į stiprinamąjį mokymą | [Reinforcement learning](8-Reinforcement/README.md) | Įvadas į stiprinamąjį mokymą su Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Padėkite Peteriui išvengti vilko! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Stiprinamojo mokymosi sporto salė | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Pasakažas | Realaus pasaulio MM scenarijai ir programos | [ML in the Wild](9-Real-World/README.md) | Įdomios ir atskleidžiančios realaus pasaulio klasikinio MM taikymo programos | [Pamoka](9-Real-World/1-Applications/README.md) | Komanda |
| Pasakažas | Modelių derinimas MM su RAI prietaisų skydeliu | [ML in the Wild](9-Real-World/README.md) | Modelių derinimas mašininio mokymosi srityje naudojant Responsible AI prietaisų skydelio komponentus | [Pamoka](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
- [paskaitos pabaigos testą](https://ff-quizzes.netlify.app/en/ml/)
> **Pastaba apie kalbas**: Šios pamokos daugiausia rašytos Python kalba, tačiau daugelis jų taip pat prieinamos R kalba. Norėdami baigti R pamoką, eikite į `/solution` aplanką ir ieškokite R pamokų. Jos turi .rmd plėtinį, kuris reiškia **R Markdown** failą, kurį galima paprastai apibrėžti kaip `kodo dalių` (R ar kitų kalbų) ir `YAML antraštės` (kuri nurodo, kaip formatuoti išvestis, pvz., PDF) įterpimą į `Markdown dokumentą`. Tokiu būdu tai tarnauja kaip pavyzdinis autorystės pagrindas duomenų mokslui, nes leidžia sujungti jūsų kodą, jo išvestį ir mintis, leidžiant jas užrašyti Markdown formatu. Be to, R Markdown dokumentus galima atvaizduoti į tokias išvesties formas kaip PDF, HTML ar Word.
> **Pastaba apie viktorinas**: Visos viktorinos yra [Quiz App aplanke](../../quiz-app), iš viso 52 viktorinos, po tris klausimus kiekvienoje. Jos susietos iš pamokų, tačiau viktorinų programėlę galima paleisti vietoje; vadovaukitės instrukcijomis `quiz-app` aplanke, kad paleistumėte vietoje arba įdiegtumėte į Azure.
| Pamokos numeris | Tema | Pamokų grupė | Mokymosi tikslai | Susieta pamoka | Autorius |
| 01 | Įvadas į mašininį mokymąsi | [Įvadas](1-Introduction/README.md) | Sužinokite pagrindines mašininio mokymosi sąvokas | [Pamoka](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Mašininio mokymosi istorija | [Įvadas](1-Introduction/README.md) | Sužinokite šio srities istoriją | [Pamoka](1-Introduction/2-history-of-ML/README.md) | Jen ir Amy |
| 03 | Teisingumas ir mašininis mokymasis | [Įvadas](1-Introduction/README.md) | Kokie svarbūs filosofiniai teisingumo klausimai, kuriuos studentai turėtų apsvarstyti kurdami ir taikydami ML modelius? | [Pamoka](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Mašininio mokymosi technikos | [Įvadas](1-Introduction/README.md) | Kokias technikas naudoja ML tyrėjai modeliams kurti? | [Pamoka](1-Introduction/4-techniques-of-ML/README.md) | Chris ir Jen |
| 05 | Įvadas į regresiją | [Regresija](2-Regression/README.md) | Pradėkite dirbti su Python ir Scikit-learn regresijos modeliams | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regresija](2-Regression/README.md) | Vizualizuokite ir išvalykite duomenis pasiruošimui ML | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regresija](2-Regression/README.md) | Kurkite tiesinį ir polinominį regresijos modelius | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen ir Dmitry • Eric Wanjau |
| 08 | Šiaurės Amerikos moliūgų kainos 🎃 | [Regresija](2-Regression/README.md) | Kurkite logistinės regresijos modelį | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Interneto programa 🔌 | [Internetinė programa](3-Web-App/README.md) | Sukurkite interneto programą, kad naudotumėte savo apmokytą modelį | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Įvadas į klasifikaciją | [Klasifikacija](4-Classification/README.md) | Išvalykite, paruoškite ir vizualizuokite duomenis; įvadas į klasifikaciją | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen ir Cassie • Eric Wanjau |
| 11 | Skani Azijos ir Indijos virtuvė 🍜 | [Klasifikacija](4-Classification/README.md) | Įvadas į klasifikatorius | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen ir Cassie • Eric Wanjau |
| 12 | Skani Azijos ir Indijos virtuvė 🍜 | [Klasifikacija](4-Classification/README.md) | Daugiau klasifikatorių | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen ir Cassie • Eric Wanjau |
| 13 | Skani Azijos ir Indijos virtuvė 🍜 | [Klasifikacija](4-Classification/README.md) | Sukurkite rekomendacijų interneto programą naudodami savo modelį | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Įvadas į klasterizaciją | [Klasterizacija](5-Clustering/README.md) | Išvalykite, paruoškite ir vizualizuokite duomenis; Įvadas į klasterizaciją | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Nigerijos muzikos skonių tyrinėjimas 🎧 | [Klasterizacija](5-Clustering/README.md) | Ištirkite K-means klasterizavimo metodą | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Įvadas į natūralios kalbos apdorojimą ☕️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Sužinokite NLP pagrindus kurdami paprastą botą | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Dažnos NLP užduotys ☕️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Gilinkite NLP žinias suprasdami dažnas užduotis, reikalingas dirbant su kalbos struktūromis | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Vertimas ir nuotaikų analizė ♥️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Vertimas ir nuotaikų analizė su Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Romantiški Europos viešbučiai ♥️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Nuotaikų analizė su viešbučių atsiliepimais 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Romantiški Europos viešbučiai ♥️ | [Natūralios kalbos apdorojimas](6-NLP/README.md) | Nuotaikų analizė su viešbučių atsiliepimais 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 21 | Įvadas į laiko eilučių prognozavimą | [Laiko eilutės](7-TimeSeries/README.md) | Įvadas į laiko eilučių prognozavimą | [Python](7-TimeSeries/1-Introduction/README.md) | Francesca |
| 22 | ⚡️ Pasaulio energijos vartojimas ⚡️ - laiko eilutės prognozavimas su ARIMA | [Laiko eilutės](7-TimeSeries/README.md) | Laiko eilučių prognozavimas su ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Pasaulio energijos vartojimas ⚡️ - laiko eilutės prognozavimas su SVR | [Laiko eilutės](7-TimeSeries/README.md) | Laiko eilučių prognozavimas su Palaikomųjų Vektorių Regresoriumi | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Įvadas į stiprinamąjį mokymąsi | [Stiprinamasis mokymasis](8-Reinforcement/README.md) | Įvadas į stiprinamąjį mokymąsi naudojant Q-Mokymą | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| Postscript | Tikri ML scenarijai ir taikymai | [ML laukinėje gamtoje](9-Real-World/README.md) | Įdomūs ir atskleidžiantys realaus pasaulio klasikinio ML taikymai | [Pamoka](9-Real-World/1-Applications/README.md) | Komanda |
| Postscript | ML modelių derinimas naudojant RAI panelę | [ML laukinėje gamtoje](9-Real-World/README.md) | Modelių derinimas mašininiame mokymesi naudojant Responsible AI valdymo pultą | [Pamoka](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [raskite visus papildomus šio kurso išteklius mūsų Microsoft Learn kolekcijoje](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Offline prieiga
## Prieiga neprisijungus
Šią dokumentaciją galite naudoti neprisijungę, naudodamiesi [Docsify](https://docsify.js.org/#/). Šakninėje katalogo vietoje padarykite šaką (`fork`) arba klonuokite šį repo, [įdiekite Docsify](https://docsify.js.org/#/quickstart) savo vietiniame įrenginyje, tada terminale šio repo šakniniame kataloge įveskite `docsify serve`. Svetainė bus patiekiama 3000 prievade jūsų localhost: `localhost:3000`.
Šią dokumentaciją galite naudoti neprisijungę naudodami [Docsify](https://docsify.js.org/#/). Šaknijate šį repozitoriją, [įdiekite Docsify](https://docsify.js.org/#/quickstart) savo vietinėje mašinoje, tada šio repozitorijos šakniniame aplanke įveskite `docsify serve`. Svetainė bus patiekiama per 3000 prievadą jūsų localhost aplinkoje: `localhost:3000`.
## PDF failai
Raskite kurso programos PDF su nuorodomis [čia](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
Raskite programos PDF su nuorodomis [čia](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
### Generatyvinės DI serija
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Copilot serija
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
Jei užstrigote arba turite klausimų apie AI programų kūrimą. Prisijunkite prie kitų mokinių ir patyrusių kūrėjų diskusijose apie MCP. Tai palaikanti bendruomenė, kurioje klausimai yra laukiami ir žinios dalijamos laisvai.
Jei užstringate arba turite klausimų mokydamiesi mašininio mokymosi ar kurdami DI programas, nesijaudinkite — pagalba yra prieinama.
Jei susiduriate su klaidomis, gedimais arba turite pasiūlymų patobulinimams, galite taip pat atidaryti **Issue** šiame saugykloje ir pranešti apie problemą.
Norėdami pateikti atsiliepimus apie produktą arba ieškoti jau egzistuojančių bendruomenės įrašų, apsilankykite Kūrėjų forume:
Jei turite produktų atsiliepimų arba klaidų kūrimo metu, apsilankykite:
[](https://aka.ms/foundry/forum)
- Tyrinėkite realius duomenų rinkinius naudodami įgytas žinias.
- Tyrinėkite tikrus duomenų rinkinius naudodami išmoktą medžiagą.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Atsakomybės apribojimas**:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatizuoti vertimai gali turėti klaidų arba netikslumų. Originalus dokumentas jo gimtąja kalba laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojame naudotis profesionaliu žmogišku vertimu. Mes neatsakome už jokius nesusipratimus ar klaidingas interpretacijas, kylančias dėl šio vertimo naudojimo.
Šis dokumentas buvo išverstas naudojant dirbtinio intelekto vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors stengiamės užtikrinti tikslumą, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Esant kritinei informacijai, rekomenduojamas profesionalus žmogaus vertimas. Mes neatsakome už jokius nesusipratimus ar neteisingus aiškinimus, kilusius naudojantis šiuo vertimu.
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 ဒေါက်ဗိုင်းလင်ကို နှိပ်၍ linear regression အကြောင်း နိဒါန်းဗီဒီယို ကြည့်ရှုနိုင်ပါသည်။
> 🎥 အပေါ်က ဓာတ်ပုံကို နှိပ်ပြီး linear regression အကြောင်းအကျဉ်းချုပ် ဗွီဒီယို မျှဝေကြည့်ပါ။
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 ဖြစ်ပေါ်သူများအတွက် Linear နဲ့ Polynomial Regression အကြောင်း နိဒါန်းဗီဒီယိုကြည့်ရန်ဓာတ်ပုံကို နှိပ်ပါ။
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
အချို့သော သင်ခန်းစာများကို မိနစ်တိုအတွင်း ဗီဒီယိုအနေနှင့် ရရှိနိုင်သည်။ ၎င်းတို့အားစာအုပ်အတွင်းတွင်မှတစ်ဆင့် သို့မဟုတ် [ML for Beginners playlist on the Microsoft Developer YouTube channel](https://aka.ms/ml-beginners-videos) တွင် အောက်ပါပုံကိုႏွိပ်၍ ရှာဖွေကြည့်ရှုနိုင်ပါသည်။
သင်ခန်းစာတချို့ကို အသေးစား ဗီဒီယိုအဖြစ် ရရှိနိုင်ပါသည်။ ဤဗီဒီယိုများကို သင်ခန်းစာထဲတွင် တိုက်ရိုက်ရှာဖွေပါ၊ သို့မဟုတ် [ML for Beginners playlist မှ Microsoft Developer YouTube ချန်နယ်၌](https://aka.ms/ml-beginners-videos) ဗီဒီယိုကြည့်ရှုနိုင်ပါသည်။
[](https://aka.ms/ml-beginners-videos)
| Postscript | အမှန်တကယ် ML ဖြစ်ပေါ်မှုနှင့် အသုံးပြုမှုများ | [ML in the Wild](9-Real-World/README.md) | ရိုးရာ ML ၏ စိတ်ဝင်စားဖွယ်နှင့် ပြင်းထန်သော လက်တွေ့ အသုံးပြုရန်များ | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Postscript | RAI dashboard ဖြင့် ML မော်ဒယ် Debugging | [ML in the Wild](9-Real-World/README.md) | Responsible AI dashboard ကြောင်း ကူညီသော Machine Learning မော်ဒယ် Debugging | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [ဤသင်တန်းအတွက် အပိုဆောင်းအရင်းအမြစ်များအားလုံးကို Microsoft Learn စုစည်းမှုတွင် ရှာဖွေပါ](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
@ -188,7 +189,7 @@ Microsoft ၏ Cloud Advocates မှ စက်လေ့လာမှုနှင
---
### စီးရီး အနုပညာ AI
### Generative AI Series
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
@ -196,7 +197,7 @@ Microsoft ၏ Cloud Advocates မှ စက်လေ့လာမှုနှင
---
### အခြေခံသင်ယူမှု
### အခြေခံသင်ယူမှု
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
@ -213,24 +214,35 @@ Microsoft ၏ Cloud Advocates မှ စက်လေ့လာမှုနှင
> ### [Цей урок доступний і на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
## [Перевірка знань перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
> ### [Цей урок доступний на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Вступ
До цього моменту ви досліджували, що таке регресія, використовуючи вибіркові дані з набору даних про ціни на гарбузи, який ми використовуватимемо протягом усього цього уроку. Ви також візуалізували ці дані за допомогою Matplotlib.
До цього моменту ви досліджували, що таке регресія, на прикладі даних про ціни на гарбузи, які ми використаємо протягом цього уроку. Ви також візуалізували дані за допомогою Matplotlib.
Тепер ви готові зануритися глибше у регресію в машинному навчанні. Хоча візуалізація допомагає зрозуміти дані, справжня сила машинного навчання полягає в _навчанні моделей_. Моделі навчаються на історичних даних, щоб автоматично виявляти залежності в даних, і дозволяють прогнозувати результати для нових даних, яких модель раніше не бачила.
Тепер ви готові заглибитися в регресію для машинного навчання (ML). Візуалізація допомагає зрозуміти дані, але справжня сила машинного навчання полягає у_навчанні моделей_. Моделі тренуються на історичних даних, щоб автоматично вловлювати залежності в даних і дозволяють робити прогнози для нових даних, які модель раніше не бачила.
У цьому уроці ви детальніше дізнаєтесь про два типи регресії: _базова лінійна регресія_ та _поліноміальнарегресія_, а також про математику, що лежить в основі цих методів. Ці моделі дозволять нам прогнозувати ціни на гарбузи залежно від різних вхідних даних.
У цьому уроці ви дізнаєтесь більше про два типи регресії: _базова лінійна регресія_ та _поліноміальнарегресія_, а також про математику, що лежить в основі цих методів. Ці моделі дозволять нам передбачати ціни на гарбузи залежно від різних вхідних даних.
[](https://youtu.be/CRxFT8oTDMg "ML для початківців - Розуміння лінійної регресії")
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Натисніть на зображення вище, щоб переглянути короткий відеоогляд лінійної регресії.
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відеоогляд лінійної регресії.
> Протягом цього курсу ми передбачаємо мінімальні знання математики і намагаємося зробити її доступною для студентів з інших галузей, тому звертайте увагу на примітки, 🧮 підказки, діаграми та інші інструменти для полегшення розуміння.
> Протягом цього курсу ми припускаємо мінімальні знання математики і прагнемо зробити матеріал доступним для студентів з різних галузей, тому звертайте увагу на примітки, 🧮 позначки, діаграми та інші інструменти навчання, які допоможуть зрозуміти матеріал.
### Передумови
### Вимоги
До цього часу ви вже маєте ознайомлення зі структурою даних про гарбузи, які ми досліджуємо. Ви можете знайти їх завантаженими та попередньо очищеними у файлі _notebook.ipynb_ цього уроку. У файлі ціна на гарбуз подана за бушель у новому датафреймі. Переконайтесь, що ви можете запускати ці ноутбуки в ядраху Visual Studio Code.
Ви вже знайомі зі структурою даних про гарбузи, які ми досліджуємо. Ви можете знайти їх завантаженими та попередньо очищеними у файлі цього уроку _notebook.ipynb_. У файлі ціна гарбуза відображається за бушель у новому фреймі даних. Переконайтеся, що ви можете запускати ці ноутбуки у Visual Studio Code.
### Підготовка
Як нагадування, ви завантажуєте ці дані, щоб ставити до них запитання.
Нагадаємо, ви завантажуєте ці дані, щоб ставити питання.
- Коли найкращий час купувати гарбузи?
- Яку ціну можна очікувати за коробку мініатюрних гарбузів?
- Чи варто купувати їх у корзинах на півбушеля абоу коробках на 1 1/9 бушеля?
Продовжимо досліджувати ці дані.
- Коли найкращий час купувати гарбузи?
- Яку ціну можна очікувати за коробку мініатюрних гарбузів?
- Чи варто купувати їх у кошиках на півбушеля, чи в коробках на 1 1/9 бушеля?
Продовжимо копатися в цих даних.
У попередньому уроці ви створили датафрейм Pandas і наповнили його частиною оригінального набору даних, стандартизувавши ціни за бушель. Проте при цьому ви змогли зібрати лише близько 400 точок даних і лише для осінніх місяців.
У попередньому уроці ви створили Pandas DataFrame і заповнили його частиною оригінального набору даних, стандартизуючи ціни за бушель. Проте таким чином вдалося зібрати лише близько 400 точок даних і тільки за осінні місяці.
Погляньте на дані, які ми заздалегідь завантажили у супровідному ноутбуці цього уроку. Дані завантажено, і побудовано початковий графік розсіювання для показу даних по місяцях. Можливо, ми зможемо отримати трохи більше інформації про природу цих даних, очистивши їх ще більше.
Ознайомтеся з даними, які ми завантажили у супровідному ноутбуці цього уроку. Дані завантажені, і початковий розсіювальний графік відображає дані за місяцями. Можливо, ми зможемо дізнатися більше про природу даних, очистивши їх більш ретельно.
## Лінійна регресійна лінія
Як ви дізнались у Уроці 1, мета вправи з лінійної регресії – це можливість побудувати лінію для:
Як ви дізналися в уроці 1, мета лінійної регресійної вправи — побудувати лінію, щоб:
- **Показу взаємозв’язків змінних**. Показати зв’язок між змінними
- **Робити прогнози**. Робити точні прогнози, де нова точка даних розташується відносно цієї лінії.
- **Показати залежності змінних.** Відобразити зв’язок між змінними
- **Зробити прогнози.** Робити точні прогнози про те, де нова точка даних розміститься відносно цієї лінії
Типово для **регресії найменших квадратів** малюють саме таку лінію. Термін "найменші квадрати" відноситься до процесу мінімізації загальної помилки в нашій моделі. Для кожної точки даних ми вимірюємо вертикальну відстань (яку називають залишком) між фактичною точкою і нашою регресійною лінією.
Зазвичай для цього використовується **регресія найменших квадратів (Least-Squares Regression)**. Термін «найменших квадратів» означає процес мінімізації загальної похибки в нашій моделі. Для кожної точки даних ми вимірюємо вертикальну відстань (результат, який називається залишком) між фактичною точкою та нашою регресійною лінією.
Ці відстані ми підносимо до квадрату з двох основних причин:
Ми підносимо ці відстані у квадрат з двох основних причин:
1. **Величина важливіша за напрямок:** Ми хочемо поставитись до помилки -5 так само, як до помилки +5. Квадрат робить усі значення додатними.
1. **Величина важливіша за напрямок:** Хочемо, щоб похибка -5 розглядалася так само, як і +5. Квадрат робить всі значення позитивними.
2. **Покарання за викиди:** Квадрат надає більшу вагу великим помилкам, змушуючи лінію триматися ближче до точок, які далеко розташовані.
2. **Штрафування викидів:** Квадрат надає більшу вагу великим похибкам, що змушує лінію ближче підходити до точок, які розташовані далеко.
Потім ми додаємо всі ці квадратні значення разом. Наша мета — знайти таку лінію, де ця сума буде мінімальною (найменшим можливим значенням) — звідси й назва "найменших квадратів".
Потім ми складаємо всі ці квадрати. Наша мета — знайти лінію, де ця сума квадратичних відхилень буде найменшою (мінімальною) — звідси й назва «найменших квадратів».
> **🧮 Покажи математику**
>
> Цю лінію, яка називається _лінією найкращого наближення_, можна виразити за допомогою [рівняння](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> **🧮 Покажіть мені математику**
> Цю лінію, яку називають _лінією найкращого прилягання_, можна подати за допомогою [рівняння](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X`– це "пояснювальна змінна". `Y`– "залежна змінна". Нахил лінії –`b`, а`a`– це y-перетин, що відображає значення `Y`, коли `X = 0`.
> Спочатку обраховуємо нахил `b`. Інфографіка від [Jen Looper](https://twitter.com/jenlooper)
>
> Іншими словами, і звертаючись до нашого початкового питання з даних про гарбузи: "передбачити ціну гарбуза за бушель по місяцях", `X` вказує на ціну, а`Y`– на місяць продажу.
> Обчисліть значення Y. Якщо ви платите близько 4 доларів, то це, мабуть, квітень! Інфографіка від [Jen Looper](https://twitter.com/jenlooper)
>
> Математика, що обчислює цю лінію, має показати нахил лінії, який також залежить від перетину, тобто де знаходиться `Y`, коли `X = 0`.
>
> Ви можете ознайомитись з методом обчислення цих значень на сайті [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Також відвідайте [цей калькулятор найменших квадратів](https://www.mathsisfun.com/data/least-squares-calculator.html), щоб побачити, як значення чисел впливають на лінію.
>
> `X`— 'пояснювальна змінна', `Y` — 'залежна змінна'. Кут нахилу лінії — `b`, а`a` — це перетин з віссю Y, тобто значення `Y`, коли `X = 0`.
>
>
>
> Спершу обчислюємо нахил `b`. Інфографіка від [Jen Looper](https://twitter.com/jenlooper)
>
> Іншими словами, у нашому прикладі з гарбузами, де треба "передбачити ціну гарбуза за бушель залежно від місяця", `X` — це ціна, а`Y` — місяць продажу.
>
>
>
> Обчисліть значення Y. Якщо ви платите близько $4, це має бути квітень! Інфографіка від [Jen Looper](https://twitter.com/jenlooper)
>
> Математика, що обчислює лінію, має враховувати нахил і перетин лінії, тобто де знаходиться `Y`, коли `X = 0`.
>
> Ви можете ознайомитися з методом обчислення на сайті [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Також відвідайте [цей калькулятор найменших квадратів](https://www.mathsisfun.com/data/least-squares-calculator.html), щоб подивитися, як значення впливають на лінію.
## Кореляція
Ще один термін, який потрібно зрозуміти, – це **коефіцієнт кореляції** між заданими змінними X та Y. За допомогою графіка розсіювання ви швидко можете візуалізувати цей коефіцієнт. Якщо точки на графіку розташовані акуратно по лінії — кореляція висока, якщо розкидані по всьому графіку — кореляція низька.
Добра модель лінійної регресії матиме високий (ближчий до 1, ніж до 0) коефіцієнт кореляції, визначений методом найменших квадратів із регресійною лінією.
✅ Запустіть ноутбук, який супроводжує цей урок, і подивіться на графік розсіювання місяця продажу до ціни. Чи є у даних про продажі гарбузів за місяцями висока чи низька кореляція згідно з вашим візуальним тлумаченням графіка? Чи зміниться це, якщо використати більш тонкий показник замість `Month`, наприклад, *день року* (тобто кількість днів з початку року)?
Ще один термін для розуміння — це **коефіцієнт кореляції** між змінними X і Y. За допомогою розсіювального графіку ви можете швидко побачити цей коефіцієнт. Якщо точки показані впорядковано уздовж лінії, кореляція висока, якщо розкидані хаотично — кореляція низька.
У коді нижче ми припустимо, що очистили дані й отримали датафрейм під назвою `new_pumpkins`, схожий на такий:
Добрий лінійний регресійний модель — це та, у якої коефіцієнт кореляції високо (ближче до 1, ніж до 0) і з використанням методу найменших квадратів із регресійною лінією.
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
✅ Запустіть ноутбук, що супроводжує цей урок, та подивіться на розсіювальний графік "Місяць - Ціна". Чи виглядає, що дані, що зв’язують місяць і ціну продажу гарбузів, мають високу чи низьку кореляцію згідно з вашим візуальним аналізом графіка? Чи зміниться це, якщо використати більш детальний показник замість `Month`, наприклад, *день року* (число днів від початку року)?
> Код для очистки даних доступний у [`notebook.ipynb`](notebook.ipynb). Ми провели такі ж кроки очищення, як і в попередньому уроці, і обчислили стовпець `DayOfYear` за допомогою такого виразу:
У наведеному нижче коді ми припускаємо, що дані були очищені і отримано DataFrame з назвою `new_pumpkins`, схожий на наступний:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
> Код для очищення даних доступний у файлі [`notebook.ipynb`](notebook.ipynb). Ми виконали ті самі кроки очищення, що й у попередньому уроці, і обчислили стовпець `DayOfYear` за допомогою такого виразу:
Тепер, коли ви розумієте математику за лінійною регресією, давайте створимо модель регресії, щоб визначити, який пакет гарбузів має найкращі ціни. Ті, хто купує гарбузи для осінніх святкових майданчиків, можуть захотіти цю інформацію, аби оптимізувати свої закупівлі.
Тепер, коли ви маєте уявлення про математику лінійної регресії, давайте створимо регресійну модель, щоб побачити, чи можемо ми передбачити, яка упаковка гарбузів матиме найкращі ціни. Хтось, хто купує гарбузи для осіннього ярмарку, може хотіти цю інформацію, щоб оптимізувати свої покупки.
## Пошук кореляції
[](https://youtu.be/uoRq-lW2eQo "ML для початківців - Пошук кореляції: ключ до лінійної регресії")
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Натисніть на зображення вище, щоб переглянути короткий відеоогляд кореляції.
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про кореляцію.
Як ви, мабуть, помітили у попередньому уроці, середня ціна за місяцями виглядає так:
Із попереднього уроку ви, мабуть, бачили, що середня ціна по місяцях виглядає так:
<imgalt="Середня ціна за місяцями" src="../../../../translated_images/uk/barchart.a833ea9194346d76.webp"width="50%"/>
<imgalt="Average price by month" src="../../../../translated_images/uk/barchart.a833ea9194346d76.webp"width="50%"/>
Це свідчить про те, що повинен бути певний зв’язок, і ми можемо спробувати навчити модель лінійної регресії, щоб спрогнозувати відношення між `Month`і`Price`, або між `DayOfYear`і`Price`. Ось графік розсіювання, який показує останній зв’язок:
Це підказує, що повинна бути певна кореляція, і ми можемо спробувати навчити модель лінійної регресії для прогнозу зв’язку між `Month`і`Price`, або між `DayOfYear`і`Price`. Ось розсіювальний графік для останнього зв’язку:
<imgalt="Графік розсіювання Ціни проти Дня року" src="../../../../translated_images/uk/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/uk/scatter-dayofyear.bc171c189c9fd553.webp"width="50%"/>
Перевіримо, чи існує кореляція, використовуючи функцію `corr`:
Поглянемо, чи є кореляція, використовуючи функцію `corr`:
Виглядає, що кореляція досить мала: -0.15 за `Month`і -0.17 за `DayOfMonth`, але може існувати ще один важливий зв’язок. Виглядає, що існують різні кластери цін, які відповідають різним сортам гарбузів. Щоб підтвердити цю гіпотезу, побудуємо графік розсіювання кожної категорії гарбузів різним кольором. Передаючи параметр `ax` функції`scatter`, ми можемо відобразити всі точки на одному графіку:
Здається, кореляція досить мала: -0.15 за `Month` та -0.17 за `DayOfMonth`, але може бути ще один важливий зв’язок. Виглядає, що існують різні кластери цін відповідно до сортів гарбуза. Щоб підтвердити це припущення, побудуємо графік, де кожен сорт гарбузів виділено іншим кольором. Передаючи параметр `ax` в функцію`scatter`, ми можемо відобразити всі точки на одному графіку:
```python
ax=None
@ -139,41 +141,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/uk/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
<imgalt="Графік розсіювання Ціни проти Дня року з кольоровим позначенням"src="../../../../translated_images/uk/scatter-dayofyear-color.65790faefbb9d54f.webp"width="50%"/>
Наше дослідження свідчить, що сорт має більший вплив на загальну ціну, ніж фактична дата продажу. Ми можемо підкріпити це стовпчиковою діаграмою:
Наше дослідження свідчить про те, що сорт має більший вплив на загальну ціну, ніж фактична дата продажу. Це можна бачити на стовпчиковій діаграмі:
<imgalt="Графік розсіювання Ціни проти Дня року для pie type"src="../../../../translated_images/uk/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
<imgalt="Scatter plot of Price vs. Day of Year"src="../../../../translated_images/uk/pie-pumpkins-scatter.d14f9804a53f927e.webp"width="50%"/>
Якщо тепер обчислити кореляцію між `Price`і`DayOfYear` за допомогою функції `corr`, отримаємо близько`-0.27` — це означає, що навчання прогнозної моделі має сенс.
Якщо тепер порахувати кореляцію між `Price`і`DayOfYear` за допомогою функції `corr`, отримаємо приблизно`-0.27` — це означає, що навчання прогнозної моделі має сенс.
> Перед навчанням моделі лінійної регресії важливо впевнитися, що наші дані чисті. Лінійна регресія погано працює з відсутніми значеннями, тому варто видалити всі порожні клітинки:
> Перед тим, як навчати лінійну регресійну модель, важливо переконатися, що дані чисті. Лінійна регресія погано працює з пропущеними значеннями, тому має сенс позбутися порожніх клітинок:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Іншим підходом може бути заповнення порожніх значень середніми значеннями відповідного стовпця.
Іншим підходом може бути заповнення порожніх значень середніми значеннями стовпця.
## Проста лінійна регресія
[](https://youtu.be/e4c_UP2fSjg "ML для початківців - Лінійна і поліноміальна регресія за допомогою Scikit-learn")
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Натисніть на зображення вище, щоб переглянути короткий відеоогляд лінійної та поліноміальної регресії.
> 🎥 Натисніть на зображення вище, щоб переглянути коротке відеоогляд лінійної та поліноміальної регресії.
Для навчання моделі лінійної регресії ми використаємо бібліотеку **Scikit-learn**.
@ -182,49 +185,49 @@ from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Почнемо з розділення вхідних значень (ознаки) і очікуваного результату (мітки) у окремі масиви numpy:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Зверніть увагу, що довелося застосувати `reshape` до вхідних даних, щоб пакет лінійної регресії правильно їх сприйняв. Лінійна регресія очікує 2D-масив на вході, де кожен рядок — це вектор вхідних ознак. В нашому випадку, оскільки вхідна ознака лише одна, потрібен масив розміру N×1, де N — розмір набору даних.
> Зверніть увагу, що нам довелося виконати `reshape` для вхідних даних, щоб пакет лінійної регресії правильно їх зрозумів. Лінійна регресія очікує 2D-масив на вході, де кожен рядок — це вектор вхідних ознак. У нашому випадку, оскільки є лише одна ознака, нам потрібен масив розміром N×1, де N — розмір набору даних.
Далі потрібно розділити дані на навчальний і тестовий набори, щоб можна було перевірити модель після навчання:
Далі потрібно розділити дані на навчальний (train) та тестовий (test) набори, щоб можна було перевірити модель після навчання:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Нарешті, навчання власне моделі лінійної регресії займає лише два рядки коду. Спочатку створюємо об’єкт `LinearRegression`, а потім підганяємо його до наших даних за допомогою методу `fit`:
Нарешті, навчання лінійної регресійної моделі займає лише два рядки коду. Ми створюємо об’єкт `LinearRegression`і навчаємо його на наших даних за допомогою методу `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Об'єкт `LinearRegression` після виконання `fit` містить усі коефіцієнти регресії, до яких можна звернутися за допомогою властивості `.coef_`. У нашому випадку є лише один коефіцієнт, який повинен бути близько `-0.017`. Це означає, що ціни, здається, трохи зменшуються з часом, але не надто сильно, приблизно на 2 центи на день. Ми також можемо отримати точку перетину регресії з віссю Y за допомогою `lin_reg.intercept_` — у нашому випадку вона буде близько `21`, що вказує на ціну на початку року.
Об’єкт `LinearRegression` після виконання `fit` містить усі коефіцієнти регресії, до яких можна отримати доступ за допомогою властивості `.coef_`. У нашому випадку є лише один коефіцієнт, який має бути близько `-0.017`. Це означає, що ціни, схоже, трохи знижуються з часом, але не дуже сильно, приблизно на 2 центи за день. Ми також можемо отримати точку перетину регресії з віссю Y за допомогою `lin_reg.intercept_` — вона буде близько `21`у нашому випадку, що вказує на ціну на початку року.
Щоб побачити, наскільки точна наша модель, ми можемо передбачити ціни на тестовому наборі даних, а потім виміряти, наскільки близькі наші передбачення до очікуваних значень. Це можна зробити, використовуючи метрику середньоквадратичної помилки (MSE), яка є середнім усіх квадратів різниць між очікуваним і передбаченим значенням.
Щоб побачити, наскільки точна наша модель, ми можемо передбачити ціни на тестовому наборі даних, а потім виміряти, наскільки близькі наші прогнози до очікуваних значень. Це можна зробити за допомогою метрики кореня середньоквадратичної помилки (RMSE), яка є коренем середнього значення всіх квадратів різниці між очікуваним і передбаченим значеннями.
Наша помилка, здається, близько 2 балів, що приблизно ~17%. Не дуже добре. Іншим показником якості моделі є **коефіцієнт детермінації**, який можна отримати так:
Наша похибка, здається, близько 2 балів, що приблизно ~17%. Не дуже добре. Ще одним показником якості моделі є **коефіцієнт детермінації**, який можна отримати ось так:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Якщо значення дорівнює 0, це означає, що модель не враховує вхідні дані ідіє як *найгірший лінійний прогноз*, що просто є середнім значенням результату. Значення 1 означає, що ми можемо ідеально передбачити всі очікувані виходи. У нашому випадку коефіцієнт становить близько 0.06, що досить низько.
Якщо значення дорівнює 0, це означає, що модель не враховує вхідні дані іповодиться як *найгірший лінійний предиктор*, який просто повертає середнє значення результату. Значення 1 означає, що ми можемо ідеально передбачити всі очікувані виходи. В нашому випадку коефіцієнт близько 0.06, що досить низько.
Ми також можемо побудувати графік тестових даних разом із лінією регресії, щоб краще побачити, як працює регресія у нашому випадку:
Ми також можемо побудувати графік тестових даних разом з лінією регресії, щоб краще побачити, як регресія працює в нашому випадку:
```python
plt.scatter(X_test,y_test)
@ -235,17 +238,17 @@ plt.plot(X_test,pred)
## Поліноміальна регресія
Інший тип лінійної регресії — це поліноміальна регресія. Хоча іноді між змінними існує лінійний зв’язок — чим більша гарбуз за обсягом, тим вища ціна — іноді ці зв’язки не можна зобразити у вигляді площини або прямої лінії.
Інший тип лінійної регресії — це поліноміальна регресія. Хоча іноді між змінними існує лінійний зв’язок — чим більша гарбуз за обсягом, тим вища ціна — іноді такі зв’язки не можна відобразити у вигляді площини чи прямої лінії.
✅ Ось [ще кілька прикладів](https://online.stat.psu.edu/stat501/lesson/9/9.8) даних, для яких можна використати поліноміальну регресію
✅ Ось [декілька інших прикладів](https://online.stat.psu.edu/stat501/lesson/9/9.8) даних, які можуть потребувати поліноміальної регресії.
Знову погляньте на зв’язок між Датою та Ціною. Чи здається цей розкиданий графік такого, що його обов’язково треба аналізувати за допомогою прямої лінії? Чи не можуть ціни коливатися? У цьому випадку ви можете спробувати поліноміальну регресію.
Подивіться ще раз на зв’язок між датою та ціною. Чи цього розсіювання досить, щоб його обов’язково слід аналізувати прямою лінією? А чи не можуть ціни коливатися? У такому разі можна спробувати поліноміальну регресію.
✅ Поліноми — це математичні вирази, які можуть складатися з однієї або кількох змінних і коефіцієнтів.
✅ Поліноми — це математичні вирази, які можуть складатися з однієї чи кількох змінних і коефіцієнтів.
Поліноміальна регресія створює криву лінію, щоб краще підходити для нелінійних даних. У нашому випадку, якщо ми додамо змінну `DayOfYear`у квадраті до вхідних даних, ми зможемо наблизити наші дані параболічною кривою, яка матиме мінімум у певній точці протягом року.
Поліноміальна регресія створює криву лінію, щоб краще підходити нелінійним даним. У нашому випадку, якщо включити змінну `DayOfYear`у квадраті в вхідні дані, ми зможемо апроксимувати наші дані параболою, що має мінімум у певній точці року.
Scikit-learn включає корисний [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline), щоб поєднати різні кроки обробки даних. **Pipeline** — це ланцюжок **оцінювачів**. У нашому випадку ми створимо pipeline, який спочатку додає поліноміальні ознаки до нашої моделі, а потім навчає регресію:
Scikit-learn має корисний [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) для об’єднання різних кроків обробки даних. **Pipeline** — це ланцюжок **оцінювачів**. У нашому випадку ми створимо pipeline, який спочатку додасть поліноміальні ознаки до моделі, а потім навчатиме регресію:
```python
from sklearn.preprocessing import PolynomialFeatures
Використання `PolynomialFeatures(2)` означає, що ми включатимемо всі поліноми другого ступеня з вхідних даних. У нашому випадку це буде просто `DayOfYear`<sup>2</sup>, але за наявності двох вхідних змінних X і Y це додасть X<sup>2</sup>, XY та Y<sup>2</sup>. Ми також можемо використовувати поліноми вищих ступенів, якщо хочемо.
Використання `PolynomialFeatures(2)` означає, що ми включимо всі поліноми другого ступеня із вхідних даних. У нашому випадку це просто `DayOfYear`<sup>2</sup>, але якщо є дві вхідні змінні X і Y, додадуться X<sup>2</sup>, XY і Y<sup>2</sup>. Ми також можемо використати поліноми вищого ступеня, якщо хочемо.
Pipeline можна використовувати так само, як і оригінальний об’єкт `LinearRegression`, тобто ми можемо викликати `fit` для pipeline, а потім використовувати `predict` для отримання результатів передбачення. Ось графік, що показує тестові дані та наближену криву:
Pipeline можна використовувати так само, як і оригінальний об'єкт `LinearRegression`, тобто ми можемо `fit` pipeline, а потім викликати `predict` для отримання прогнозів. Ось графік, що показує тестові дані та криву апроксимації:
З використанням поліноміальної регресії ми можемо отримати трохи нижче MSE та вищий коефіцієнт детермінації, але незначно. Нам варто врахувати інші ознаки!
За допомогою поліноміальної регресії ми можемо отримати дещо нижче MSE та вищий коефіцієнт детермінації, але не суттєво. Потрібно враховувати інші ознаки!
> Ви можете побачити, що мінімальні ціни на гарбузи спостерігаються десь близько Геловіну. Як ви це можете пояснити?
> Ви бачите, що мінімальні ціни на гарбузи спостерігаються десь біля Геловіну. Як це можна пояснити?
🎃 Вітаємо, ви щойно створили модель, яка може допомогти передбачити ціну гарбузів для пирогів. Ви, ймовірно, зможете повторити ту ж процедуру для всіх типів гарбузів, але це було б нудно. Навчімося зараз враховувати сорт гарбуза у нашій моделі!
🎃 Вітаємо, ви щойно створили модель, яка може допомогти передбачити ціну гарбузів для пирогів. Ймовірно, ви можете повторити цю процедуру для всіх типів гарбузів, але це було б нудно. Давайте навчимося враховувати сорт гарбуза в нашій моделі!
## Категоріальні ознаки
В ідеальному світі ми хочемо мати можливість передбачати ціни для різних сортів гарбуза, використовуючи одну й ту ж модель. Однак стовпець `Variety` дещо відрізняється від таких стовпців, як `Month`, бо він містить нечислові значення. Такі стовпці називаються **категоріальними**.
В ідеальному світі ми хочемо передбачати ціни для різних сортів гарбузів за допомогою однієї моделі. Однак стовпець `Variety` дещо відрізняється від стовпців на кшталт `Month`, тому що містить нечислові значення. Такі стовпці називаються **категоріальними**.
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
[](https://youtu.be/DYGliioIAE0 "ML для початківців - передбачення з категоріальними ознаками за допомогою лінійної регресії")
> 🎥 Натисніть на зображення вище для короткого відеоогляду використання категоріальних ознак.
Тут ви можете побачити, як середня ціна залежить від сорту:
Тут ви бачите, як середня ціна залежить від сорту:
<imgalt="Average price by variety"src="../../../../translated_images/uk/price-by-variety.744a2f9925d9bcb4.webp"width="50%"/>
Щоб врахувати сорт, спочатку нам потрібно перетворити його у числову форму, або**закодувати** його. Є кілька способів зробити це:
Щоб врахувати сорт, спочатку потрібно перетворити його у числову форму, або**закодувати**. Є кілька способів це зробити:
* Просте **числове кодування** побудує таблицю різних сортів, а потім замінить назву сорту на індексу цій таблиці. Це не найкраща ідея для лінійної регресії, бо лінійна регресія бере фактичне числове значення індексу і додає його до результату, множачи на якийсь коефіцієнт. У нашому випадку залежність між номером індексу та ціною явно нелінійна, навіть якщо ми впевнемося, що індекси впорядковані в певний спосіб.
* **One-hot кодування** замінить стовпець `Variety` на 4 різні стовпці, по одному для кожного сорту. Кожен стовпець міститиме `1`, якщо відповідний рядок належить до певного сорту, і`0` в інших випадках. Це означає, що в лінійній регресії буде чотири коефіцієнти — по одному для кожного сорту гарбузів, відповідальних за «початкову ціну» (а точніше «додаткову ціну») для цього конкретного сорту.
* Просте **числове кодування** створює таблицю різних сортів, а потім замінює назву сорту індексому цій таблиці. Це не найкраща ідея для лінійної регресії, оскільки регресія бере фактичне числове значення індексу і додає його до результату, множачи на коефіцієнт. У нашому випадку залежність між номером індексу і ціною очевидно нелінійна, навіть якщо впорядкувати індекси певним чином.
* **One-hot кодування** замінить стовпець `Variety` на 4 різні стовпці — по одному для кожного сорту. Кожен стовпець міститиме `1`, якщо відповідний рядок — це даний сорт, і`0` інакше. Це означає, що у лінійній регресії буде чотири коефіцієнти, по одному для кожного сорту гарбузів, які відповідають за "початкову ціну" (або радше "додаткову ціну") для цього сорту.
Код нижче показує, як можна виконати one-hot кодування сорту:
Щоб навчити лінійну регресію за допомогою one-hot закодованого сорту як вхідних даних, потрібно просто правильно ініціалізувати `X`і`y`:
Щоб навчити лінійну регресію з one-hot кодуванням сорту у вхідних даних, нам просто потрібно правильно ініціалізувати `X`і`y`:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Решта коду така сама, як і вище, для навчання лінійної регресії. Якщо ви спробуєте це, то побачите, що середньоквадратична помилка приблизно така сама, але коефіцієнт детермінації набагато вищий (~77%). Щоб отримати ще більш точні передбачення, ми можемо врахувати більше категоріальних ознак, а також числові ознаки, такі як `Month`або`DayOfYear`. Щоб отримати один великий масив ознак, ми можемо використати `join`:
Решта коду така сама, як і вище для навчання лінійної регресії. Якщо спробувати, побачите, що середньоквадратична помилка приблизно така ж, але коефіцієнт детермінації значно вищий (~77%). Щоб отримати ще точніші прогнози, ми можемо враховувати більше категоріальних ознак, а також числові, такі як `Month`або`DayOfYear`. Щоб отримати один великий масив ознак, можна використати `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +322,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Тут ми також враховуємо `City`і тип `Package`, що дає нам MSE 2.84 (10%) і коефіцієнт детермінації 0.94!
Тут ми також враховуємо `City`і тип упаковки `Package`, що дає нам MSE = 2.84 (10%) і коефіцієнт детермінації 0.94!
## Об’єднуємо все разом
## Підсумовуємо
Щоб отримати найкращу модель, ми можемо використати комбіновані (one-hot закодовані категоріальні + числові) дані з наведеного вище прикладу разом з поліноміальною регресією. Ось повний код для вашої зручності:
Щоб створити найкращу модель, ми можемо використовувати комбіновані (one-hot закодовані категоріальні + числові) дані з вищенаведеного прикладу разом з поліноміальною регресією. Ось повний код для вашої зручності:
```python
# налаштувати навчальні дані
@ -333,17 +336,17 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# зробити розподіл на тренувальні та тестові дані
# зробити розподіл на навчальну та тестову вибірки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
| Лінійна за всіма ознаками | 2.84 (10.5%) | 0.94 |
| Поліноміальна за всіма ознаками | 2.23 (8.25%) | 0.97 |
🏆 Молодець! Ви створили чотири регресійні моделі в одному уроці і покращили якість моделі до 97%. У фінальному розділі про регресію ви дізнаєтесь про логістичну регресію для визначення категорій.
🏆 Відмінна робота! Ви створили чотири моделі регресії в одному уроці і покращили якість моделі до 97%. У фінальній частині про регресію ви дізнаєтесь про логістичну регресію для визначення категорій.
---
## 🚀Виклик
## 🚀Виклик
Перевірте декілька різних змінних у цій нотатці, щоб побачити, як кореляція відповідає точності моделі.
Перевірте кілька різних змінних у цьому ноутбуці, щоб побачити, як кореляція відповідає точності моделі.
## [Квіз після лекції](https://ff-quizzes.netlify.app/en/ml/)
## [Вікторина після лекції](https://ff-quizzes.netlify.app/en/ml/)
## Огляд та самостійне вивчення
У цьому уроці ми дізнались про лінійну регресію. Існують також інші важливі типи регресії. Прочитайте про покрокові, Ridge, Lasso та Elasticnet методи. Хорошим курсом для подальшого вивчення є [курс Стенфордського університету зі статистичного навчання](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
В цьому уроці ми вивчили лінійну регресію. Існують також інші важливі типи регресії. Прочитайте про крокову, Ridge, Lasso та Elasticnet техніки. Хорошим курсом для поглибленого вивчення є [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Завдання
## Завдання
[Побудуйте модель](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Відмова від відповідальності**:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, просимо враховувати, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
**Відмова від відповідальності**:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
У цьому уроці ви будете використовувати набір даних, який ви зберегли з попереднього уроку, наповнений збалансованими та очищеними даними про кухні.
У цьому уроці ви використаєте набір даних, який зберегли з попереднього уроку, повний збалансованих, чистих даних про кухні.
Ви будете використовувати цей набір даних із різними класифікаторами, щоб _передбачити національну кухню на основі групиінгредієнтів_. Під час цього ви дізнаєтеся більше про способи використання алгоритмів для задач класифікації.
Ви використаєте цей набір даних із різними класифікаторами, щоб _передбачити національну кухню на основі наборуінгредієнтів_. Під час цього ви дізнаєтеся більше про деякі способи використання алгоритмів для задач класифікації.
## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
Якщо ви завершили [Урок 1](../1-Introduction/README.md), переконайтеся, що файл _cleaned_cuisines.csv_ знаходиться в кореневій папці `/data` для цих чотирьох уроків.
Припускаючи, що ви виконали [Урок 1](../1-Introduction/README.md), переконайтеся, що файл _cleaned_cuisines.csv_ існує в кореневій папці `/data` протягом цих чотирьох уроків.
## Вправа - передбачення національної кухні
## Вправа – передбачення національної кухні
1. Працюючи в папці _notebook.ipynb_ цього уроку, імпортуйте цей файл разом із бібліотекою Pandas:
1. Працюючи у папці з цим уроком _notebook.ipynb_, імпортуйте цей файл разом із бібліотекою Pandas:
```python
import pandas as pd
@ -40,7 +40,7 @@
import numpy as np
```
1. Розділіть координати X та y на два датафрейми для тренування. `cuisine` може бути датафреймом міток:
1. Розділіть координати X і y на два датафрейми для навчання. `cuisine` може бути датафреймом міток:
```python
cuisines_label_df = cuisines_df['cuisine']
@ -58,7 +58,7 @@
Name: cuisine, dtype: object
```
1. Видаліть стовпці `Unnamed: 0` та `cuisine`, використовуючи `drop()`. Збережіть решту даних як тренувальні ознаки:
1. Відкиньте стовпець `Unnamed: 0`і стовпець `cuisine`, викликавши `drop()`. Збережіть решту даних як ознаки для навчання:
Тепер, коли ваші дані очищені та готові до тренування, вам потрібно вирішити, який алгоритм використовувати для задачі.
Тепер, коли ваші дані чисті та готові до навчання, вам потрібно вирішити, який алгоритм використовувати для задачі.
Scikit-learn групує класифікацію під Навчання з учителем, і в цій категорії ви знайдете багато способів класифікації. [Різноманіття](https://scikit-learn.org/stable/supervised_learning.html) може здатися приголомшливим на перший погляд. Наступні методи включають техніки класифікації:
Scikit-learn об'єднує класифікацію під категорією Навчання з вчителем (Supervised Learning), і в цій категорії ви знайдете багато способів класифікації. [Різноманітність](https://scikit-learn.org/stable/supervised_learning.html) на перший погляд досить вражаюча. Наступні методи включають техніки класифікації:
- Лінійні моделі
- Машини опорних векторів
- Підтримкові векторні машини
- Стохастичний градієнтний спуск
- Найближчі сусіди
- Гауссові процеси
- Гаусові процеси
- Дерева рішень
- Ансамблеві методи (голосуючий класифікатор)
- Алгоритми для багатокласових і багатовихідних задач (багатокласова і багатоміткова класифікація, багатокласова-багатовихідна класифікація)
- Метод ансамблів (voting Classifier)
- Алгоритми для багатокласової та мультививідної класифікації (multiclass і multilabel classification, multiclass-multioutput classification)
> Ви також можете використовувати [нейронні мережі для класифікації даних](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), але це виходить за рамки цього уроку.
> Ви також можете використовувати [нейронні мережі для класифікації даних](https://scikit-learn.org/stable/modules/neural_networks_supervised.html#classification), але це поза межами цього уроку.
### Який класифікатор обрати?
Отже, який класифікатор слід обрати? Часто тестування кількох класифікаторів і пошук найкращого результату є способом перевірки. Scikit-learn пропонує [порівняння](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) на створеному наборі даних, порівнюючи KNeighbors, SVC двома способами, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB і QuadraticDiscriminationAnalysis, показуючи результати візуалізованими:
Отже, який класифікатор слід вибрати? Часто запуск декількох і пошук гарного результату — це спосіб тестування. Scikit-learn пропонує [порівняння один поруч з одним](https://scikit-learn.org/stable/auto_examples/classification/plot_classifier_comparison.html) на створеному наборі даних, порівнюючи KNeighbors, SVC двома способами, GaussianProcessClassifier, DecisionTreeClassifier, RandomForestClassifier, MLPClassifier, AdaBoostClassifier, GaussianNB і QuadraticDiscrinationAnalysis, демонструючи результати у візуалізованому вигляді:
> AutoML вирішує цю проблему, виконуючи ці порівняння в хмарі, дозволяючи вам обрати найкращий алгоритм для ваших даних. Спробуйте [тут](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
> AutoML вирішує цю проблему акуратно, запускаючи ці порівняння у хмарі, що дозволяє обрати найкращий алгоритм для ваших даних. Спробуйте [тут](https://docs.microsoft.com/learn/modules/automate-model-selection-with-azure-automl/?WT.mc_id=academic-77952-leestott)
### Кращий підхід
Кращий спосіб, ніж просто здогадуватися, — це слідувати ідеям із цього завантажуваного [ML Cheat sheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Тут ми дізнаємося, що для нашої багатокласової задачі у нас є кілька варіантів:
Однак кращий спосіб ніж гадаючи навмання — це слідувати ідеям з цього завантажувального [ML Cheatsheet](https://docs.microsoft.com/azure/machine-learning/algorithm-cheat-sheet?WT.mc_id=academic-77952-leestott). Тут ми бачимо, що для нашої задачі багатокласової класифікації ми маємо кілька варіантів:

> Частина шпаргалки Microsoft Algorithm Cheat Sheet, що описує варіанти багатокласової класифікації

> Частина алгоритмічного шпаргалки Microsoft, що описує варіанти багатокласової класифікації
✅ Завантажте цю шпаргалку, роздрукуйте її та повісьте на стіну!
✅ Завантажте цю шпаргалку, роздрукуйте її та прикріпіть на стіну!
### Міркування
### Обґрунтування
Давайте спробуємо розібратися в різних підходах, враховуючи наші обмеження:
Подивимося, чи можемо ми логічно підходити до вибору підходів з урахуванням наших обмежень:
- **Нейронні мережі занадто важкі**. З огляду на наш очищений, але мінімальний набір даних, і той факт, що ми запускаємо тренування локально через ноутбуки, нейронні мережі занадто важкі для цього завдання.
- **Не використовуємо класифікатор для двох класів**. Ми не використовуємо класифікатор для двох класів, тому це виключає one-vs-all.
- **Дерева рішень або логістична регресія можуть підійти**. Дерева рішень можуть підійти, або логістична регресія для багатокласових даних.
- **Багатокласові Boosted Decision Trees вирішують іншу задачу**. Багатокласове Boosted Decision Tree найбільш підходить для непараметричних задач, наприклад, задач, спрямованих на створення рейтингів, тому це нам не підходить.
- **Нейронні мережі занадто важкі**. Враховуючи наш чистий, але мінімальний набір даних і той факт, що навчання відбувається локально у блокнотах, нейронні мережі є занадто ресурсомісткими для цієї задачі.
- **Без двокласового класифікатора**. Ми не використовуємо двокласовий класифікатор, тому виключаємо схему один проти усіх (one-vs-all).
- **Може підійти дерево рішень або логістична регресія**. Можливо дерево рішень, або логістична регресія для багатокласових даних.
- **Багатокласові бустінгові дерева прийнятні для інших задач**. Багатокласове бустінгове дерево найкраще пасує для непараметричних задач, наприклад, для побудови ранжувань, тому для нас не підходить.
### Використання Scikit-learn
### Використання Scikit-learn
Ми будемо використовувати Scikit-learn для аналізу наших даних. Однак існує багато способів використання логістичної регресії в Scikit-learn. Ознайомтеся з [параметрами для передачі](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Ми будемо використовувати Scikit-learn для аналізу наших даних. Однак існує багато способів використовувати логістичну регресію у Scikit-learn. Ознайомтеся з [параметрами, що можна передавати](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Фактично, є два важливі параметри - `multi_class`і`solver` - які нам потрібно вказати, коли ми просимо Scikit-learn виконати логістичну регресію. Значення `multi_class` визначає певну поведінку. Значення solver визначає, який алгоритм використовувати. Не всі solvers можна поєднувати з усіма значеннями `multi_class`.
По суті, є два важливі параметри — `multi_class` та `solver` — які треба вказати, коли ви просите Scikit-learn провести логістичну регресію. Параметр `multi_class` задає певну поведінку. Параметр `solver` визначає, який алгоритм використовувати. Не всі solver-ки можуть поєднуватись з усіма значеннями `multi_class`.
Згідно з документацією, у випадку багатокласової задачі, алгоритм навчання:
Згідно з документацією, для багатокласового випадку алгоритм навчання:
- **Використовує схему one-vs-rest (OvR)**, якщо параметр `multi_class` встановлено як`ovr`
- **Використовує функцію втрат крос-ентропії**, якщо параметр `multi_class` встановлено як `multinomial`. (На даний момент опція `multinomial` підтримується лише solvers: ‘lbfgs’, ‘sag’, ‘saga’і‘newton-cg’.)
- **Використовує схему Один проти решти (OvR)**, якщо параметр `multi_class` встановлено в`ovr`
- **Використовує крос-ентропійне відхилення**, якщо параметр `multi_class` встановлено в `multinomial`. (Зараз опція `multinomial` підтримується лише solver-ами 'lbfgs', 'sag', 'saga' і 'newton-cg')."
> 🎓 "Схема" тут може бути або 'ovr' (one-vs-rest), або 'multinomial'. Оскільки логістична регресія насправді призначена для підтримки бінарної класифікації, ці схеми дозволяють їй краще справлятися з багатокласовими задачами класифікації. [джерело](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 'Схема' тут може бути або 'ovr' (один проти решти), або 'multinomial'. Оскільки логістична регресія насамперед розроблена для бінарної класифікації, ці схеми дають їй можливість краще працювати з багатокласовими задачами. [джерело](https://machinelearningmastery.com/one-vs-rest-and-one-vs-one-for-multi-class-classification/)
> 🎓 "Solver" визначається як "алгоритм, який використовується для вирішення задачі оптимізації". [джерело](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
> 🎓 'Solver' визначається як "алгоритм для використання у задачі оптимізації". [джерело](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html?highlight=logistic%20regressio#sklearn.linear_model.LogisticRegression).
Scikit-learn пропонує цю таблицю, щоб пояснити, як solvers справляються з різними викликами, представленими різними типами структур даних:
Scikit-learn пропонує цю таблицю, щоб пояснити, як solver-и справляються з різними викликами, які виникають у різних типах структур даних:
Оскільки ви використовуєте багатокласовий випадок, вам потрібно вибрати, яку _схему_використовувати і який _solver_ встановити. Використовуйте LogisticRegression із багатокласовим налаштуванням і**liblinear** solver для тренування.
Оскільки ви використовуєте багатокласовий випадок, потрібно вибрати, яку _схему_застосувати і який _solver_ встановити. Використовуйте LogisticRegression з параметром multi_class і solver-ом **liblinear** для навчання.
1. Створіть логістичну регресію з multi_class, встановленим як `ovr`, і solver, встановленим як`liblinear`:
1. Створіть логістичну регресію з multi_class`ovr`і solver-ом`liblinear`:
```python
lr = LogisticRegression(multi_class='ovr',solver='liblinear')
✅ Спробуйте інший solver, наприклад `lbfgs`, який часто встановлюється за замовчуванням.
> Зверніть увагу, використовуйте функцію Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) для згладжування ваших даних, коли це необхідно.
Точність становить понад **80%**!
✅ Спробуйте інший solver, наприклад, `lbfgs`, який часто встановлений за замовчуванням
1. Ви можете побачити, як ця модель працює, протестувавши один рядок даних (#50):
> Зауважте, використовуйте функцію Pandas [`ravel`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ravel.html) для згладжування даних, коли це потрібно.
Точність досить добра — понад **80%**!
1. Ви можете побачити цю модель у дії, протестувавши один рядок даних (#50):
У цьому уроці ви використали очищені дані для створення моделі машинного навчання, яка може передбачати національну кухню на основі серії інгредієнтів. Приділіть час, щоб ознайомитися з багатьма варіантами, які Scikit-learn пропонує для класифікації даних. Заглибтеся в концепцію 'solver', щоб зрозуміти, що відбувається за лаштунками.
У цьому уроці ви використовували свої очищені дані для побудови моделі машинного навчання, яка може передбачити національну кухню на основі набору інгредієнтів. Приділіть час, щоб ознайомитися з багатьма варіантами, які пропонує Scikit-learn для класифікації даних. Заглибтесь у концепцію 'solver', щоб зрозуміти, що відбувається за лаштунками.
## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
Заглибтеся трохи більше в математику логістичної регресії в [цьому уроці](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Завдання
Заглибтеся в математику за логістичною регресією у [цьому уроці](https://people.eecs.berkeley.edu/~russell/classes/cs194/f11/lectures/CS194%20Fall%202011%20Lecture%2006.pdf)
## Завдання
[Вивчіть solvers](assignment.md)
---
**Відмова від відповідальності**:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Відмова від відповідальності**:
Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ його рідною мовою слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
> Цей репозиторій містить понад 50 перекладів мов, що значно збільшує розмір завантаження. Щоб клонувати без перекладів, використовуйте sparse checkout:
> У цьому репозиторії є понад 50 мов перекладу, що істотно збільшує розмір завантаження. Щоб клонувати без перекладів, використовуйте sparse checkout:
>
> **Bash / macOS / Linux:**
> ```bash
@ -33,164 +33,164 @@
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> Це дасть вам все необхідне для проходження курсу з набагато швидшим завантаженням.
> Це дасть вам усе необхідне для проходження курсу з набагато швидшим завантаженням.
Ми проводимо серію Discord для навчання з AI, дізнайтеся більше і приєднуйтесь до нас на [Learn with AI Series](https://aka.ms/learnwithai/discord) з 18 по 30 вересня 2025 року. Ви отримаєте поради та прийоми використання GitHub Copilot для Data Science.
У нас проходить серія навчань з Discord про AI, дізнайтеся більше та приєднуйтеся до нас на [Learn with AI Series](https://aka.ms/learnwithai/discord) з 18 по 30 вересня 2025 року. Ви отримаєте поради та прийоми використання GitHub Copilot для Data Science.

# Машинне навчання для початківців - навчальна програма
# Машинне навчання для початківців — Навчальна програма
> 🌍 Подорожуємо навколо світу, досліджуючи машинне навчання через призму світових культур 🌍
> 🌍 Подорожуйте навколо світу, вивчаючи Машинне навчання через культури світу 🌍
Команда Cloud Advocates в Microsoft рада запропонувати 12-тижневу навчальну програму з 26 уроками, повністю присвячену **машинному навчанню**. У цій програмі ви дізнаєтеся про те, що іноді називають **класичним машинним навчанням**, використовуючи переважно бібліотеку Scikit-learn та уникаючи глибинного навчання, яке розглядається в нашій [навчальній програмі «AI для початківців»](https://aka.ms/ai4beginners). Також поєднуйте ці уроки з нашою ['Data Science для початківців'](https://aka.ms/ds4beginners)!
Співробітники Microsoft Cloud Advocates раді запропонувати 12-тижневу навчальну програму з 26 уроків, присвячену **машинному навчанню**. У цій програмі ви дізнаєтеся про те, що іноді називають **класичним машинним навчанням**, переважно використовуючи бібліотеку Scikit-learn і уникаючи глибокого навчання, яке освітлюється в нашій [навчальній програмі AI for Beginners](https://aka.ms/ai4beginners). Поєднуйте ці уроки з нашою ['Data Science for Beginners' навчальною програмою](https://aka.ms/ds4beginners).
Подорожуйте з нами по світу, застосовуючи ці класичні методи до даних з різних регіонів. Кожен урок містить опитування перед і після уроку, письмові інструкції для виконання завдання, розв’язок, домашнє завдання і більше. Наша проектно-орієнтована педагогіка дозволяє вчитися через створення проектів, що є доведеним способом закріплення нових навичок.
Подорожуйте разом з нами по світу, застосовуючи ці класичні методи до даних з багатьох куточків світу. Кожен урок містить тести до та після уроку, інструкції для виконання, розв’язок, завдання й більше. Наша проектно-орієнтована педагогіка дозволяє вчитися, створюючи, що є перевіреним способом для кращого засвоєння нових навичок.
> [знайдіть усі додаткові ресурси для цього курсу в нашій колекції Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
> 🔧 **Потрібна допомога?** Перегляньте наш [Посібник з усунення несправностей](TROUBLESHOOTING.md) для розв’язання поширених проблем із встановленням, налаштуванням і запуском уроків.
> 🔧 **Потрібна допомога?** Перегляньте наш [Посібник з усунення несправностей](TROUBLESHOOTING.md) для розв’язання типових проблем з установкою, налаштуванням та запуском уроків.
**[Студенти](https://aka.ms/student-page)**, щоб користуватися цією навчальною програмою, форкніть увесь репозиторій до вашого акаунта на GitHub та виконуйте вправи самостійно абоу групі:
**[Студенти](https://aka.ms/student-page)**, щоб користуватися цією програмою, відфоркуйте весь репозиторій на свій обліковий запис GitHub і виконуйте вправи самостійно або в групі:
- Почніть з опитування перед лекцією.
- Прочитайте лекцію і виконайте завдання, зупиняючись та рефлексуючи на кожній перевірці знань.
- Намагайтеся створювати проекти, розуміючи уроки, а не просто запускаючи код розв’язків; код доступний у папках `/solution` кожного проектно-орієнтованого уроку.
- Пройдіть опитування після лекції.
- Розпочніть з передлекційного тесту.
- Прочитайте лекцію і виконуйте завдання, зупиняючись і розмірковуючи під час кожної перевірки знань.
- Намагайтеся створювати проекти, розуміючи матеріал уроку, а не просто запускаючи код розв’язку; проте цей код доступний у папках `/solution` кожного проектно-орієнтованого уроку.
- Виконайте післялекційний тест.
- Виконайте виклик.
- Виконайте домашнє завдання.
- Після завершення групи уроків відвідайте [Дошку обговорень](https://github.com/microsoft/ML-For-Beginners/discussions) і "вчіться вголос", заповнюючи відповідну рубрику PAT. PAT — це інструмент оцінки прогресу, тобто рубрика, яку ви заповнюєте для подальшого навчання. Ви також можете реагувати на інші PAT, щоб ми могли вчитися разом.
- Виконайте завдання.
- Після завершення групи уроків відвідайте [Дошку обговорень](https://github.com/microsoft/ML-For-Beginners/discussions) і "вчіться вголос", заповнюючи відповідну рубрику PAT. «PAT» — це інструмент оцінювання прогресу, який ви заповнюєте для подальшого навчання. Також можна реагувати на інші PAT, щоб ми вчилися разом.
> Для подальшого вивчення рекомендуємо слідкувати за цими [модулями та навчальними шляхами Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
> Для подальшого навчання рекомендуємо виконати ці модулі та навчальні шляхи на [Microsoft Learn](https://docs.microsoft.com/en-us/users/jenlooper-2911/collections/k7o7tg1gp306q4?WT.mc_id=academic-77952-leestott).
**Викладачі**, ми [додали кілька рекомендацій](for-teachers.md) щодо використання цієї навчальної програми.
**Вчителі**, ми включили деякі [пропозиції](for-teachers.md) щодо використання цієї навчальної програми.
---
## Відеоогляди
## Відео-розбори
Деякі уроки доступні у вигляді коротких відео. Ви можете знайти всі їх у тексті уроківабо на [плейлисті ML for Beginners на YouTube-каналі Microsoft Developer](https://aka.ms/ml-beginners-videos), натиснувши на зображення нижче.
Деякі уроки доступні у вигляді коротких відео. Усі їх можна знайти у самих урокахабо на [плейлисті ML for Beginners на каналі Microsoft Developerу YouTube](https://aka.ms/ml-beginners-videos), натиснувши на зображення нижче.
[](https://aka.ms/ml-beginners-videos)
> 🎥 Натисніть на зображення вище, щоб побачити відео про проект та людей, які його створили!
> 🎥 Натисніть на зображення вище, щоб переглянути відео про проєкт та людей, які його створили!
---
## Педагогіка
Ми обрали два педагогічні принципи при створенні цієї програми: забезпечення практичної, **проектно-орієнтованої** форми навчання та включення **частих опитувань**. Крім того, ця програма має спільну **тематичну лінію**, що додає цілісності.
Ми обрали два педагогічні принципи при розробці програми: забезпечення практичного **проектного підходу** та включення **частих тестів**. Крім того, ця навчальна програма має спільну **тему** для цілісності.
Забезпечуючи відповідність контенту проектам, процес стає більш захопливим для студентів і покращує запам’ятовування концепцій. Крім того, опитування з невисокою ставкою перед заняттям налаштовує студента на вивчення теми, а друге після заняття забезпечує подальше закріплення матеріалу. Ця програма спроектована бути гнучкою і цікавою, її можна проходити повністю або частково. Проекти починаються з простих і стають дедалі складнішими до кінця 12-тижневого циклу. У програмі також є доповнення про реальні застосування машинного навчання, яке можна використати як додатковий бал або як основу для обговорення.
Забезпечення відповідності вмісту проектам робить процес навчання більш захопливим для студентів, а також підвищує запам’ятовування концепцій. Низькопороговий тест перед заняттям налаштовує студента на вивчення теми, а другий тест після уроку забезпечує краще засвоєння. Програма була створена так, щоб бути гнучкою і цікавою, її можна проходити повністю або частково. Проекти починаються з простих і стають все складнішими до кінця 12-тижневого циклу. Програма також включає післямову про практичне застосування ML, яку можна використовувати як додатковий кредит або для бази обговорення.
> Ознайомтеся з нашим [Кодексом поведінки](CODE_OF_CONDUCT.md), [внесенням внеску](CONTRIBUTING.md), [перекладами](..) та [посібником з усунення несправностей](TROUBLESHOOTING.md). Ми вітаємо ваші конструктивні відгуки!
> Знайдіть наші [Кодекс поведінки](CODE_OF_CONDUCT.md), [Внесок](CONTRIBUTING.md), [Переклади](..) та [Посібник з усунення несправностей](TROUBLESHOOTING.md). Ми раді вашому конструктивному зворотному зв’язку!
## Кожен урок включає
- опціональні замальовки
- опціональне додаткове відео
- відеоогляд (лише деякі уроки)
- [опитування для розминки перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
- необов’язкові нотатки (sketchnote)
- необов’язкове допоміжне відео
- відео-розбір (лише для деяких уроків)
- [тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
- письмовий урок
- для проектно-орієнтованих уроків — покрокові інструкції зі створення проекту
- для уроків з проєктами – покрокові інструкції зі створення проєкту
- перевірки знань
- виклик
- додаткове читання
- домашнє завдання
- [опитування після лекції](https://ff-quizzes.netlify.app/en/ml/)
> **Примітка про мови**: Ці уроки переважно написані на Python, але багато з них також доступні на R. Щоб пройти урок з R, перейдіть у папку `/solution`і знайдіть уроки на R. Вони мають розширення .rmd, що означає файл **R Markdown**, який можна просто визначити як інтеграцію `code chunks` (R чи інших мов) та `YAML header` (який керує тим, як форматувати виводи, наприклад PDF) у`Markdown документ`. Відтак, це слугує зразковим фреймворком для авторства в галузі науки про дані, оскільки дозволяє комбінувати ваш код, його вивід і ваші думки, дозволяючи записувати їх у Markdown. Крім того, документи R Markdown можна рендерити у формати виводу, такі як PDF, HTML чи Word.
> **Примітка про вікторини**: Усі вікторини містяться у [папці Quiz App](../../quiz-app), всього 52 вікторини по три питання кожна. Вони пов’язані з уроками, але додаток для вікторин можна запускати локально; дотримуйтесь інструкцій у папці `quiz-app`, щоб запустити локально або розгорнути на Azure.
| Номер уроку | Тема | Групування уроків | Навчальні цілі | Зв’язаний урок | Автор |
| 01 | Вступ до машинного навчання | [Introduction](1-Introduction/README.md) | Вивчіть базові поняття машинного навчання | [Lesson](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Історія машинного навчання | [Introduction](1-Introduction/README.md) | Дізнайтеся про історію цієї галузі | [Lesson](1-Introduction/2-history-of-ML/README.md) | Jen and Amy |
| 03 | Справедливість і машинне навчання | [Introduction](1-Introduction/README.md) | Які важливі філософські питання щодо справедливості слід розглядати студентам при розробці та застосуванні моделей машинного навчання? | [Lesson](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Техніки машинного навчання | [Introduction](1-Introduction/README.md) | Які техніки використовують дослідники машинного навчання для побудови моделей? | [Lesson](1-Introduction/4-techniques-of-ML/README.md) | Chris and Jen |
| 05 | Вступ до регресії | [Regression](2-Regression/README.md) | Почніть працювати з Python і Scikit-learn для моделей регресії | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Ціни гарбузів Північної Америки 🎃 | [Regression](2-Regression/README.md) | Візуалізуйте та очистьте дані у підготовці до машинного навчання | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Ціни гарбузів Північної Америки 🎃 | [Regression](2-Regression/README.md) | Побудуйте лінійні та поліноміальні моделі регресії | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen and Dmitry • Eric Wanjau |
| 08 | Ціни гарбузів Північної Америки 🎃 | [Regression](2-Regression/README.md) | Побудуйте модель логістичної регресії | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Веб-додаток 🔌 | [Web App](3-Web-App/README.md) | Побудуйте веб-додаток для використання вашої натренованої моделі | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Вступ до класифікації | [Classification](4-Classification/README.md) | Очистіть, підготуйте та візуалізуйте ваші дані; вступ до класифікації | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen and Cassie • Eric Wanjau |
| 11 | Смачна азійська та індійська кухні 🍜 | [Classification](4-Classification/README.md) | Вступ до класифікаторів | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen and Cassie • Eric Wanjau |
| 12 | Смачна азійська та індійська кухні 🍜 | [Classification](4-Classification/README.md) | Більше класифікаторів | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen and Cassie • Eric Wanjau |
| 13 | Смачна азійська та індійська кухні 🍜 | [Classification](4-Classification/README.md) | Побудуйте рекомендатор у веб-додатку, використовуючи вашу модель | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Вступ до кластеризації | [Clustering](5-Clustering/README.md) | Очистьте, підготуйте та візуалізуйте ваші дані; вступ до кластеризації | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Вивчення музичних смаків Нігерії 🎧 | [Clustering](5-Clustering/README.md) | Вивчіть метод кластеризації K-середніх | [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Вступ до обробки природної мови ☕️ | [Natural language processing](6-NLP/README.md) | Вивчіть основи NLP, створивши простого бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Загальні завдання NLP ☕️ | [Natural language processing](6-NLP/README.md) | Поглибте свої знання NLP, зрозумівши загальні завдання, необхідні при роботі з мовними структурами | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Переклад і аналіз сентименту ♥️ | [Natural language processing](6-NLP/README.md) | Переклад та аналіз сентименту з Jane Austen | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Романтичні готелі Європи ♥️ | [Natural language processing](6-NLP/README.md) | Аналіз сентименту на основі відгуків про готелі 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Романтичні готелі Європи ♥️ | [Natural language processing](6-NLP/README.md) | Аналіз сентименту на основі відгуків про готелі 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 22 | ⚡️ Світове споживання електроенергії ⚡️ - прогноз з ARIMA | [Time series](7-TimeSeries/README.md) | Прогнозування часових рядів з ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Світове споживання електроенергії ⚡️ - прогноз з SVR | [Time series](7-TimeSeries/README.md) | Прогнозування часових рядів за допомогою регресора опорних векторів (SVR) | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Вступ до підкріплювального навчання | [Reinforcement learning](8-Reinforcement/README.md) | Вступ до підкріплювального навчання з Q-навчанням | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Допоможіть Пітеру уникнути вовка! 🐺 | [Reinforcement learning](8-Reinforcement/README.md) | Підкріплювальне навчання Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Постскрипт | Реальні сценарії та застосування ML | [ML in the Wild](9-Real-World/README.md) | Цікаві та показові реальні застосування класичного машинного навчання | [Lesson](9-Real-World/1-Applications/README.md) | Team |
| Постскрипт | Відлагодження моделей ML з використанням панелі RAI | [ML in the Wild](9-Real-World/README.md) | Відлагодження моделей машинного навчання з використанням компонентів панелі Responsible AI | [Lesson](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [знайдіть всі додаткові ресурси для цього курсу у нашій колекції Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Офлайн-доступ
Ви можете запускати цю документацію офлайн, використовуючи [Docsify](https://docsify.js.org/#/). Форкніть цей репозиторій, [встановіть Docsify](https://docsify.js.org/#/quickstart) на свій локальний комп’ютер, а потім у кореневій теці цього репозиторію введіть `docsify serve`. Вебсайт буде доступний на порту 3000 на вашому локальному хості: `localhost:3000`.
## PDFs
Знайдіть pdf навчальної програми з посиланнями [тут](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Інші курси
Наша команда створює інші курси! Перегляньте:
- завдання
- [тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
> **Примітка про мови**: Ці уроки переважно написані на Python, але багато з них також доступні на R. Щоб завершити урок R, перейдіть до папки `/solution`і шукайте уроки R. Вони мають розширення .rmd, що є файлом**R Markdown**, який можна просто визначити як вбудування `кодових блоків` (на R або інших мовах) та `YAML заголовка` (який керує форматуванням виводів, таких як PDF) у`Markdown документ`. Таким чином, це слугує зразковою рамкою для написання у сфері наукових даних, оскільки дозволяє поєднувати код, його вивід і ваші думки, даючи можливість записувати їх у Markdown. Крім того, документи R Markdown можна виводити у формати PDF, HTML або Word.
> **Примітка про вікторини**: Усі вікторини містяться в [Папці додатку вікторини](../../quiz-app), всього 52 вікторини по три питання кожна. Вони пов’язані з уроками, але додаток вікторини можна запускати локально; дотримуйтеся інструкцій у папці `quiz-app` для локального розміщення чи розгортання в Azure.
| Номер уроку | Тема | Групування уроків | Цілі навчання | Пов’язаний урок | Автор |
| 01 | Вступ до машинного навчання | [Вступ](1-Introduction/README.md) | Вивчіть основні поняття машинного навчання | [Урок](1-Introduction/1-intro-to-ML/README.md) | Muhammad |
| 02 | Історія машинного навчання | [Вступ](1-Introduction/README.md) | Дізнайтеся історію, що лежить в основі цієї галузі | [Урок](1-Introduction/2-history-of-ML/README.md) | Jen та Amy |
| 03 | Справедливість і машинне навчання | [Вступ](1-Introduction/README.md) | Які важливі філософські питання щодо справедливості слід враховувати при створенні та застосуванні моделей МН? | [Урок](1-Introduction/3-fairness/README.md) | Tomomi |
| 04 | Техніки машинного навчання | [Вступ](1-Introduction/README.md) | Які техніки використовують дослідники МН для побудови моделей МН? | [Урок](1-Introduction/4-techniques-of-ML/README.md) | Chris і Jen |
| 05 | Вступ до регресії | [Регресія](2-Regression/README.md) | Початок роботи з Python і Scikit-learn для моделей регресії | [Python](2-Regression/1-Tools/README.md) • [R](../../2-Regression/1-Tools/solution/R/lesson_1.html) | Jen • Eric Wanjau |
| 06 | Ціни на гарбузи в Північній Америці 🎃 | [Регресія](2-Regression/README.md) | Візуалізація та очищення даних для підготовки до МН | [Python](2-Regression/2-Data/README.md) • [R](../../2-Regression/2-Data/solution/R/lesson_2.html) | Jen • Eric Wanjau |
| 07 | Ціни на гарбузи в Північній Америці 🎃 | [Регресія](2-Regression/README.md) | Побудова лінійної та поліноміальної регресій | [Python](2-Regression/3-Linear/README.md) • [R](../../2-Regression/3-Linear/solution/R/lesson_3.html) | Jen та Dmitry • Eric Wanjau |
| 08 | Ціни на гарбузи в Північній Америці 🎃 | [Регресія](2-Regression/README.md) | Побудова моделі логістичної регресії | [Python](2-Regression/4-Logistic/README.md) • [R](../../2-Regression/4-Logistic/solution/R/lesson_4.html) | Jen • Eric Wanjau |
| 09 | Веб-додаток 🔌 | [Веб-додаток](3-Web-App/README.md) | Створіть веб-додаток для використання вашої навченої моделі | [Python](3-Web-App/1-Web-App/README.md) | Jen |
| 10 | Вступ до класифікації | [Класифікація](4-Classification/README.md) | Очищення, підготовка та візуалізація даних; вступ до класифікації | [Python](4-Classification/1-Introduction/README.md) • [R](../../4-Classification/1-Introduction/solution/R/lesson_10.html) | Jen та Cassie • Eric Wanjau |
| 11 | Смачна азійська та індійська кухня 🍜 | [Класифікація](4-Classification/README.md) | Вступ до класифікаторів | [Python](4-Classification/2-Classifiers-1/README.md) • [R](../../4-Classification/2-Classifiers-1/solution/R/lesson_11.html) | Jen та Cassie • Eric Wanjau |
| 12 | Смачна азійська та індійська кухня 🍜 | [Класифікація](4-Classification/README.md) | Більше класифікаторів | [Python](4-Classification/3-Classifiers-2/README.md) • [R](../../4-Classification/3-Classifiers-2/solution/R/lesson_12.html) | Jen та Cassie • Eric Wanjau |
| 13 | Смачна азійська та індійська кухня 🍜 | [Класифікація](4-Classification/README.md) | Створіть рекомендований веб-додаток за допомогою вашої моделі | [Python](4-Classification/4-Applied/README.md) | Jen |
| 14 | Вступ до кластеризації | [Кластеризація](5-Clustering/README.md) | Очищення, підготовка та візуалізація даних; вступ до кластеризації | [Python](5-Clustering/1-Visualize/README.md) • [R](../../5-Clustering/1-Visualize/solution/R/lesson_14.html) | Jen • Eric Wanjau |
| 15 | Дослідження музичних уподобань Нігерії 🎧 | [Кластеризація](5-Clustering/README.md) | Дослідження методу кластеризації K-Means| [Python](5-Clustering/2-K-Means/README.md) • [R](../../5-Clustering/2-K-Means/solution/R/lesson_15.html) | Jen • Eric Wanjau |
| 16 | Вступ до обробки природної мови ☕️ | [Обробка природної мови](6-NLP/README.md) | Вивчіть основи NLP, побудувавши простого бота | [Python](6-NLP/1-Introduction-to-NLP/README.md) | Stephen |
| 17 | Поширені задачі NLP ☕️ | [Обробка природної мови](6-NLP/README.md) | Поглибте свої знання NLP, розуміючи поширені задачі, потрібні для роботи з мовними структурами | [Python](6-NLP/2-Tasks/README.md) | Stephen |
| 18 | Переклад і аналіз настроїв ♥️ | [Обробка природної мови](6-NLP/README.md) | Переклад і аналіз настроїв на прикладі Джейн Остін | [Python](6-NLP/3-Translation-Sentiment/README.md) | Stephen |
| 19 | Романтичні готелі Європи ♥️ | [Обробка природної мови](6-NLP/README.md) | Аналіз настроїв на прикладі відгуків про готелі 1 | [Python](6-NLP/4-Hotel-Reviews-1/README.md) | Stephen |
| 20 | Романтичні готелі Європи ♥️ | [Обробка природної мови](6-NLP/README.md) | Аналіз настроїв на прикладі відгуків про готелі 2 | [Python](6-NLP/5-Hotel-Reviews-2/README.md) | Stephen |
| 22 | ⚡️ Світове споживання електроенергії ⚡️ - прогнозування часових рядів за ARIMA | [Часові ряди](7-TimeSeries/README.md) | Прогнозування часових рядів за ARIMA | [Python](7-TimeSeries/2-ARIMA/README.md) | Francesca |
| 23 | ⚡️ Світове споживання електроенергії ⚡️ - прогнозування часових рядів за SVR | [Часові ряди](7-TimeSeries/README.md) | Прогнозування часових рядів із використанням регресора опорних векторів | [Python](7-TimeSeries/3-SVR/README.md) | Anirban |
| 24 | Вступ до підкріплювального навчання | [Підкріплювальне навчання](8-Reinforcement/README.md) | Вступ до підкріплювального навчання з використанням алгоритму Q-Learning | [Python](8-Reinforcement/1-QLearning/README.md) | Dmitry |
| 25 | Допоможіть Пітеру уникнути вовка! 🐺 | [Підкріплювальне навчання](8-Reinforcement/README.md) | Підкріплювальне навчання за допомогою Gym | [Python](8-Reinforcement/2-Gym/README.md) | Dmitry |
| Послеслов’я | Реальні сценарії та застосування МН | [МНу реальності](9-Real-World/README.md) | Цікаві та показові реальні застосування класичного машинного навчання | [Урок](9-Real-World/1-Applications/README.md) | Команда |
| Послеслов’я | Відлагодження моделей МН за допомогою RAI dashboard | [МНу реальності](9-Real-World/README.md) | Відлагодження моделей машинного навчання за допомогою компонентів панелі управління Responsible AI | [Урок](9-Real-World/2-Debugging-ML-Models/README.md) | Ruth Yakubu |
> [знайдіть усі додаткові ресурси для цього курсу в нашій колекції Microsoft Learn](https://learn.microsoft.com/en-us/collections/qrqzamz1nn2wx3?WT.mc_id=academic-77952-bethanycheum)
## Оффлайн-доступ
Ви можете запускати цю документацію офлайн, використовуючи [Docsify](https://docsify.js.org/#/). Зробіть форк цього репозиторію, [встановіть Docsify](https://docsify.js.org/#/quickstart) на свій локальний комп’ютері в кореневій папці репозиторію введіть команду `docsify serve`. Вебсайт буде доступний на порті 3000 на вашому localhost: `localhost:3000`.
## PDF
Завантажте PDF з навчальною програмою з посиланнями [тут](https://microsoft.github.io/ML-For-Beginners/pdf/readme.pdf).
## 🎒 Інші курси
Наша команда створює інші курси! Ознайомтесь:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Агенти
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Серія по генеративному ШІ
### Серія про генеративний ШІ
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### Серія Copilot
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
Якщо ви застрягли або маєте питання щодо створення додатків зі ШІ, приєднуйтесь до спільноти інших учнів та досвідчених розробників у обговореннях MCP. Це підтримуюча спільнота, де вітаються питання і знання поширюються вільно.
Якщо ви застрягли чи маєте запитання під час вивчення машинного навчання або створення ШІ-додатків, не хвилюйтеся — допомога доступна.
Якщо ви зіткнулися з помилками, збоями або маєте пропозиції щодо поліпшень, ви також можете відкрити **Issue** в цьому репозиторії, щоб повідомити про проблему.
Для відгуків про продукт або пошуку існуючих дописів у спільноті відвідайте Форум розробників:
- Переглядайте блокноти після кожного уроку для кращого розуміння.
- Практикуйтесь у самостійному впровадженні алгоритмів.
- Практикуйте впровадження алгоритмів самостійно.
- Досліджуйте реальні набори даних, використовуючи вивчені концепції.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Відмова від відповідальності**:
Цей документ був перекладений за допомогою сервісу AI-перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматизовані переклади можуть містити помилки або неточності. Оригінальний документ на рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли через використання цього перекладу.
**Відмова від відповідальності**:
Цей документ було перекладено за допомогою сервісу AI-перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння чи неправильні тлумачення, що виникли внаслідок використання цього перекладу.