diff --git a/translations/lt/.co-op-translator.json b/translations/lt/.co-op-translator.json
index e9532a87b..7328b0149 100644
--- a/translations/lt/.co-op-translator.json
+++ b/translations/lt/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "lt"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2025-09-05T07:55:51+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T19:19:57+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "lt"
},
@@ -90,8 +90,8 @@
"language_code": "lt"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T20:27:01+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T19:19:25+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "lt"
},
@@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "lt"
},
+ "2-Regression/3-Linear/solution/notebook.ipynb": {
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T19:15:05+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "lt"
+ },
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T07:45:13+00:00",
diff --git a/translations/lt/1-Introduction/4-techniques-of-ML/README.md b/translations/lt/1-Introduction/4-techniques-of-ML/README.md
index 630789bc9..adc2d0efb 100644
--- a/translations/lt/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/lt/1-Introduction/4-techniques-of-ML/README.md
@@ -1,123 +1,125 @@
-# Mašininio mokymosi technikos
+# Mašininio mokymosi metodai
-Mašininio mokymosi modelių kūrimo, naudojimo ir palaikymo procesas bei duomenys, kuriuos jie naudoja, labai skiriasi nuo daugelio kitų kūrimo darbo eigų. Šioje pamokoje mes išsklaidysime šį procesą ir apžvelgsime pagrindines technikas, kurias turite žinoti. Jūs:
+Proceso, kuriuo kuriami, naudojami ir palaikomi mašininio mokymosi modeliai bei duomenys, yra labai skirtingas nuo daugelio kitų kūrimo darbo eigų. Šioje pamokoje mes atskleisime šio proceso esmę ir išdėstysime pagrindines technikas, kurias jums reikia žinoti. Jūs:
-- Suprasite pagrindinius procesus, kuriais grindžiamas mašininis mokymasis.
-- Išnagrinėsite pagrindines sąvokas, tokias kaip „modeliai“, „prognozės“ ir „mokymo duomenys“.
+- Suprasite mašininio mokymosi pagrindinius procesus aukštu lygiu.
+- Išnagrinėsite pagrindines sąvokas, tokias kaip 'modeliai', 'prognozės' ir 'mokymo duomenys'.
-## [Prieš paskaitą – testas](https://ff-quizzes.netlify.app/en/ml/)
+## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-[](https://youtu.be/4NGM0U2ZSHU "ML pradedantiesiems - Mašininio mokymosi technikos")
+[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
-> 🎥 Spustelėkite aukščiau esančią nuotrauką, kad peržiūrėtumėte trumpą vaizdo įrašą apie šią pamoką.
+> 🎥 Paspauskite paveikslėlį aukščiau, kad pamatytumėte trumpą šios pamokos vaizdo įrašą.
## Įvadas
-Aukštu lygiu mašininio mokymosi (ML) procesų kūrimas apima kelis žingsnius:
+Aukštu lygiu mašininio mokymosi (ML) procesų kūrimo amatas susideda iš kelių žingsnių:
-1. **Nuspręskite, kokį klausimą norite užduoti**. Dauguma ML procesų prasideda nuo klausimo, į kurį negalima atsakyti paprasta sąlygine programa ar taisyklėmis pagrįstu varikliu. Šie klausimai dažnai susiję su prognozėmis, pagrįstomis duomenų rinkiniu.
-2. **Surinkite ir paruoškite duomenis**. Norėdami atsakyti į savo klausimą, jums reikia duomenų. Duomenų kokybė ir, kartais, kiekis nulems, kaip gerai galėsite atsakyti į pradinį klausimą. Duomenų vizualizavimas yra svarbi šio etapo dalis. Šis etapas taip pat apima duomenų padalijimą į mokymo ir testavimo grupes, kad būtų galima sukurti modelį.
-3. **Pasirinkite mokymo metodą**. Atsižvelgdami į savo klausimą ir duomenų pobūdį, turite pasirinkti, kaip norite mokyti modelį, kad jis geriausiai atspindėtų jūsų duomenis ir tiksliai prognozuotų pagal juos. Ši ML proceso dalis reikalauja specifinių žinių ir dažnai nemažai eksperimentavimo.
-4. **Mokykite modelį**. Naudodami mokymo duomenis, taikysite įvairius algoritmus, kad išmokytumėte modelį atpažinti duomenų šablonus. Modelis gali naudoti vidinius svorius, kuriuos galima koreguoti, kad tam tikri duomenų aspektai būtų privilegijuoti, siekiant sukurti geresnį modelį.
-5. **Įvertinkite modelį**. Naudojate anksčiau nematytus duomenis (testavimo duomenis) iš surinkto rinkinio, kad pamatytumėte, kaip modelis veikia.
-6. **Parametrų derinimas**. Atsižvelgdami į modelio veikimą, galite pakartoti procesą naudodami skirtingus parametrus arba kintamuosius, kurie kontroliuoja algoritmų elgesį mokymo metu.
-7. **Prognozuokite**. Naudokite naujus įvesties duomenis, kad patikrintumėte modelio tikslumą.
+1. **Nustatyti klausimą**. Dauguma ML procesų prasideda uždavus klausimą, kurio negalima atsakyti paprastu sąlyginiu programu arba taisyklių varikliu. Šie klausimai dažnai susiję su prognozėmis, pagrįstomis duomenų rinkiniu.
+2. **Surinkti ir paruošti duomenis**. Norint atsakyti į klausimą, reikia duomenų. Duomenų kokybė ir kartais kiekis lemia, kaip gerai galite atsakyti į pirminį klausimą. Duomenų vizualizavimas yra svarbi šios fazės dalis. Šiame etape taip pat atliekamas duomenų padalinimas į mokymo ir testavimo grupes modelio kūrimui.
+3. **Pasirinkti mokymo metodą**. Priklausomai nuo jūsų klausimo ir duomenų pobūdžio, turite pasirinkti, kaip norite apmokyti modelį, kad geriausiai atspindėtų duomenis ir leistų tiksliai prognozuoti. Tai ML proceso dalis, kuri reikalauja specifinių žinių ir dažnai nemažai eksperimentų.
+4. **Apkrova modelį**. Naudodami mokymo duomenis, jūs įvairiais algoritmais apmokysite modelį atpažinti duomenų struktūras. Modelis gali naudoti vidinius svorius, kuriuos galima koreguoti, kad tam tikros duomenų dalys būtų svarbesnės, siekiant sukurti geresnį modelį.
+5. **Įvertinti modelį**. Naudojate dar nematytus duomenis (testavimo duomenis) iš savo surinkto rinkinio, kad pamatytumėte, kaip modelis veikia.
+6. **Parametrų suderinimas**. Remdamiesi modelio veikimu, galite procesą pakartoti su skirtingais parametrais arba kintamaisiais, kurie kontroliuoja algoritmų veikimą mokant modelį.
+7. **Prognozė**. Naudokite naujus įvesties duomenis savo modelio tikslumui išbandyti.
-## Kokį klausimą užduoti
+## Koks klausimas turi būti užduotas
-Kompiuteriai ypač gerai aptinka paslėptus duomenų šablonus. Ši savybė labai naudinga tyrėjams, turintiems klausimų apie tam tikrą sritį, į kuriuos negalima lengvai atsakyti sukuriant sąlyginių taisyklių variklį. Pavyzdžiui, aktuaro užduotyje duomenų mokslininkas galėtų sukurti rankiniu būdu sudarytas taisykles apie rūkalių ir nerūkalių mirtingumą.
+Kompiuteriai ypač gerai atranda paslėptas tendencijas duomenyse. Ši nauda ypač svarbi tyrėjams, turintiems klausimų apie tam tikrą sritį, kurių neįmanoma lengvai atsakyti sukuriant sąlyginiu pagrindu veikiantį taisyklių variklį. Pavyzdžiui, aktuaro užduotyje duomenų mokslininkas gali sukurti rankomis aprašytas taisykles apie rūkalių ir nerūkančiųjų mirtingumo skirtumus.
-Tačiau, kai į lygtį įtraukiama daug kitų kintamųjų, ML modelis gali būti efektyvesnis prognozuojant būsimus mirtingumo rodiklius, remiantis ankstesne sveikatos istorija. Džiugesnis pavyzdys galėtų būti orų prognozės balandžio mėnesiui tam tikroje vietovėje, remiantis duomenimis, įskaitant platumą, ilgumą, klimato pokyčius, artumą prie vandenyno, reaktyvinio srauto modelius ir kt.
+Tačiau įtraukus daugybę kitų kintamųjų, ML modelis gali būti efektyvesnis prognozuojant būsimus mirtingumo rodiklius, remiantis praeities sveikatos istorija. Džiugesnis pavyzdys būtų orų prognozės balandžio mėnesiui tam tikroje vietovėje, remiantis duomenimis apie platumą, ilgumą, klimato kaitą, artumą prie vandenyno, srovių modelius ir kt.
-✅ Ši [skaidrių prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) apie orų modelius siūlo istorinę perspektyvą, kaip ML naudojamas orų analizei.
+✅ Ši [skaidrių prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) apie orų modelius pateikia istorinių ML naudojimo orų analizėje perspektyvą.
-## Prieš modelio kūrimą
+## Užduotys prieš modelio kūrimą
-Prieš pradėdami kurti modelį, turite atlikti kelias užduotis. Norėdami patikrinti savo klausimą ir suformuoti hipotezę, pagrįstą modelio prognozėmis, turite identifikuoti ir sukonfigūruoti kelis elementus.
+Prieš pradėdami kurti modelį, turite atlikti keletą užduočių. Kad galėtumėte išbandyti klausimą ir suformuluoti hipotezę, pagrįstą modelio prognozėmis, turite nustatyti ir sukonfigūruoti kelis elementus.
### Duomenys
-Norėdami atsakyti į savo klausimą su tam tikru tikrumu, jums reikia pakankamo kiekio tinkamo tipo duomenų. Šiuo metu turite atlikti du dalykus:
+Kad galėtumėte užtikrintai atsakyti į savo klausimą, jums reikia tinkamo tipo ir pakankamai daug duomenų. Šiuo metu reikia atlikti dvi užduotis:
-- **Surinkti duomenis**. Atsižvelgdami į ankstesnę pamoką apie duomenų analizės sąžiningumą, rinkite duomenis atsargiai. Būkite sąmoningi apie šių duomenų šaltinius, galimus jų šališkumus ir dokumentuokite jų kilmę.
-- **Paruošti duomenis**. Duomenų paruošimo procesas apima kelis žingsnius. Jums gali tekti sujungti duomenis ir normalizuoti juos, jei jie gaunami iš įvairių šaltinių. Duomenų kokybę ir kiekį galite pagerinti įvairiais būdais, pvz., konvertuodami tekstus į skaičius (kaip darome [Klasterizavime](../../5-Clustering/1-Visualize/README.md)). Taip pat galite generuoti naujus duomenis, remdamiesi originaliais (kaip darome [Klasifikacijoje](../../4-Classification/1-Introduction/README.md)). Galite išvalyti ir redaguoti duomenis (kaip darysime prieš [Tinklalapio programėlės](../../3-Web-App/README.md) pamoką). Galiausiai, priklausomai nuo mokymo technikų, jums gali tekti juos atsitiktinai sumaišyti.
+- **Surinkti duomenis**. Atsižvelgiant į ankstesnę pamoką apie duomenų analizės sąžiningumą, duomenis rinkite atsargiai. Žinokite šių duomenų šaltinius, jų galimus šališkumus ir dokumentuokite jų kilmę.
+- **Paruošti duomenis**. Duomenų paruošimo procese yra kelios užduotys. Gali prireikti surinkti duomenis ir juos normalizuoti, jei jie gaunami iš įvairių šaltinių. Duomenų kokybę ir kiekį galite pagerinti įvairiais metodais, pavyzdžiui, konvertuodami tekstines eilutes į skaičius (kaip darome [Klasterizacijoje](../../5-Clustering/1-Visualize/README.md)). Taip pat galite generuoti naujus duomenis, remdamiesi originaliais (kaip darome [Klasifikacijoje](../../4-Classification/1-Introduction/README.md)). Galite valyti ir redaguoti duomenis (kaip darysime prieš [Internetinę programėlę](../../3-Web-App/README.md)). Galiausiai, priklausomai nuo mokymo metodų, gali prireikti duomenis atsitiktinai permaišyti ir sukrauti.
-✅ Surinkę ir apdoroję duomenis, skirkite laiko patikrinti, ar jų struktūra leis jums atsakyti į numatytą klausimą. Gali būti, kad duomenys nebus tinkami jūsų užduočiai, kaip sužinome [Klasterizavimo](../../5-Clustering/1-Visualize/README.md) pamokose!
+✅ Surinkę ir apdoroję duomenis, patikrinkite, ar jų forma leistų jums spręsti ketinamą klausimą. Duomenys gali būti netinkami užduočiai, kaip mes atrandame mūsų [Klasterizacijos](../../5-Clustering/1-Visualize/README.md) pamokose!
### Savybės ir tikslas
-[Savybė](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) yra matuojama jūsų duomenų savybė. Daugelyje duomenų rinkinių ji išreiškiama kaip stulpelio pavadinimas, pvz., „data“, „dydis“ ar „spalva“. Jūsų savybės kintamasis, paprastai žymimas kaip `X` kode, atspindi įvesties kintamąjį, kuris bus naudojamas modelio mokymui.
+[Savybė](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) yra matuojama jūsų duomenų savybė. Daugelyje duomenų rinkinių ji išreiškiama kaip stulpelio pavadinimas, pvz., 'data', 'dydis' arba 'spalva'. Jūsų savybės kintamasis, dažnai žymimas kaip `X` kode, reiškia įvesties kintamąjį, kuris bus naudojamas modelio mokymui.
-Tikslas yra tai, ką bandote prognozuoti. Tikslas, paprastai žymimas kaip `y` kode, atspindi atsakymą į klausimą, kurį bandote užduoti savo duomenims: gruodį, kokios **spalvos** moliūgai bus pigiausi? San Franciske, kuriuose rajonuose bus geriausios nekilnojamojo turto **kainos**? Kartais tikslas taip pat vadinamas etiketės atributu.
+Tikslas yra tai, ką bandote prognozuoti. Tikslas, dažnai žymimas kaip `y` kode, yra atsakymas į klausimą, kurį bandote užduoti savo duomenims: gruodį kokios **spalvos** moliūgai bus pigiausi? San Franciske, kokie rajonai turės geriausias nekilnojamojo turto **kainas**? Kartais tikslas vadinamas žymos atributu.
-### Savybių kintamojo pasirinkimas
+### Savybės kintamojo pasirinkimas
-🎓 **Savybių pasirinkimas ir savybių ištraukimas** Kaip žinoti, kurį kintamąjį pasirinkti kuriant modelį? Tikriausiai pereisite savybių pasirinkimo arba savybių ištraukimo procesą, kad pasirinktumėte tinkamus kintamuosius geriausiam modelio veikimui. Tačiau jie nėra tas pats: „Savybių ištraukimas sukuria naujas savybes iš originalių savybių funkcijų, o savybių pasirinkimas grąžina savybių pogrupį.“ ([šaltinis](https://wikipedia.org/wiki/Feature_selection))
+🎓 **Savybės atranka ir savybės išgavimas** Kaip žinote, kurį kintamąjį rinktis kuriant modelį? Tikriausiai praeisite per savybės atrankos arba savybės išgavimo procesą, norėdami pasirinkti tinkamus kintamuosius geriausiam modeliui. Tačiau jie nėra tas pats: "Savybės išgavimas sukuria naujas savybes iš originalių savybių funkcijų, o savybės atranka grąžina savybių posetį." ([šaltinis](https://wikipedia.org/wiki/Feature_selection))
### Vizualizuokite savo duomenis
-Svarbi duomenų mokslininko įrankių rinkinio dalis yra galimybė vizualizuoti duomenis naudojant kelias puikias bibliotekas, tokias kaip Seaborn ar MatPlotLib. Duomenų vizualizavimas gali leisti jums atskleisti paslėptas koreliacijas, kurias galite panaudoti. Vizualizacijos taip pat gali padėti atskleisti šališkumą ar nesubalansuotus duomenis (kaip sužinome [Klasifikacijoje](../../4-Classification/2-Classifiers-1/README.md)).
+Svarbi duomenų mokslininko įrankių dalis yra gebėjimas vizualizuoti duomenis naudojant kelias puikias bibliotekas, tokias kaip Seaborn arba MatPlotLib. Duomenų vizualizacija gali padėti atskleisti paslėptus koreliacijų ryšius, kuriuos galite pasinaudoti. Taip pat jūsų vaizdai gali padėti atskleisti šališkumą arba disbalansuotą duomenų pasiskirstymą (kaip sužinome [Klasifikacijoje](../../4-Classification/2-Classifiers-1/README.md)).
### Padalinkite savo duomenų rinkinį
-Prieš mokymą, turite padalinti savo duomenų rinkinį į dvi ar daugiau dalių, kurios yra nevienodo dydžio, bet vis dar gerai atspindi duomenis.
+Prieš mokymą reikia padalyti duomenų rinkinį į du ar daugiau nevienodo dydžio dalių, kurios vis tiek gerai atspindi duomenis.
-- **Mokymas**. Ši duomenų rinkinio dalis pritaikoma jūsų modeliui, kad jį išmokytumėte. Šis rinkinys sudaro didžiąją dalį pradinio duomenų rinkinio.
-- **Testavimas**. Testavimo duomenų rinkinys yra nepriklausoma duomenų grupė, dažnai surinkta iš pradinio duomenų rinkinio, kurią naudojate, kad patvirtintumėte sukurto modelio veikimą.
-- **Validacija**. Validacijos rinkinys yra mažesnė nepriklausoma pavyzdžių grupė, kurią naudojate modelio hiperparametrų arba architektūros derinimui, kad pagerintumėte modelį. Priklausomai nuo jūsų duomenų dydžio ir klausimo, kurį užduodate, jums gali nereikėti kurti šio trečiojo rinkinio (kaip pastebime [Laiko eilučių prognozavimo](../../7-TimeSeries/1-Introduction/README.md) pamokoje).
+- **Mokymas**. Ši dalis skirta modelio mokymui. Ji sudaro daugumą originalaus duomenų rinkinio.
+- **Testavimas**. Testavimo duomenų rinkinys yra nepriklausoma duomenų grupė, dažnai gaunama iš originalių duomenų, kurią naudojate patvirtinti sukurto modelio veikimą.
+- **Validavimas**. Validavimo rinkinys yra mažesnė nepriklausoma pavyzdžių grupė, kurią naudojate modelio hiperparametrams arba architektūrai derinti, siekiant pagerinti modelį. Priklausomai nuo duomenų dydžio ir keliamo klausimo, jums gali neprireikti kurti šio trečio rinkinio (kaip pastebima [Laiko eilių prognozavime](../../7-TimeSeries/1-Introduction/README.md)).
## Modelio kūrimas
-Naudodami mokymo duomenis, jūsų tikslas yra sukurti modelį, arba statistinį jūsų duomenų atvaizdavimą, naudojant įvairius algoritmus, kad jį **išmokytumėte**. Modelio mokymas leidžia jam analizuoti duomenis, daryti prielaidas apie aptiktus šablonus, juos patvirtinti ir priimti arba atmesti.
+Naudodami mokymo duomenis, jūsų tikslas yra sukurti modelį arba statistinį duomenų atvaizdą, naudodami įvairius algoritmus jį **apmokyti**. Mokymas leidžia modeliui įgyti duomenų ir daryti prielaidas apie aptiktas, patvirtintas arba atmestas tendencijas.
### Pasirinkite mokymo metodą
-Atsižvelgdami į savo klausimą ir duomenų pobūdį, pasirinksite mokymo metodą. Naršydami [Scikit-learn dokumentaciją](https://scikit-learn.org/stable/user_guide.html) – kurią naudojame šiame kurse – galite išnagrinėti daugybę būdų, kaip mokyti modelį. Priklausomai nuo jūsų patirties, gali tekti išbandyti kelis skirtingus metodus, kad sukurtumėte geriausią modelį. Tikėtina, kad pereisite procesą, kurio metu duomenų mokslininkai vertina modelio veikimą, pateikdami jam nematytus duomenis, tikrindami tikslumą, šališkumą ir kitus kokybę mažinančius aspektus, ir pasirinkdami tinkamiausią mokymo metodą užduočiai atlikti.
+Priklausomai nuo jūsų klausimo ir duomenų pobūdžio, pasirinksite mokymo metodą. Peržiūrėję [Scikit-learn dokumentaciją](https://scikit-learn.org/stable/user_guide.html) – kuria naudositės šiame kurse – galėsite išbandyti daug skirtingų būdų modelio mokymui. Priklausomai nuo patirties, gali tekti išbandyti keletą skirtingų būdų geriausiam modeliui sukurti. Dažnai duomenų mokslininkai vertina modelio veikimą, pateikdami jam nematytus duomenis, tikrindami tikslumą, šališkumą ir kitus kokybę mažinančius veiksnius, bei pasirenka tinkamiausią mokymo metodą.
-### Mokykite modelį
+### Apmokykite modelį
-Turėdami mokymo duomenis, esate pasiruošę „pritaikyti“ juos, kad sukurtumėte modelį. Pastebėsite, kad daugelyje ML bibliotekų rasite kodą „model.fit“ – būtent tuo metu pateikiate savo savybių kintamąjį kaip reikšmių masyvą (paprastai „X“) ir tikslinį kintamąjį (paprastai „y“).
+Turėdami mokymo duomenis, galite juos pritaikyti ir sukurti modelį. Daugelio ML bibliotekų kode rasite 'model.fit' – būtent šiuo metu siunčiate savo savybės kintamąjį kaip verčių masyvą (dažniausiai 'X') ir tikslo kintamąjį (dažniausiai 'y').
### Įvertinkite modelį
-Kai mokymo procesas bus baigtas (dideliems modeliams mokyti gali prireikti daugybės iteracijų arba „epochų“), galėsite įvertinti modelio kokybę, naudodami testavimo duomenis, kad įvertintumėte jo veikimą. Šie duomenys yra pradinio duomenų rinkinio dalis, kurią modelis anksčiau neanalizavo. Galite išspausdinti lentelę su metrikomis apie modelio kokybę.
+Kai mokymas baigtas (tai gali užtrukti daug iteracijų arba 'epochų' mokant didelį modelį), galėsite įvertinti modelio kokybę naudodami testavimo duomenis. Šie duomenys yra dalis originalių duomenų, kurių modelis anksčiau neanalizavo. Galite atspausdinti lentelę su savo modelio kokybės metrikomis.
🎓 **Modelio pritaikymas**
-Mašininio mokymosi kontekste modelio pritaikymas reiškia modelio pagrindinės funkcijos tikslumą, kai jis bando analizuoti duomenis, su kuriais nėra susipažinęs.
+Mašininio mokymosi kontekste modelio pritaikymas reiškia modelio pagrindinės funkcijos tikslumą, kai modelis bando analizuoti jam nežinomus duomenis.
-🎓 **Nepakankamas pritaikymas** ir **perteklinis pritaikymas** yra dažnos problemos, kurios mažina modelio kokybę, nes modelis arba per mažai, arba per daug prisitaiko. Tai sukelia modelio prognozes, kurios yra arba per daug susijusios, arba per mažai susijusios su mokymo duomenimis. Perteklinis modelis per gerai prognozuoja mokymo duomenis, nes jis per daug išmoko duomenų detales ir triukšmą. Nepakankamas modelis nėra tikslus, nes jis negali tiksliai analizuoti nei mokymo duomenų, nei duomenų, kurių dar „nematė“.
+🎓 **Permaitinimas** (overfitting) ir **nepasmaitinimas** (underfitting) yra dažnos problemos, kurios mažina modelio kokybę, kai modelis pritaikomas nepakankamai arba per daug. Tai sukelia, kad modelio prognozės yra per daug artimos arba pernelyg nutolusios nuo mokymo duomenų. Permaitinamas modelis per gerai prognozuoja mokymo duomenis, nes per daug gerai išmoko jų detales ir triukšmą. Nepasmaitintas modelis nėra tikslus, nes nei tiksliai analizuoja mokymo duomenis, nei duomenis, kurių dar nematė.
-
-> Infografikas sukurtas [Jen Looper](https://twitter.com/jenlooper)
+
+> Infografika: [Jen Looper](https://twitter.com/jenlooper)
-## Parametrų derinimas
+## Parametrų suderinimas
-Kai pradiniai mokymai bus baigti, stebėkite modelio kokybę ir apsvarstykite galimybę ją pagerinti koreguojant jo „hiperparametrus“. Skaitykite daugiau apie procesą [dokumentacijoje](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
+Baigus pradinį mokymą, stebėkite modelio kokybę ir apsvarstykite galimybę ją pagerinti koreguodami 'hiperparametrus'. Daugiau apie šį procesą skaitykite [dokumentacijoje](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## Prognozė
-Tai momentas, kai galite naudoti visiškai naujus duomenis, kad patikrintumėte modelio tikslumą. „Taikomojo“ ML aplinkoje, kur kuriate interneto išteklius modelio naudojimui gamyboje, šis procesas gali apimti vartotojo įvesties surinkimą (pvz., mygtuko paspaudimą), kad nustatytumėte kintamąjį ir išsiųstumėte jį modeliui įžvalgoms arba vertinimui.
+Tai momentas, kai galite naudoti visiškai naujus duomenis modelio tikslumui patikrinti. 'Taikomojo' ML scenarijuje, kai kuriate internetines priemones modelio naudojimui gamyboje, šis procesas gali apimti vartotojo įvesties surinkimą (pvz., mygtuko paspaudimą), kad nustatyti kintamąjį ir išsiųsti jį modeliui inferencijai arba įvertinimui.
-Šiose pamokose sužinosite, kaip naudoti šiuos žingsnius, kad pasiruoštumėte, sukurtumėte, išbandytumėte, įvertintumėte ir prognozuotumėte – visus duomenų mokslininko veiksmus ir dar daugiau, kai progresuosite savo kelionėje tapti „pilno ciklo“ ML inžinieriumi.
+Šiose pamokose jūs sužinosite, kaip naudoti šiuos žingsnius modelio paruošimui, kūrimui, testavimui, vertinimui ir prognozavimui – visa tai yra duomenų mokslininko gestai ir dar daugiau, kai progresuosite link 'pilno paketo' ML inžinieriaus profesijos.
---
## 🚀Iššūkis
-Nupieškite srauto diagramą, atspindinčią ML praktiko žingsnius. Kur save matote šiame procese? Kur, jūsų nuomone, susidursite su sunkumais? Kas jums atrodo lengva?
+Nupieškite srautų schemą, atspindinčią ML praktiko žingsnius. Kurioje proceso dalyje dabar save matote? Kur manote, kad susidursite su sunkumais? Kas jums atrodo paprasta?
-## [Po paskaitos – testas](https://ff-quizzes.netlify.app/en/ml/)
+## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
## Apžvalga ir savarankiškas mokymasis
-Ieškokite internete interviu su duomenų mokslininkais, kurie aptaria savo kasdienį darbą. Štai [vienas](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
+Internete ieškokite interviu su duomenų mokslininkais, kuriuose jie aptaria savo kasdienį darbą. Štai [vienas](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
-## Užduotis
+## Namų darbai
[Interviu su duomenų mokslininku](assignment.md)
---
+
**Atsakomybės apribojimas**:
-Š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 naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.
\ No newline at end of file
+Š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ų. Pirminis dokumentas jo gimtąja kalba turi būti laikomas autoritetingu šaltiniu. Dėl svarbios informacijos rekomenduojama naudotis profesionalų žmogaus vertimu. Mes neatsakome už bet kokius nesusipratimus ar klaidingas interpretacijas, kylančias naudojant šį vertimą.
+
\ No newline at end of file
diff --git a/translations/lt/2-Regression/3-Linear/README.md b/translations/lt/2-Regression/3-Linear/README.md
index 7cd8dd66b..ffd17671f 100644
--- a/translations/lt/2-Regression/3-Linear/README.md
+++ b/translations/lt/2-Regression/3-Linear/README.md
@@ -1,136 +1,137 @@
-# Sukurkite regresijos modelį naudojant Scikit-learn: keturi regresijos būdai
+# Sukurkite regresijos modelį naudodami Scikit-learn: regresija keturiais būdais
## Pradedančiojo pastaba
-Linijinė regresija naudojama tada, kai norime prognozuoti **skaitinę reikšmę** (pvz., namo kainą, temperatūrą ar pardavimus).
-Ji veikia ieškant tiesės, kuri geriausiai atspindi ryšį tarp įvesties požymių ir išvesties.
+Linijinė regresija naudojama, kai norime prognozuoti **skaitinę reikšmę** (pavyzdžiui, namo kainą, temperatūrą ar pardavimus). Ji veikia radusi tiesią liniją, kuri geriausiai atspindi ryšį tarp įvesties požymių ir išvesties.
+
+Šioje pamokoje sutelkiame dėmesį į koncepcijos supratimą prieš pradedant tyrinėti pažangesnes regresijos technikas.
+
+> Infografika autoriaus [Dasani Madipalli](https://twitter.com/dasani_decoded)
-Šioje pamokoje daugiausia dėmesio skirsime koncepcijos supratimui prieš nagrinėjant pažangesnes regresijos technikas.
-
-> Infografika iš [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Priešpaskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-> ### [Ši pamoka prieinama ir R kalba!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
-### Įvadas
+> ### [Ši pamoka prieinama ir R kalba!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+
+### Įvadas
-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.
+Iki šiol tyrinėjote, kas yra regresija, su pavyzdiniais duomenimis iš moliūgų kainų duomenų rinkinio, kurį naudosime per visą šią pamoką. Taip pat ją vizualizavote naudodami Matplotlib.
-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.
+Dabar esate pasiruošę gilintis į regresiją mašininio mokymosi kontekste. Nors vizualizacija leidžia geriau suprasti duomenis, tikroji Mašininio Mokymosi galia atsiskleidžia mokant modelius. Modeliai yra mokomi remiantis istoriniais duomenimis, automatiškai fiksuoja duomenų priklausomybes ir leidžia prognozuoti rezultatus naujiems, iki tol nematytiems duomenims.
-Š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.
+Šioje pamokoje sužinosite daugiau apie du regresijos tipus: _pagrindinę tiesinę regresiją_ ir _polilinę regresiją_ bei susipažinsite su kai kuriais matematiniais pagrindais, slypinčiais už šių technikų. Šie modeliai leis mums prognozuoti moliūgų kainas priklausomai nuo skirtingų įvesties duomenų.
-[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
+[](https://youtu.be/CRxFT8oTDMg "ML pradedantiesiems - Linijinės regresijos supratimas")
-> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie linijinę regresiją.
+> 🎥 Spustelėkite aukščiau esantį paveikslėlį trumpam linijinės regresijos apžvalgos vaizdo įrašui.
-> 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.
+> Visos šio mokymo programos metu laikome minimalias matematikos žinias ir siekiame, kad ji būtų suprantama studentams iš kitų sričių, todėl stebėkite pastabas, 🧮 užrašus, diagramas ir kitas mokymosi priemones, kurios padės suprasti medžiagą.
-### Priešžinios
+### Išankstinės sąlygos
-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.
+Turėtumėte būti susipažinę su moliūgų duomenų struktūra, kurią nagrinėjame. Šiame pamokos _notebook.ipynb_ faile duomenys yra iš anksto įkelti ir išvalyti. Faile moliūgų kaina pateikiama už skerdeną naujame duomenų rinkinyje. Įsitikinkite, kad galite vykdyti šiuos užrašų knygelių (notebook) failus Visual Studio Code aplinkoje.
-### Paruošimas
+### Pasiruošimas
-Primename, kad įkeliate šiuos duomenis, kad galėtumėte užduoti klausimus apie juos.
+Primename, kad šiuos duomenis įkelsite, kad galėtumėte užduoti klausimus.
-- Kada geriausia pirkti moliūgus?
-- 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.
+- Kada geriausias laikas pirkti moliūgus?
+- Kokią kainą galiu tikėtis už dėžę mini moliūgų?
+- Ar juos geriau pirkti pusės skerdenos krepšiuose, ar 1 1/9 skerdenos dėžėse?
+Toliau gilinsimės į šiuos duomenis.
-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.
+Praėjusioje pamokoje sukūrėte Pandas duomenų rėmelį ir užpildėte jį dalimi originalių duomenų rinkinio, standartizuodami kainas pagal skerdeną. Tačiau tai leido surinkti tik apie 400 duomenų taškų ir tik rudens mėnesiams.
-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.
+Pažiūrėkite duomenis, kuriuos iš anksto įkėlėme šios pamokos užrašų knygelėje. Duomenys yra iš anksto įkelti ir pateikiamas pradinio sklaidos grafiko vaizdas, rodantis mėnesių duomenis. Gal galime gauti šiek tiek daugiau informacijos, jei duomenis išvalysime labiau.
-## Linijinės regresijos tiesė
+## Linijinės regresijos linija
-Kaip sužinojote 1 pamokoje, linijinės regresijos tikslas yra nubrėžti tiesę, kad galėtume:
+Kaip išmokote 1 pamokoje, linijinės regresijos tikslas yra nubrėžti liniją, kuri:
-- **Rodyti kintamųjų santykius**. Parodyti santykį tarp kintamųjų
-- **Daryti prognozes**. Tiksliai prognozuoti, kur nukris naujas taškas, palyginti su ta linija.
+- **Rodo kintamųjų tarpusavio ryšį**. Rodo ryšį tarp kintamųjų
+- **Atlieka prognozes**. Tiksliai prognozuoja, kur naujas duomenų taškas bus linijos atžvilgiu
-Į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.
+Įprasta, kad tokia linija nubrėžiama naudojant **mažiausių kvadratų regresiją**. Terminas „Mažiausių kvadratų“ reiškia procesą, kai siekiama sumažinti bendrą klaidą mūsų modelyje. Kiekvienam duomenų taškui matuojame vertikalią atstumą (vadinamą liekana) tarp tikros reikšmės ir regresijos linijos.
-Šiuos atstumus pakeliame kvadratu dėl dviejų pagrindinių priežasčių:
+Šiuos atstumus kvadratuojame dėl dviejų pagrindinių priežasčių:
-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.
+1. **Dydis viršija kryptį:** Klaida -5 turi būti vertinama taip pat kaip klaida +5. Kvadratuojant visos reikšmės tampa teigiamos.
-2. **Išskirtinių reikšmių bausmė:** Kvadratu pakeldami didesnė klaida sveria labiau, priversdami tiesę artėti prie tolimų taškų.
+2. **Didesnių paklaidų penalizavimas:** Kvadratuojant didesnės klaidos turi didesnį svorį, verčiant liniją labiau artėti prie tolimų taškų.
-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ų“.
+Tuomet sudedame visas šias kvadratuotas reikšmes. Mūsų tikslas yra rasti liniją, kurioje šių reikšmių suma yra mažiausia (mažiausia įmanoma vertė) – todėl modelis vadinamas „mažiausių kvadratų“.
-> **🧮 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):
->
+> **🧮 Rodyk matematiką**
+>
+> Ši linija, vadinama _geriausiai pritaikoma 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“. Linijos nuolydis yra `b`, o `a` yra y-kirčio reikšmė, kuri nurodo `Y` reikšmę, kai `X = 0`.
->
->
->
-> Pirmiausia apskaičiuokite nuolydį `b`. Infografika iš [Jen Looper](https://twitter.com/jenlooper)
->
-> 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 dolerius, tai turi būti balandis! Infografika iš [Jen Looper](https://twitter.com/jenlooper)
->
-> Formulė, kuri apskaičiuoja liniją, turi parodyti linijos nuolydį, kuris taip pat priklauso nuo kirčio, arba kur yra `Y`, kai `X = 0`.
->
-> 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ą.
+
+> `X` yra „aiškinamasis kintamasis“. `Y` yra „priklausomas kintamasis“. Linijos nuolydis yra `b`, o `a` – y sankirta, reiškianti `Y` reikšmę, kai `X = 0`.
+>
+>
+>
+> Pirmiausia apskaičiuojame nuolydį `b`. Infografika autoriaus [Jen Looper](https://twitter.com/jenlooper)
+>
+> Kitaip tariant, ir referuodamiesi moliūgų duomenų pradiniu klausimu: „prognozuoti moliūgų kainą pagal mėnesį už skerdeną“, `X` reiškia kainą, o `Y` – pardavimo mėnesį.
+>
+>
+>
+> Apskaičiuokite Y reikšmę. Jei mokate apie 4 dolerius, tikriausiai yra balandis! Infografika autoriaus [Jen Looper](https://twitter.com/jenlooper)
+>
+> Matematika, kuri apskaičiuoja liniją, turi parodyti linijos nuolydį, kuris taip pat priklauso nuo sankirtos, t. y. kur yra `Y`, kai `X = 0`.
+>
+> Šį skaičiavimo metodą galite pamatyti 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) ir sekite, kaip skaičių reikšmės veikia liniją.
## Koreliacija
-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ą.
+Dar vienas svarbus terminas – **koreliacijos koeficientas** tarp nurodytų X ir Y kintamųjų. Naudodamiesi sklaidos grafiku, galite greitai įvertinti šį koeficientą. Taškai išdėstyti lygiagrečioje linijoje reiškia aukštą koreliaciją, o išmėtyti po visą plokštumą – žemą.
-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.
+Geras linijinės regresijos modelis yra tas, kurio koreliacijos koeficientas yra aukštas (artimas 1, o ne 0), naudojant mažiausių kvadratų regresijos metodą su regresijos linija.
-✅ 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)?
+✅ Vykdykite šios pamokos užrašų knygelę ir pažiūrėkite į „Mėnuo vs Kaina“ sklaidos grafiką. Ar šiame grafike matote didelę ar mažą koreliaciją tarp mėnesio ir moliūgų kainos? O ar pasikeistų, jei panaudotumėte smulkesnį rodiklį, pvz., *metų dieną* (skaičius dienų nuo metų pradžios)?
-Žemiau pateiktame kode laikysimės, kad duomenys yra išvalyti ir turime duomenų rėmelį `new_pumpkins`, panašų į šį:
+Toliau pateiktame kode laikysimės, kad turime išvalytus duomenis pagrindiniame duomenų rėmelyje `new_pumpkins`, panašų į šį:
-ID | Mėnuo | MetųDiena | Veislė | Miestas | Pakuotė | Žemiausia Kaina | Aukščiausia Kaina | Kaina
----|-------|-----------|---------|---------|---------|----------------|-------------------|------
-70 | 9 | 267 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 15.0 | 15.0 | 13.636364
-71 | 9 | 267 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 18.0 | 18.0 | 16.363636
-72 | 10 | 274 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 18.0 | 18.0 | 16.363636
-73 | 10 | 274 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 17.0 | 17.0 | 15.454545
-74 | 10 | 281 | PIETIPAS | BALTIMORE | 1 1/9 sklypo dėžės | 15.0 | 15.0 | 13.636364
+ID | Mėnuo | MetųDiena | Veislė | Miestas | Pakuotė | Mažesnė kaina | Didžiausia kaina | Kaina
+---|-------|-----------|---------|--------|---------|---------------|------------------|-------
+70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 15.0 | 15.0 | 13.636364
+71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 18.0 | 18.0 | 16.363636
+72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 18.0 | 18.0 | 16.363636
+73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 17.0 | 17.0 | 15.454545
+74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 skerdenos dėžutės | 15.0 | 15.0 | 13.636364
-> 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ą:
+> Duomenų išvalymo kodas pateiktas faile [`notebook.ipynb`](notebook.ipynb). Atlikome tuos pačius išvalymo veiksmus kaip ir ankstesnėje pamokoje bei apskaičiavome stulpelį `DayOfYear` pagal šią išraišką:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
+
+Dabar, kai suprantate linijinės regresijos matematiką, sukurkime regresijos modelį, kuris prognozuotų, kuri moliūgų pakuotė turės geriausias kainas. Pavyzdžiui, kas nors, kas perka moliūgus rudens moliūgų šventei, norėtų šios informacijos optimizuoti pakuočių pirkimą.
-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")
+> 🎥 Spustelėkite aukščiau esantį paveikslėlį trumpam vaizdo įrašui apie koreliaciją.
-> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie koreliaciją.
+Iš ankstesnės pamokos galbūt matėte, kad vidutinė kaina skirtingais mėnesiais atrodo taip:
-Iš ankstesnės pamokos tikriausiai matėte, kad vidutinė kaina skirtingais mėnesiais atrodo maždaug taip:
+
-
+Tai rodo, kad turėtų būti tam tikra koreliacija, ir galime pabandyti apmokyti linijinės regresijos modelį, prognozuoti ryšį tarp `Mėnuo` ir `Kaina` arba tarp `MetųDiena` ir `Kaina`. Čia pateikiamas 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šį:
+
-
-
-Pažiūrėkime, ar yra koreliacija, naudodami funkciją `corr`:
+Patikrinkime koreliaciją naudodami funkciją `corr`:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-
-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:
+
+Atrodo, kad koreliacija gana maža, -0.15 pagal `Mėnesį` ir -0.17 pagal `MetųDieną`, bet gali būti kita svarbi priklausomybė. Atrodo, kad yra skirtingų kainų grupių, atitinkančių skirtingas moliūgų veisles. Norėdami patvirtinti hipotezę, pavaizduokime kiekvieną moliūgų kategoriją skirtinga spalva. Perdami parametru `ax` į `scatter` funkciją, galime pavaizduoti visus taškus viename grafike:
```python
ax=None
@@ -139,75 +140,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
+
+
-
-
-Mūsų tyrimas rodo, kad veislė daro didesnį poveikį bendrai kainai nei tikrasis pardavimo laikas. Tai matosi ir stulpeline diagramoje:
+Mūsų tyrimas rodo, kad veislė turi didesnį poveikį kainai nei faktinė pardavimo data. Tai matyti ir juostiniame grafike:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
+
+
-
-
-Šiuo metu sutelkime dėmesį tik į vieną moliūgų veislę, 'pie type', ir pažiūrėkime, kokį poveikį datą turi kaina:
+Kol kas susikoncentruokime tik į vieną moliūgų veislę – 'pie type', ir pažiūrėkime, koks poveikis kainai turi data:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-
+
-Jei dabar apskaičiuosime koreliaciją tarp `Price` ir `DayOfYear`, naudodami funkciją `corr`, gausime apie `-0.27` - tai reiškia, kad verta mokyti prognozinį modelį.
+Jeigu dabar apskaičiuosime koreliaciją tarp `Kainos` ir `MetųDienos` naudojant funkciją `corr`, gausime apie `-0.27` – tai reiškia, kad verta apmokyti prognozuojamą modelį.
-> 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ų:
+> Prieš apmokant 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 pašalinti visas tuščias langelius:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
-
-Kita galimybė būtų užpildyti trūkstamas reikšmes vidutinėmis tos stulpelio reikšmėmis.
+
+Kita galimybė – trūkstamas reikšmes užpildyti atitinkamo stulpelio vidurkiu.
## Paprasta linijinė regresija
-[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
+[](https://youtu.be/e4c_UP2fSjg "ML pradedantiesiems - Linijinė ir polilinė regresija naudojant Scikit-learn")
-> 🎥 Spustelėkite aukščiau esantį paveikslėlį, norėdami peržiūrėti trumpą vaizdo įrašą apie linijinę ir polinominę regresiją.
+> 🎥 Spustelėkite aukščiau esantį paveikslėlį trumpam linijinės ir polilinės regresijos apžvalgos vaizdo įrašui.
-Norėdami apmokyti mūsų linijinį regresijos modelį, naudosime **Scikit-learn** biblioteką.
+Norėdami apmokyti linijinės regresijos modelį, naudosime **Scikit-learn** biblioteką.
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
-
-Pradėsime atskirdami įvesties reikšmes (požymius) ir tikėtiną išvestį (etiketę) į atskirus numpy masyvus:
+
+Pradėjome atskirdami įvesties reikšmes (ypatybes) ir numatytas išvestis (etiketes) į atskirus numpy masyvus:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
+
+> Atkreipkite dėmesį, kad turėjome atlikti `reshape` operaciją su įvesties duomenimis, kad Linear Regression paketas juos teisingai suprastų. Linijinė regresija laukia 2D masyvo, kuriame kiekviena eilutė atitinka vieną įvesties požymių vektorių. Mūsų atveju, tai yra masyvas su N×1 matmenimis, kur N – duomenų kiekis.
-> 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.
-
-Tuomet turime padalyti duomenis į mokymo ir testavimo rinkinius, kad vėliau patikrintume modelio veikimą:
+Toliau padalinsime duomenis į mokymo ir testavimo rinkinius, kad galėtume modelio kokybę patikrinti po apmokymo:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
-
-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`:
+
+Galiausiai, modelio apmokymas užtrunka tik dviem kodo eilutėmis. Apibrėžiame `LinearRegression` objektą ir pritaikome jį duomenims su `fit` metodu:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
-`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.
+`LinearRegression` objektas, atlikus `fit` pritaikymą, turi visus 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 sandūros tašką su Y ašimi naudojant `lin_reg.intercept_` - jis bus apie `21` mūsų atveju, nurodydamas kainą metų pradžioje.
-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.
+Norėdami pamatyti, kaip tikslus mūsų modelis, galime prognozuoti kainas testiniame duomenų rinkinyje ir tada išmatuoti, kiek prognozės artimos tikėtoms reikšmėms. Tai galima padaryti naudojant kvadratinės vidutinės šaknies klaidos (RMSE) metriką, kuri yra kvadratinės reikšmės vidurkio šaknis iš visų kvadratinių skirtumų tarp tikėtinų ir prognozuotų reikšmių.
```python
pred = lin_reg.predict(X_test)
@@ -222,9 +223,9 @@ Mūsų klaida atrodo apie 2 taškus, tai yra ~17%. Ne per gera. Kitas modelio ko
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 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ė.
+Jei reikšmė yra 0, tai reiškia, kad modelis neatkreipia dėmesio į įvesties duomenis ir veikia kaip *blogiausias tiesinis prognozuotojas*, kuris yra tiesiog rezultato 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.
-Taip pat galime pavaizduoti testinius duomenis kartu su regresijos linija, kad geriau matytume, kaip regresija veikia mūsų atveju:
+Taip pat galime nubraižyti testinius duomenis kartu su regresijos linija, kad geriau matytume, kaip mums sekasi regresija:
```python
plt.scatter(X_test,y_test)
@@ -235,17 +236,17 @@ plt.plot(X_test,pred)
## Polinominė regresija
-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.
+Kita linijinės regresijos rūšis yra polinominė regresija. Nors kartais tarp kintamųjų yra tiesinė priklausomybė – kuo didesnė moliūgo apimtis, tuo didesnė kaina – kartais šių priklausomybių negalima pavaizduoti kaip plokštumos ar tiesės.
-✅ Štai [dar keletas pavyzdžių](https://online.stat.psu.edu/stat501/lesson/9/9.8) duomenų, kuriuose galima naudoti polinominę regresiją.
+✅ Čia yra [dar keli pavyzdžiai](https://online.stat.psu.edu/stat501/lesson/9/9.8) duomenų, kuriems galima pritaikyti 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ą.
+Dar kartą pažvelkite į priklausomybę tarp Datos ir Kainos. Ar šis sklaidos diagrama atrodo, kad būtinai turėtų būti analizuojama tiesės būdu? Negali kainos svyruoti? Tokiu atveju galite išbandyti polinominę regresiją.
-✅ Polinomai yra matematiniai reiškiniai, galintys susidaryti iš vieno ar daugiau kintamųjų ir koeficientų.
+✅ Polinomai yra matematiniai reiškiniai, kurie gali susidėti iš vieno ar kelių kintamųjų ir koeficientų
-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.
+Polinominė regresija sukuria kreivę liniją, kad geriau pritaikytųsi prie netiesinių duomenų. Mūsų atveju, jei įvedame kvadratinį `DayOfYear` kintamąjį į įvesties duomenis, turėtume galėti pritaikyti duomenis paraboliniam kreiviui, kuris turės minimumą tam tikru punktu metų viduje.
-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ą:
+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 **estimatorių** grandinė. Mūsų atveju sukursime pipeline, kuris pirmiausia prideda polinominius požymius prie modelio, o tada treniruoja regresiją:
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -256,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
-Naudojant `PolynomialFeatures(2)` reiškia, kad naudosime visus antrinės laipsnio polinomus iš įvesties duomenų. Mūsų atveju tai reikš tik `DayOfYear`2, tačiau turint du įvesties kintamuosius, pvz., X ir Y, bus pridėta X2, XY ir Y2. Taip pat galime naudoti aukštesnių laipsnių polinomus, jei norime.
+Naudojant `PolynomialFeatures(2)` reiškia, kad įtrauksime visus antrinės eilės polinomius iš įvesties duomenų. Mūsų atveju tai reikš tik `DayOfYear`2, bet turint du kintamuosius X ir Y, tai pridės X2, XY ir Y2. Taip pat galime naudoti aukštesnės eilės polinomus, jei norime.
+
+Pipeline galima naudoti tokiu pačiu būdu kaip originalų `LinearRegression` objektą, t.y. galime `fit` pritaikyti pipeline ir tada naudoti `predict`, kad gautume prognozes:
+
+```python
+pred = pipeline.predict(X_test)
+
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
+
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+Kad nubraižytume sklandžią aproksimacijos kreivę, naudojame `np.linspace` sukurti vienodai paskirstytą įvesties reikšmių intervalą, o ne piešti tiesiogiai neorganizuotus testinius duomenis (kas būtų zigzaginė linija):
+
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
+
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
-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ę:
+Čia grafikas, rodantis testinius duomenis ir aproksimacijos kreivę:
-Naudodami polinominę regresiją galime gauti šiek tiek mažesnę MSE ir didesnį determinacijos koeficientą, bet ne žymiai. Turime atsižvelgti į kitas savybes!
+Naudodami polinominę regresiją galime gauti šiek tiek mažesnį RMSE ir didesnį determinacijos koeficientą, bet ne ženkliai. Turime atsižvelgti į kitas ypatybes!
-> Matote, kad mažiausios moliūgų kainos fiksuojamos kažkur apie Heloviną. Kaip tai galima paaiškinti?
+> Galite pastebėti, kad minimalios moliūgų kainos stebimos maždaug Helovino metu. Kaip tai paaiškintumėte?
-🎃 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ę!
+🎃 Sveikiname, ką tik sukūrėte modelį, kuris gali padėti prognozuoti moliūgų pyrago kainą. Tikriausiai tą patį procesą galite pakartoti visoms moliūgų rūšims, tačiau tai būtų varginanti užduotis. Dabar išmokime, kaip į modelį įtraukti moliūgų įvairovę!
-## Kategoriniai bruožai
+## Kategoriniai požymiai
-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**.
+Idealiame pasaulyje norime galėti prognozuoti kainas skirtingoms moliūgų rūšims naudojant tą patį modelį. Tačiau `Variety` stulpelis skiriasi nuo tokių stulpelių kaip `Month`, nes jis turi ne skaitines reikšmes. Tokie stulpeliai vadinami **kategoriniais**.
-[](https://youtu.be/DYGliioIAE0 "ML pradedantiesiems – kategorinių bruožų prognozės su tiesine regresija")
+[](https://youtu.be/DYGliioIAE0 "ML pradedantiesiems - Kategorinių požymių prognozės su linijine regresija")
-> 🎥 Paspauskite aukščiau esantį paveikslėlį, kad peržiūrėtumėte trumpą vaizdo įrašą apie kategorinius bruožus.
+> 🎥 Spustelėkite paveikslėlį aukščiau, kad peržiūrėtumėte trumpą vaizdo pristatymą apie kategorinių požymių naudojimą.
-Čia matote, kaip vidutinė kaina priklauso nuo veislės:
+Čia matote, kaip vidutinė kaina priklauso nuo rūšies:
-Kad atsižvelgtume į veislę, pirmiausia turime ją paversti į skaitmeninę formą arba **užkoduoti**. Yra keli būdai, kaip tai padaryti:
+Norėdami atsižvelgti į rūšį, pirmiausia turime ją paversti skaitine forma, arba **užkoduoti**. Yra keli būdai tai padaryti:
-* 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ę.
+* Paprastas **skaitinis kodavimas** sudarys lentelę su skirtingomis rūšimis, o tada pakeis rūšies pavadinimą indeksu šioje lentelėje. Tai nėra geriausia idėja linijinei regresijai, nes ji naudoja faktinę indekso skaitinę reikšmę ir prideda ją prie rezultato, dauginama pagal koeficientą. Mūsų atveju priklausomybė tarp indekso numerio ir kainos aiškiai nėra tiesinė, net jei užtikrinsime, kad indeksai būtų tam tikra tvarka.
+* **Vieneto kodavimas (one-hot encoding)** pakeis `Variety` stulpelį keturiais atskirais stulpeliais, po vieną kiekvienai rūšiai. Kiekviename stulpelyje bus `1`, jeigu atitinkamas įrašas priklauso tai rūšiai, ir `0` kitu atveju. Tai reiškia, kad linijinėje regresijoje bus keturi koeficientai, po vieną kiekvienai moliūgų rūšiai, atsakingi už "pradinę kainą" (arba tiksliau "papildomą kainą") tai konkrečiai rūšiai.
-Žemiau esantis kodas rodo, kaip galima vieno karšto kodavimo būdu užkoduoti veislę:
+Žemiau pateiktas kodas, kaip galima vieneto kodavimu užkoduoti rūšį:
```python
pd.get_dummies(new_pumpkins['Variety'])
@@ -302,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
-Kad treniruotume tiesinę regresiją su vieno karšto kodavimu kaip įvestimi, tereikia tinkamai inicializuoti `X` ir `y` duomenis:
+Norėdami apmokyti linijinę regresiją naudodami vieneto koduotą rūšį kaip įvestį, tiesiog tinkamai nustatome `X` ir `y` duomenis:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
-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`:
+Likusi dalis kodo tokia pati, kaip naudojome aukščiau treniruojant linijinę regresiją. Jei išbandysite, pamatysite, kad vidutinė kvadratinė klaida beveik tokia pati, bet gauname daug aukštesnį determinacijos koeficientą (~77%). Norėdami gauti dar tikslesnes prognozes, galime įtraukti daugiau kategorinių požymių, taip pat skaitinių požymių, tokių kaip `Month` ar `DayOfYear`. Norėdami sudaryti vieną didelį požymių masyvą, galime naudoti `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@@ -319,14 +342,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
-Čia taip pat atsižvelgiama į `City` ir `Package` tipus, kas suteikia MSE 2.84 (10%) ir determinaciją 0.94!
+Čia taip pat atsižvelgiame į `City` ir `Package` tipus, kas duoda RMSE 2.84 (10.5%) ir determinaciją 0.94!
-## Viso sujungimas
+## Viskas kartu
-Kad sukurtume geriausią modelį, galime naudoti sujungtus (vieno karšto kodavimo kategorinius + skaitmeninius) duomenis kartu su polinomine regresija. Štai visas kodas jūsų patogumui:
+Kad sukurtume geriausią modelį, galime naudoti sujungtus (vieneto koduotus kategorinius + skaitinius) duomenis aukščiau esančiame pavyzdyje kartu su polinomine regresija. Štai patogiam naudojimui pilnas kodas:
```python
-# nustatyti mokymo duomenis
+# paruošti mokymo duomenis
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
@@ -336,51 +359,51 @@ y = new_pumpkins['Price']
# 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)
-# nustatyti ir apmokyti srautą
+# sukonfigūruoti ir apmokyti vamzdelį
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# prognozuoti rezultatus testavimo duomenims
pred = pipeline.predict(X_test)
-# apskaičiuoti vidutinę kvadratinę paklaidą ir determinacijos koeficientą
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# apskaičiuoti RMSE ir determinacijos koeficientą
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
-Tai turėtų suteikti geriausią determinacijos koeficientą, beveik 97%, ir MSE=2.23 (~8% prognozės klaida).
+Tai turėtų duoti geriausią determinacijos koeficientą beveik 97% ir RMSE=2.23 (~8% prognozės klaida).
-| Modelis | MSE | Determinacija |
-|---------|-----|--------------|
-| `DayOfYear` tiesinė | 2.77 (17.2%) | 0.07 |
+| Modelis | RMSE | Determinacija |
+|---------|------|--------------|
+| `DayOfYear` linijinė | 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 |
+| `Variety` linijinė | 5.24 (19.7%) | 0.77 |
+| Visi požymiai linijinis | 2.84 (10.5%) | 0.94 |
+| Visi požymiai polinominis | 2.23 (8.25%) | 0.97 |
-🏆 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.
+🏆 Puikiai! Šioje pamokoje sukūrėte keturis regresijos modelius ir pagerinote modelio kokybę iki 97%. Paskutiniame regresijos skyriuje sužinosite apie logistinės regresijos taikymą kategorijų nustatymui.
---
## 🚀Iššūkis
-Išbandykite kelis skirtingus kintamuosius šiame užrašų knygelėje, kad pamatytumėte, kaip koreliacija atitinka modelio tikslumą.
+Išbandykite kelis skirtingus kintamuosius šiame užrašų knygoje, kad sužinotumėte, kaip koreliacija atitinka modelio tikslumą.
-## [Paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
+## [Po paskaitos testas](https://ff-quizzes.netlify.app/en/ml/)
-## Peržiūra ir savarankiškas mokymasis
+## Apžvalga ir savarankiškas mokymasis
-Š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)
+Šioje pamokoje išmokome apie linijinę regresiją. Yra ir kitų svarbių regresijos rūšių. Perskaitykite apie žingsninę, Ridge, Lasso ir Elasticnet metodikas. Geras kursas gilintis yra [Stanford statistinio mokymosi kursas](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
-## Užduotis
+## Namų darbas
-[Sudaryti modelį](assignment.md)
+[Statykite modelį](assignment.md)
---
-**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, 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ą.
+**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 automatiniai vertimai gali turėti klaidų arba netikslumų. Originalus dokumentas gimtąja kalba turi būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neatsakome už jokią painiavą ar neteisingą interpretaciją, kylančią dėl šio vertimo naudojimo.
\ No newline at end of file
diff --git a/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb b/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb
index b3831245b..164b19ba5 100644
--- a/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/lt/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Linijinė ir polinominė regresija moliūgų kainodarai - Pamoka 3\n",
+ "## Linijinė ir polininė regresija moliūgų kainodarai – 3 pamoka\n",
"\n",
- "Įkelkite reikalingas bibliotekas ir duomenų rinkinį. Konvertuokite duomenis į duomenų rėmelį, kuriame yra duomenų dalis:\n",
+ "Įkelkite reikalingas bibliotekas ir duomenų rinkinį. Konvertuokite duomenis į duomenų rėmelį, kuriame būtų duomenų pogrupis:\n",
"\n",
- "- Pasirinkite tik moliūgus, kurių kaina nurodyta už statinę\n",
+ "- Gaukite tik moliūgus, kurių kainos nurodytos pagal bȗšelį\n",
"- Konvertuokite datą į mėnesį\n",
- "- Apskaičiuokite kainą kaip vidurkį tarp aukštos ir žemos kainos\n",
- "- Konvertuokite kainą, kad ji atspindėtų kainodarą pagal statinės kiekį\n"
+ "- Apskaičiuokite kainą kaip aukštos ir žemos kainos vidurkį\n",
+ "- Konvertuokite kainą, kad ji atspindėtų kainodarą pagal bȗšelio kiekį\n"
]
},
{
@@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Sklaidos diagrama primena, kad turime tik mėnesių duomenis nuo rugpjūčio iki gruodžio. Tikriausiai mums reikia daugiau duomenų, kad galėtume daryti išvadas linijiniu būdu.\n"
+ "Sklaidos diagrama primena, kad turime mėnesio duomenis tik nuo rugpjūčio iki gruodžio. Tikriausiai mums reikia daugiau duomenų, kad galėtume daryti išvadas liniškai.\n"
]
},
{
@@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Pažiūrėkime, ar yra koreliacija:\n"
+ ]
},
{
"cell_type": "code",
@@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Atrodo, kad koreliacija yra gana maža, tačiau yra kažkoks kitas svarbesnis ryšys - nes aukščiau pateiktame grafike kainų taškai atrodo turintys kelis skirtingus klasterius. Sukurkime grafiką, kuris parodys skirtingas moliūgų veisles:\n"
+ "Atrodo, kad koreliacija yra gana maža, tačiau yra kita svarbesnė priklausomybė – nes kainų taškai aukščiau esančiame grafike panašu, kad sudaro kelias skirtingas grupes. Padarykime grafiką, kuris parodys skirtingas moliūgų veisles:\n"
]
},
{
@@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Kol kas susitelkime tik ties viena rūšimi – **pyrago tipas**.\n"
+ ]
},
{
"cell_type": "code",
@@ -662,7 +666,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Linijos nuolydis gali būti nustatytas iš linijinės regresijos koeficientų:\n"
+ "Linijos nuolydį galima nustatyti iš liniškos regresijos koeficientų:\n"
]
},
{
@@ -688,7 +692,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Galime naudoti apmokytą modelį kainai prognozuoti:\n"
+ ]
},
{
"cell_type": "code",
@@ -716,11 +722,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Polinominė regresija\n",
+ "### Polininė regresija\n",
"\n",
- "Kartais ryšys tarp požymių ir rezultatų yra iš prigimties nelinijinis. Pavyzdžiui, moliūgų kainos gali būti aukštos žiemą (mėnesiai=1,2), tada sumažėti vasarą (mėnesiai=5-7) ir vėl pakilti. Linijinė regresija negali tiksliai nustatyti šio ryšio.\n",
+ "Kartais ryšys tarp požymių ir rezultatų yra iš esmės nelinearus. Pavyzdžiui, moliūgų kainos žiemą gali būti aukštos (mėnesiai=1,2), tada nukristi vasarą (mėnesiai=5-7) ir vėl pakilti. Linijinė regresija negali tiksliai nustatyti šio ryšio.\n",
"\n",
- "Tokiu atveju galime apsvarstyti galimybę pridėti papildomų požymių. Paprastas būdas yra naudoti įvesties požymių polinomus, kas lemtų **polinominę regresiją**. Naudojant Scikit Learn, mes galime automatiškai iš anksto apskaičiuoti polinominius požymius naudodami dujotiekius:\n"
+ "Tokiu atveju galime apsvarstyti galimybę pridėti papildomų požymių. Paprastas būdas yra naudoti polinomiškas funkcijas iš įvesties požymių, kas leistų gauti **polininę regresiją**. Scikit Learn galima automatiškai iš anksto apskaičiuoti polinomines savybes naudojant vamzdynus: \n"
]
},
{
@@ -775,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Veislių kodavimas\n",
+ "### Rūšių kodavimo įvairovė\n",
"\n",
- "Idealiame pasaulyje norėtume prognozuoti skirtingų moliūgų veislių kainas naudodami tą patį modelį. Kad atsižvelgtume į veislę, pirmiausia turime ją paversti skaitine forma, arba **užkoduoti**. Tai galima padaryti keliais būdais:\n",
+ "Idealiame pasaulyje norėtume galėti prognozuoti skirtingų moliūgų rūšių kainas naudodami tą patį modelį. Kad atsižvelgtume į rūšį, pirmiausia turime ją paversti skaitine forma arba **koduoti**. Yra keli būdai tai padaryti:\n",
"\n",
- "* Paprastas skaitinis kodavimas, kuris sudarys skirtingų veislių lentelę, o tada pakeis veislės pavadinimą indeksu iš tos lentelės. Tai nėra geriausia idėja tiesinei regresijai, nes tiesinė regresija atsižvelgia į indekso skaitinę vertę, o skaitinė vertė greičiausiai nesusijusi su kaina.\n",
- "* Vieno ženklo kodavimas (angl. one-hot encoding), kuris pakeis `Variety` stulpelį 4 skirtingais stulpeliais, po vieną kiekvienai veislei, kuriuose bus 1, jei atitinkama eilutė priklauso tam tikrai veislei, ir 0 kitu atveju.\n",
+ "* Paprastas skaitmeninis kodavimas, kuris sukurs skirtingų rūšių lentelę ir tada pakeis rūšies pavadinimą tos lentelės indeksu. Tai nėra geriausia idėja tiesinei regresijai, nes tiesinė regresija atsižvelgia į indekso skaitinę reikšmę, o skaitinė reikšmė greičiausiai nesusijusi skaitmeniškai su kaina.\n",
+ "* Vienos vietos kodavimas (one-hot encoding), kuris pakeis stulpelį `Variety` keturiais skirtingais stulpeliais, po vieną kiekvienai rūšiai, kuriuose bus 1, jei atitinkama eilutė priklauso tam tikrai rūšiai, ir 0 kitu atveju.\n",
"\n",
- "Žemiau pateiktas kodas parodo, kaip galime užkoduoti veislę vieno ženklo kodavimu:\n"
+ "Toliau pateiktame kode parodyta, kaip galime vienos vietos kodavimu užkoduoti rūšį:\n"
]
},
{
@@ -940,7 +949,7 @@
"source": [
"### Linijinė regresija pagal veislę\n",
"\n",
- "Dabar naudosime tą patį kodą kaip aukščiau, tačiau vietoj `DayOfYear` naudosime mūsų vieno karšto kodavimo veislę kaip įvestį:\n"
+ "Dabar naudosime tą patį aukščiau pateiktą kodą, tačiau vietoje `DayOfYear` kaip įvestį naudosime vieno karšto kodavimo veislę:\n"
]
},
{
@@ -1019,9 +1028,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Polinominė regresija\n",
+ "### Polininė regresija\n",
"\n",
- "Polinominė regresija taip pat gali būti naudojama su kategoriniais požymiais, kurie yra užkoduoti vieno karšto kodavimo būdu. Kodas, skirtas mokyti polinominę regresiją, iš esmės būtų toks pat, kaip matėme aukščiau.\n"
+ "Polininė regresija taip pat gali būti naudojama su kategoriniais požymiais, kurie yra užkoduoti vienu karštuoju kodu (one-hot-encoded). Kodo dalis polininės regresijos mokymui iš esmės būtų tokia pati, kaip matyta aukščiau.\n"
]
},
{
@@ -1068,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Atsakomybės apribojimas**: \nŠ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 naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar klaidingus interpretavimus, atsiradusius dėl šio vertimo naudojimo.\n"
+ "---\n\n\n**Atsakomybės apribojimas**: \nŠis dokumentas buvo išverstas naudojant AI vertimo paslaugą [Co-op Translator](https://github.com/Azure/co-op-translator). Nors siekiame tikslumo, prašome būti atidžiais, nes automatizuotuose vertimuose gali būti klaidų ar netikslumų. Originalus dokumentas gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojamas profesionalus žmogiškas vertimas. Mes nesame atsakingi už bet kokias nesusipratimus ar klaidingas interpretacijas, kylančias dėl šio vertimo naudojimo.\n\n"
]
}
],
@@ -1098,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2025-09-03T19:17:08+00:00",
- "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
- "language_code": "lt"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/my/.co-op-translator.json b/translations/my/.co-op-translator.json
index 65af55bf4..38adc6113 100644
--- a/translations/my/.co-op-translator.json
+++ b/translations/my/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "my"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2025-09-05T12:45:25+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T19:17:10+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "my"
},
@@ -90,8 +90,8 @@
"language_code": "my"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T20:16:35+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T19:16:22+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "my"
},
@@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "my"
},
+ "2-Regression/3-Linear/solution/notebook.ipynb": {
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T19:14:06+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "my"
+ },
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T11:37:33+00:00",
diff --git a/translations/my/1-Introduction/4-techniques-of-ML/README.md b/translations/my/1-Introduction/4-techniques-of-ML/README.md
index 60821699a..1a9ee48f8 100644
--- a/translations/my/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/my/1-Introduction/4-techniques-of-ML/README.md
@@ -1,119 +1,125 @@
-# စက်ရုပ်သင်ယူမှုနည်းလမ်းများ
+# စက်သင်ယူမှုနည်းပညာများ
-စက်ရုပ်သင်ယူမှု (Machine Learning) မော်ဒယ်များကို တည်ဆောက်ခြင်း၊ အသုံးပြုခြင်းနှင့် ထိန်းသိမ်းခြင်းလုပ်ငန်းစဉ်သည် အခြားသော ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်များနှင့် အတော်လေး ကွဲပြားနေသည်။ ဒီသင်ခန်းစာမှာ အဲဒီလုပ်ငန်းစဉ်ကို ရှင်းလင်းဖော်ပြပြီး သင်သိထားရမယ့် အဓိကနည်းလမ်းများကို ဖော်ပြပေးပါမယ်။ သင်သည်:
+စက်သင်ယူမှု မော်ဒယ်များကို တည်ဆောက်၊ အသုံးပြု နှင့် ထိန်းသိမ်းခြင်းလုပ်ငန်းစဉ်သည် အခြားဖွံ့ဖြိုးရေးလုပ်ဆောင်ချက်များနှင့် ကွဲပြားခြားနားသည်။ ဤသင်ခန်းစာတွင်၊ လုပ်ငန်းစဉ်ကို ရှင်းလင်းပြသကာ သင် သိရှိရမည့် နည်းပညာအဓိကများကို ဖော်ပြမည်။ သင်သည် -
-- စက်ရုပ်သင်ယူမှုကို အထွေထွေ အဆင့်မြင့်မှာ နားလည်နိုင်ပါမယ်။
-- 'မော်ဒယ်များ', 'ခန့်မှန်းချက်များ', 'သင်ကြားမှုဒေတာ' စတဲ့ အခြေခံအယူအဆများကို လေ့လာနိုင်ပါမယ်။
+- စက်သင်ယူမှုကို မြင်သာသွားစေရန် အထက်တန်းအဆင့် လုပ်ငန်းစဉ်များကို နားလည်မည်။
+- 'မော်ဒယ်များ', 'ခန့်မှန်းချက်များ', နှင့် 'လေ့ကျင့်ရေးဒေတာ' ကဲ့သို့ အခြေခံအယူအဆများကို တွေ့ရှိလေ့လာမည်။
-## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [သင်ခန်းစာမတိုင်မီ စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/)
[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
-> 🎥 အပေါ်က ပုံကို နှိပ်ပြီး ဒီသင်ခန်းစာကို လေ့လာနိုင်တဲ့ အတိုချုံးဗီဒီယိုကို ကြည့်ပါ။
+> 🎥 ဤသင်ခန်းစာအတိုးအကျယ်ကို ကြည့်ရှုရန် အပေါ်ရှိပုံကို Click နှိပ်ပါ။
-## အကျဉ်းချုပ်
+## နိဒါန်း
-အထွေထွေ အဆင့်မြင့်မှာ စက်ရုပ်သင်ယူမှု (ML) လုပ်ငန်းစဉ်ကို ဖန်တီးခြင်းသည် အဆင့်အတန်းများစွာ ပါဝင်သည်။
+အထက်တန်းအဆင့်တွင်၊ စက်သင်ယူမှု (ML) လုပ်ငန်းစဉ်တစ်ခု ဖန်တီးခြင်းသည် အဆင့်အတန်းပေါင်းများစွာပါဝင်သည်-
-1. **မေးခွန်းကို ဆုံးဖြတ်ပါ**။ ML လုပ်ငန်းစဉ်များစွာသည် ရိုးရှင်းသော အခြေအနေ-based ပရိုဂရမ်များ သို့မဟုတ် စည်းကမ်း-based engine များဖြင့် ဖြေရှင်းလို့မရတဲ့ မေးခွန်းတစ်ခုကို မေးခြင်းဖြင့် စတင်သည်။ ဒီမေးခွန်းများသည် ဒေတာအစုအဝေးအပေါ် အခြေခံပြီး ခန့်မှန်းချက်များကို လုပ်ဆောင်ခြင်းနှင့် ဆက်စပ်နေတတ်သည်။
-2. **ဒေတာကို စုဆောင်းပြီး ပြင်ဆင်ပါ**။ မေးခွန်းကို ဖြေရှင်းနိုင်ဖို့ သင့်မှာ ဒေတာလိုအပ်ပါတယ်။ ဒေတာရဲ့ အရည်အသွေးနှင့် အချို့အခါမှာ အရေအတွက်က သင့်မေးခွန်းကို ဘယ်လောက်ကောင်းကောင်း ဖြေရှင်းနိုင်မလဲဆိုတာကို သတ်မှတ်ပေးပါမယ်။ ဒေတာကို မြင်သာအောင် ဖော်ပြခြင်းက ဒီအဆင့်မှာ အရေးကြီးပါတယ်။ ဒီအဆင့်မှာ ဒေတာကို သင်ကြားမှုအုပ်စုနဲ့ စမ်းသပ်မှုအုပ်စုအဖြစ် ခွဲခြားဖွဲ့စည်းခြင်းလည်း ပါဝင်ပါတယ်။
-3. **သင်ကြားမှုနည်းလမ်းကို ရွေးချယ်ပါ**။ မေးခွန်းနှင့် ဒေတာရဲ့ သဘာဝအပေါ် မူတည်ပြီး မော်ဒယ်ကို သင်ကြားဖို့ အကောင်းဆုံးနည်းလမ်းကို ရွေးချယ်ရပါမယ်။ ဒီအပိုင်းမှာ အထူးကျွမ်းကျင်မှုလိုအပ်ပြီး အတော်လေး စမ်းသပ်မှုများ လိုအပ်တတ်ပါတယ်။
-4. **မော်ဒယ်ကို သင်ကြားပါ**။ သင်ကြားမှုဒေတာကို အသုံးပြုပြီး မော်ဒယ်ကို ဒေတာထဲက ပုံစံများကို မှတ်မိနိုင်အောင် သင်ကြားပါမယ်။ မော်ဒယ်သည် အတွင်းပိုင်းအလေးချိန်များကို အသုံးပြုပြီး ဒေတာရဲ့ အချို့အပိုင်းများကို ပိုမိုအရေးထားနိုင်အောင် ပြင်ဆင်နိုင်ပါတယ်။
-5. **မော်ဒယ်ကို အကဲဖြတ်ပါ**။ သင်စုဆောင်းထားတဲ့ ဒေတာထဲက မော်ဒယ်မမြင်ဖူးတဲ့ ဒေတာ (စမ်းသပ်မှုဒေတာ) ကို အသုံးပြုပြီး မော်ဒယ်ရဲ့ လုပ်ဆောင်မှုကို စမ်းသပ်ပါမယ်။
-6. **Parameter tuning**။ မော်ဒယ်ရဲ့ လုပ်ဆောင်မှုအပေါ် မူတည်ပြီး သင်ကြားမှုအတွက် အသုံးပြုတဲ့ algorithm များရဲ့ အပြုအမူကို ထိန်းချုပ်တဲ့ parameter များကို ပြန်လည်ပြင်ဆင်နိုင်ပါတယ်။
-7. **ခန့်မှန်းချက်လုပ်ဆောင်ပါ**။ မော်ဒယ်ရဲ့ တိကျမှုကို စမ်းသပ်ဖို့ အခြားသော input များကို အသုံးပြုပါ။
+1. **မေးခွန်းရွေးချယ်ခြင်း**။ ML လုပ်ငန်းစဉ်များမှာ အများအားဖြင့် ရိုးရှင်းသော အခြေအနေဖော်ညွှန်းစနစ် သို့မဟုတ် စည်းမျဉ်းအား အခြေခံ၍ ဖြေရှင်း၍ မရသည့် မေးခွန်းကို မေးခြင်းဖြင့် စတင်သည်။ ဤမေးခွန်းများသည် အချက်အလက်စုစည်းမှုအပေါ် အခြေခံ၍ ခန့်မှန်းချက်များပတ်လည် ဖြစ်တတ်သည်။
+2. **ဒေတာ စုဆောင်းပြီး ပြင်ဆင်ခြင်း**။ မေးခွန်းကို ဖြေရှင်းနိုင်ရန် ဒေတာလိုအပ်သည်။ ဒေတာ၏ အရည်အသွေးနှင့်အခါခါမှာ အရေအတွက်သည် မူလမေးခွန်းကို ဘယ်တွင် မဆို ဖြေရှင်းနိုင်မှုကို သတ်မှတ်သည်။ ဒေတာကို မြင်သာပြရန် လုပ်ငန်းစဉ်သည် အရေးကြီးသည်။ ဒေတာကို လေ့ကျင့်ရေးနှင့် စမ်းသပ်ရေးအပိုင်းများသို့ ခွဲခြားခြင်းလည်း ပါဝင်သည်။
+3. **လေ့ကျင့်မှုနည်းလမ်း ရွေးချယ်ခြင်း**။ မေးခွန်းနှင့် ဒေတာ၏ အမျိုးအစားပေါ်မူတည်၍ မော်ဒယ်ကို ယုံကြည်စွာခန့်မှန်းနိုင်ရန် လေ့ကျင့်နည်းလမ်းကို ရွေးချယ်ရမည်။ ဒါဟာ ML လုပ်ငန်းစဉ်တွင် အထူးကျွမ်းကျင်မှုနှင့် စမ်းသပ်မှုများ များစွာ လိုအပ်သည်။
+4. **မော်ဒယ် လေ့ကျင့်ခြင်း**။ သင်၏လေ့ကျင့်ရေးဒေတာကို အသုံးပြုပြီး မော်ဒယ်ကို သွင်ပြင်သဏ္ဍာန်များဖြင့် လေ့ကျင့်သွားမည်။ မော်ဒယ်သည် အတွင်းရှိအလေးချိန်များကို လိုက်လျောညီညာစွာ တုံ့ပြန်စေကာ သင့်ငြိုငြောင်းမှုများကို တိုးတက်စေမည်။
+5. **မော်ဒယ် သုံးသပ်ခြင်း**။ စုဆောင်းထားသည့် စမ်းသပ်ရေးဒေတာအား အသုံးပြု၍ မော်ဒယ်၏ ဆောင်ရွက်မှုကို စစ်ဆေးမည်။
+6. **ပါရာမီတာ ပြင်ဆင်ခြင်း**။ မော်ဒယ်၏ ဆောင်ရွက်မှုအပေါ် မူတည်၍ ပါရာမီတာများကို ပြန်လည် ပြောင်းလဲ ပြင်ဆင်နိုင်သည်။
+7. **ခန့်မှန်းချက် ပြုလုပ်ခြင်း**။ သစ်သစ်သော အချက်အလက်များဖြင့် မော်ဒယ်၏ တိကျမှုကို စမ်းသပ်သုံးသပ်မည်။
-## မေးခွန်းကို ဘာလို့ မေးရမလဲ
+## မေးခွန်း မေးဘို့
-ကွန်ပျူတာများသည် ဒေတာထဲက ဖုံးကွယ်နေတဲ့ ပုံစံများကို ရှာဖွေဖော်ထုတ်နိုင်စွမ်းရှိသည်။ ဒီစွမ်းရည်သည် သတ်မှတ်ထားတဲ့ နယ်ပယ်အတွင်း မေးခွန်းများကို ဖြေရှင်းဖို့ အလွန်အသုံးဝင်ပါတယ်။
+ကွန်ပျူတာများသည် ဒေတာအတွင်း ဖုံးကွယ်ထားသော ပုံစံများကို ရှာဖွေရာတွင် ထူးချွန်သည်။ ၎င်းသည် မေးခွန်းများကို ရိုးရှင်းပြီး အခြေအနေ ဖော်ညွှန်းစနစ်များဖြင့် ဖြေရှင်း၍ မရနိုင်သည့် သုတေသနများအတွက် အထောက်အကူ ဖြစ်သည်။ ဥပမာအနေဖြင့်၊ သေစာပညာရှင်တစ်ဦးသည် ဆေးလိပ်သောက်သူနှင့် မသောက်သူတို့၏ သေဆုံးမှုနှုန်းကို မူတည်၍ စည်းမျဉ်းများကို ရေးဆွဲနိုင်သည်။
-ဥပမာအားဖြင့် သေဆုံးမှုနှုန်းကို ခန့်မှန်းဖို့ actuarial task တစ်ခုမှာ ဒေတာသိပ္ပံပညာရှင်တစ်ဦးသည် ဆေးလိပ်သောက်သူများနှင့် မသောက်သူများအကြား သေဆုံးမှုနှုန်းအပေါ် စည်းကမ်းများကို လက်ဖြင့်ဖန်တီးနိုင်ပါတယ်။
+သို့သော် အခြားအချိုးအစားများ ပေါင်းစပ်လာသောအခါ ML မော်ဒယ်သည် အတိတ်ကျန်းမာရေးမှတ်တမ်းများကို အခြေခံ၍ ရွှေ့ပြောင်းသေဆုံးမှုနှုန်းတို့ကို ပိုမိုတိကျစွာ ခန့်မှန်းနိုင်သည်။ နောက်တစ် ဥပမာကတော့ လွယ်ကူ၍ ပျော်ရွှင်စရာကောင်းသော ဧပြီလအတွက် ရာသီဥတုခန့်မှန်းခြင်းဖြစ်ပြီး အချင်းချင်းတစ်နေရာနှင့် တကွ၊ အချင်းချင်း တည်ဝေးမှု၊ ရာသီဥတု မတည်မြဲမှု၊ သမုဒ္ဒရာနီးပါးမှု၊ ဂျက်စ്ട്രീမ်၏ ပုံသဏ္ဍာန်များ၊ အခြား အချက်အလက်များပေါင်းစပ်ထားသည်။
-ဒါပေမယ့် အခြားသော variable များစွာ ပါဝင်လာတဲ့အခါမှာတော့ ML မော်ဒယ်တစ်ခုသည် အတိတ်ကျန်းမာရေးမှတ်တမ်းများအပေါ် အခြေခံပြီး အနာဂတ်သေဆုံးမှုနှုန်းကို ခန့်မှန်းဖို့ ပိုမိုထိရောက်နိုင်ပါတယ်။
+✅ ဒီ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) သည် ရာသီဥတုမော်ဒယ်များအပေါ် ML အသုံးပြုမှု၏ သမိုင်းကြောင်း အလေ့အထများကို ပေးသည်။
-✅ ဒီ [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) သည် မိုးလေဝသကို ML အသုံးပြု၍ ခန့်မှန်းခြင်းအပေါ် သမိုင်းအမြင်ကို ဖော်ပြထားသည်။
+## မော်ဒယ် တည်ဆောက်မီ အလုပ်များ
-## မော်ဒယ်တည်ဆောက်မှုမတိုင်မီလုပ်ငန်းစဉ်များ
-
-မော်ဒယ်တစ်ခုကို တည်ဆောက်မတိုင်မီ သင်လုပ်ဆောင်ရမယ့် အလုပ်များစွာ ရှိပါတယ်။ မော်ဒယ်ရဲ့ ခန့်မှန်းချက်များအပေါ် အခြေခံပြီး သင့်မေးခွန်းကို စမ်းသပ်ဖို့ သင့်အနေနဲ့ အချို့သော အစိတ်အပိုင်းများကို သတ်မှတ်ပြီး ဖော်ပြရပါမယ်။
+မော်ဒယ် တည်ဆောက်ရန် စတင်ရန်အတွက် အချက်အလက် များစွာထားရှိသင့်သည်။ မော်ဒယ်၏ ခန့်မှန်းချက်များအပေါ် အခြေခံ Hypothesis တည်ဆောက်ရန်၊ ထိုမေးခွန်းကို စမ်းသပ်ရန်၊ အချက်အလက် အမျိုးမျိုးကို ရှာဖွေရန် လိုအပ်သည်။
### ဒေတာ
-သင့်မေးခွန်းကို တိကျမှုရှိရှိ ဖြေရှင်းနိုင်ဖို့ သင့်မှာ အရည်အသွေးကောင်းမွန်ပြီး သင့်တော်တဲ့ ဒေတာအရေအတွက်လိုအပ်ပါတယ်။ ဒီအချိန်မှာ သင်လုပ်ဆောင်ရမယ့် အရာနှစ်ခုရှိပါတယ်။
+သင်၏မေးခွန်းကို တိကျစွာ ဖြေရှင်းနိုင်ရန် အမျိုးအစားမှန်ကန်၍ ဒေတာများစွာလိုအပ်သည်။ ဤအချိန်တွင် လုပ်ဆောင်ရမည့် အချက် ၂ ချက် -
+
+- **ဒေတာ စုဆောင်းခြင်း**။ ယခင်သင်ခန်းစာတွင် ပါဝင်သော တရားမျှတမှု မူဝါဒအား ပြသထားသည့်အတိုင်း သတိထားပြီး ဒေတာကို စုဆောင်းပါ။ ဒေတာရင်းမြစ်များကို သိရှိထား၍ မူမမှန်သော ကွဲပြားချက်များကို မူတည်၍ မှတ်တမ်းတင်ပါ။
+- **ဒေတာ ပြင်ဆင်ခြင်း**။ ဒေတာ ပြင်ဆင်ခြင်း လုပ်ငန်းစဉ်တွင် အဆင့်များစွာ ပါဝင်သည်။ မတူညီသော ရင်းမြစ်များမှ ဒေတာများကို စုပေါင်း၍ ပုံမှန်တူအောင် ပြုလုပ်ရန် လိုအပ်နိုင်သည်။ စာသားများကို နံပါတ်သို့ပြောင်းခြင်းကဲ့သို့ နည်းလမ်းများဖြင့် ဒေတာ၏ အရည်အသွေးနှင့် အရေအတွက် တိုးတက်စေရန် လုပ်ဆောင်နိုင်သည် ([Clustering](../../5-Clustering/1-Visualize/README.md)တွင် မသိသောအတိုင်း)။ မူလဒေတာပေါ်မူတည်၍ ဒေတာအသစ်များ ဖန်တီးနိုင်သည် ([Classification](../../4-Classification/1-Introduction/README.md)တွင် ပြုလုပ်သည့်အတိုင်း)။ ဒေတာကို သန့်ရှင်းပြီး ပြင်ဆင်နိုင်သည် ([Web App](../../3-Web-App/README.md) သင်ခန်းစာမတိုင်မီ ပြုလုပ်သည့်အတိုင်း)။ နောက်ဆုံးတွင် သင်၏ လေ့ကျင့်မှုနည်းပညာများအပေါ်မူတည်၍ ဒေတာကို စီမံခန့်ခွဲရန် လိုအပ်နိုင်သည်။
+
+✅ ဒေတာ စုဆောင်းပြီး ဆက်ဖြည်း ပြုလုပ်မှုပြီးနောက်၊ ဒေတာ၏ ပုံသဏ္ဍာန်သည် သင့်မေးခွန်း ဖြေရှင်းနိုင်မည်ဟု စူးစမ်းစစ်ဆေးပါ။ [Clustering](../../5-Clustering/1-Visualize/README.md) သင်ခန်းစာများတွင် ခံစားရသလို ဒေတာသည် သင်၏တာဝန်တွင် မကောင်းကျိုးခံစားမည် ဖြစ်နိုင်သည်။
-- **ဒေတာကို စုဆောင်းပါ**။ ဒေတာကို စုဆောင်းတဲ့အခါမှာ အရင်းအမြစ်များ၊ bias ရှိနိုင်မှုများကို သတိထားပြီး documentation လုပ်ပါ။
-- **ဒေတာကို ပြင်ဆင်ပါ**။ ဒေတာကို collate လုပ်ခြင်း၊ normalize လုပ်ခြင်း၊ string ကို number ပြောင်းခြင်း၊ ဒေတာအသစ်ဖန်တီးခြင်း၊ ဒေတာကို ရှင်းလင်းခြင်း၊ randomize လုပ်ခြင်း စတဲ့ အဆင့်များ ပါဝင်ပါတယ်။
+### အင်္ဂါရပ်များနှင့် ဦးတည်မှုပစ္စည်း
-✅ ဒေတာကို စုဆောင်းပြီး ပြင်ဆင်ပြီးနောက် သင့်မေးခွန်းကို ဖြေရှင်းနိုင်ဖို့ ဒေတာရဲ့ ပုံစံကို စစ်ဆေးပါ။
+[အင်္ဂါရပ်](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ဆိုသည်မှာ သင်၏ ဒေတာ၏ တိုင်းတာနိုင်သော ဂုဏ်သတ္တိဖြစ်သည်။ ဒေတာစုစည်းမှုများတွင် ‘ရက်စွဲ’, ‘အရွယ်အစား’, ‘အရောင်’ စသဖြင့် တန်းစီထားသော ကော်လံခေါင်းစဉ်များဖော်ပြသည်။ သင်၏ feature variable သည် ပုံမှန်အားဖြင့် ကုဒ်အတွင်း `X` အဖြစ် ဖော်ပြသည်။ ၎င်းသည် မော်ဒယ်တစ်ခု ရေသန့်ကျသည့် input ကို ကိုယ်စားပြုသည်။
-### Features နှင့် Target
+ဦးတည်မှု ဆိုသည်မှာ သင်အား ခန့်မှန်းလိုသည့် အရာဖြစ်သည်။ target သည် ပုံမှန်အားဖြင့် ကုဒ်အတွင်း `y` အနေဖြင့် ဖော်ပြပြီး သင်၏ ဒေတာမှ မေးခွန်းဖြေဆိုချက်ကို ကိုယ်စားပြုသည်။ ဥပမာ၊ ဒီဇင်ဘာလတွင် မည်သည့်အရောင် pumpkin များမကြာခဏစျေးနှုန်းသက်သာမည်နည်း? စန်ဖရန်စစ္စကို၌ မည်သည့်မြို့နယ်များတွင် အိမ်ခြံမြေ စျေးနှုန်းများ ပို၍ အဆင်ပြေမည်နည်း? target ကို label attribute ဟုလည်း ခေါ်ကြသည်။
-[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ဆိုတာ ဒေတာရဲ့ တိုင်းတာနိုင်တဲ့ အကျဉ်းချုပ်ပါ။ Feature variable ကို `X` အဖြစ် code မှာ ကိုယ်စားပြုပါတယ်။
+### သင်၏ feature variable ရွေးချယ်ခြင်း
-Target ဆိုတာ သင့်မေးခွန်းရဲ့ အဖြေကို ကိုယ်စားပြုပါတယ်။ Target variable ကို `y` အဖြစ် code မှာ ကိုယ်စားပြုပါတယ်။
+🎓 **Feature Selection နှင့် Feature Extraction** မော်ဒယ်တစ်ခုတည်ဆောက်ရာတွင် ဘယ် variable ကို ရွေးချယ်ရမည်၊ ဘယ်နည်းလမ်းဖြင့် ရွေးချယ်ရမည်ကို ဘယ်လို ကိုသိနိုင်မလဲ။ သင်သည် feature selection သို့မဟုတ် feature extraction လုပ်ငန်းစဉ်မှတဆင့် တကယ်လက်တွေ့ အသုံးဝင်မည့် variable များကို ရွေးချယ်မည်ဖြစ်သည်။ ၎င်းများသည် အတူတူမဟုတ်ပါ - "Feature extraction သည် မူလအင်္ဂါရပ်များ၏ function များမှ အင်္ဂါရပ်အသစ်များဖန်တီးကာ၊ feature selection သည် အင်္ဂါရပ်တွေထဲမှ အနည်းငယ် ဖော်ထုတ်တင်ပြခြင်းဖြစ်သည်။" ([source](https://wikipedia.org/wiki/Feature_selection))
-### Feature variable ရွေးချယ်ခြင်း
+### သင်၏ ဒေတာကို မြင်သာပုံဖော်ခြင်း
-🎓 **Feature Selection နှင့် Feature Extraction** Feature variable ကို ရွေးချယ်တဲ့အခါ Feature Selection သို့မဟုတ် Feature Extraction လုပ်ဆောင်ရတတ်ပါတယ်။ Feature Extraction သည် အစပိုင်း feature များကို အသုံးပြု၍ feature အသစ်များ ဖန်တီးသည်။ Feature Selection သည် feature များ၏ အစိတ်အပိုင်းတစ်ခုကို ပြန်လည်ပေးသည်။
+ဒေတာသိပ္ပံပညာရှင်၏ ကိရိယာပစ္စည်းတစ်ခုမှာ Seaborn သို့မဟုတ် MatPlotLib ကဲ့သို့ ကျော်ကြားသော library များဖြင့် ဒေတာမြင်သာပုံဖော်ခြင်းဖြစ်သည်။ သင်၏ဒေတာကို မြင်သာမှုများ ပြုလုပ်ခြင်းအားဖြင့် ဖုံးကွယ်ထားသော ဆက်နွယ်မှုများမှ တစ်ဆင့် သင်၏ မော်ဒယ်တွင် အသုံးချနိုင်မည့် သတင်းအချက်အလက်များကို ရှာဖွေတွေ့ရှိနိုင်သည်။ သင့်မြင်သာမှုက ဒေတာထဲမှ ကွဲပြားချက် (bias) သို့မဟုတ် မတည့်ညီသော ဒေတာကို ဖော်ထုတ်ရန်ကူညီနိုင်သည် ([Classification](../../4-Classification/2-Classifiers-1/README.md) သင်ခန်းစာဖေါ်ပြသည့်အတိုင်း)။
-### ဒေတာကို မြင်သာအောင် ဖော်ပြပါ
+### သင့်ဒေတာစုစည်းမှု ခွဲခြားခြင်း
-Seaborn သို့မဟုတ် MatPlotLib စတဲ့ libraries များကို အသုံးပြုပြီး ဒေတာကို မြင်သာအောင် ဖော်ပြပါ။ ဒေတာကို visualized လုပ်ခြင်းက hidden correlation များကို ရှာဖွေဖော်ထုတ်နိုင်စွမ်းရှိပါတယ်။
+လေ့ကျင့်မှုမပြုမီ သင်၏ ဒေတာစုစည်းမှုကို မူလဒေတာထက် အရွယ်အစား မတူညီသောနှစ်ပိုင်း သို့မဟုတ် အပိုင်းများစွာ ခွဲခြားရပါမည်။ သို့သော် ဒေတာကို နောက်ထပ် လေ့လာမှုအတွက် မကြီးစွာ လှိုက်လှဲသောယေဘုယျ ဖြန့်ဖြူးမှု ရှိရမည်။
-### ဒေတာကို ခွဲခြားပါ
+- **လေ့ကျင့်ရေး**။ ဤဒေတာအပိုင်းသည် မော်ဒယ်ကို သင့်တော်စွာ လေ့ကျင့်ရန် အသုံးပြုသည်။ ယင်းသည် မူလဒေတာစုစည်းမှု၏ အများစုဖြစ်သည်။
+- **စမ်းသပ်ရေး**။ စမ်းသပ်ရေးဒေတာသည် မော်ဒယ်၏ ဆောင်ရွက်မှုကို အတည်ပြုရန် အသုံးပြုသော မူလဒေတာမှ သီးခြား ခွဲထုတ်ထားသော ဒေတာစုစည်းမှုဖြစ်သည်။
+- **အတည်ပြုခြင်း**။ အတည်ပြုရေးဒေတာသည် မူလဒေတာထက် ပို၍ သေးငယ်ပြီး မော်ဒယ်၏ hyperparameter များ သို့မဟုတ် စက်ပစ္စည်း၏ အဆောက်အအုံကို ပြုပြင်ရန် အသုံးပြုသော အခြားသီးခြားသည့် အလေ့အထ ထောက်ခံမှုများပင်ဖြစ်သည်။ သင်၏ ဒေတာအရွယ်အစားနှင့် မေးခွန်းအမျိုးအစားအပေါ်မူတည်၍ ဒီတတိယ အစိတ်အပိုင်းကို မလိုအပ်နိုင်ပါ ([Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md) တွင် စီစစ်ချက်များ).
-သင်ကြားမှုမတိုင်မီ ဒေတာကို training, testing, validating အဖြစ် ခွဲခြားပါ။
+## မော်ဒယ် တည်ဆောက်ခြင်း
-## မော်ဒယ်တည်ဆောက်ခြင်း
+သင်၏ လေ့ကျင့်ရေးဒေတာကို အသုံးပြုပြီး မော်ဒယ်တစ်ခု တည်ဆောက်ရန် ရည်မှန်းချက်ရှိသည်။ မော်ဒယ်တစ်ခု လေ့ကျင့်ခြင်းက နမူနာရှိသည့် ဒေတာ အတိုင်းခန့်မှန်းချက်များကို မတ်တပ်ရပ်နေနိုင်ရန် အချက်အလက် pattern များကို သတိမရဖြစ်အောင် ထည့်သွင်းစဉ်းစားခြင်းဖြစ်သည်။
-သင့် training data ကို အသုံးပြုပြီး မော်ဒယ်တစ်ခုကို statistical representation အဖြစ် တည်ဆောက်ပါ။
+### လေ့ကျင့်မှု နည်းလမ်း ရွေးချယ်ခြင်း
-### သင်ကြားမှုနည်းလမ်းကို ဆုံးဖြတ်ပါ
+မေးခွန်းနှင့် ဒေတာပေါ်မူတည်၍ မော်ဒယ်ကို လေ့ကျင့်ရန် နည်းလမ်းတစ်ခုကို ရွေးချယ်ရမည်။ [Scikit-learn ၏ စာတမ်းဆိုင်ရာ](https://scikit-learn.org/stable/user_guide.html) ကို လေ့လာခြင်းဖြင့် မော်ဒယ်တစ်ခု လေ့ကျင့်နိုင်သော နည်းလမ်း များစွာကို ရှာဖွေနိုင်သည်။ သင့်အတွေ့အကြုံအရ မော်ဒယ်အကောင်းဆုံး တည်ဆောက်နိုင်ရန် နည်းလမ်းများစွာကို စမ်းသပ်ဖို့လိုနိုင်သည်။ တကယ်တော့ ဒေတာသိပ္ပံပညာရှင်များသည် မမြင်ခင် ဒေတာများဖြင့် မော်ဒယ်၏ စွမ်းဆောင်ရည်ကို မူတည်၍ တိကျမှု၊ ကွဲပြားမှုနှင့် အရည်အသွေးဆိုးကျစေသော ပြဿနာများကို စစ်ဆေးပြီး လိုအပ်သလို လေ့ကျင့်နည်းလမ်းကို ရွေးချယ်သည်။
-Scikit-learn documentation ကို လေ့လာပြီး သင့်မော်ဒယ်အတွက် သင့်တော်တဲ့ training method ကို ရွေးချယ်ပါ။
+### မော်ဒယ် လေ့ကျင့်ခြင်း
-### မော်ဒယ်ကို သင်ကြားပါ
+သင်၏ လေ့ကျင့်ရေး ဒေတာကို အသုံးပြု၍ 'model.fit' ကို တွေ့ရမည်ဟု မြင်ရမည်။ ၎င်းရှိချိန်တွင် သင့်၏ feature variable ကို ငါး array အဖြစ် (ပုံမှန်အားဖြင့် 'X') နှင့် target variable (ပုံမှန်အားဖြင့် 'y') ကို ပေးပို့ပြီး မော်ဒယ်ကို ထိန်းသိမ်းပြီး လေ့ကျင့်သည်။
-Training data ကို အသုံးပြုပြီး 'model.fit' ကို အသုံးပြုပါ။
+### မော်ဒယ် အသုံးချမှု ထိန်းချုပ်ခြင်း
-### မော်ဒယ်ကို အကဲဖြတ်ပါ
+လေ့ကျင့်မှု လုပ်ငန်းစဉ်ပြီးဆုံးသည်နှင့် (ကောင်းစွာ ကြိုးစား၍ သုံးသပ်ရန် အကူးအပြောင်းများစွာလိုသည် - 'epochs') သင်သည် မော်ဒယ်၏အရည်အသွေးကို စမ်းသပ်ထိုင်သင့်သည်။ ၎င်းသည် မော်ဒယ်အရင်က မကြည့်ဖူး သော စမ်းသပ်ရေး ဒေတာဖြစ်သည်။ သင့်မော်ဒယ်၏ အရည်အသွေးကို ဖော်ပြသည့် မှတ်တမ်းများကို ထုတ်ပြနိုင်သည်။
-Test data ကို အသုံးပြုပြီး မော်ဒယ်ရဲ့ quality ကို စစ်ဆေးပါ။
+🎓 **မော်ဒယ်တွင် လိုက်ဖက်ခြင်း**
-🎓 **Model fitting** Model fitting သည် မော်ဒယ်ရဲ့ function တစ်ခုသည် မသိတဲ့ ဒေတာကို စမ်းသပ်တဲ့အခါမှာ ရရှိတဲ့ တိကျမှုကို ကိုယ်စားပြုသည်။
+စက်သင်ယူမှုတွင်၊ မော်ဒယ် fitting ဆိုသည်မှာ မော်ဒယ်၏ အောက်ခံလုပ်ဆောင်ချက်သည် မသိကြောင်း ဒေတာများကို ခန့်မှန်းရန် သတ်မှတ်ချက်တစ်ခု ဖြစ်သည်။
-🎓 **Underfitting** နှင့် **Overfitting** မော်ဒယ်ရဲ့ quality ကို ထိခိုက်စေတတ်သော ပြဿနာများဖြစ်သည်။
+🎓 **Underfitting** နှင့် **overfitting** သည် မော်ဒယ်အရည်အသွေးကို ကန့်သတ်သော ပြဿနာများဖြစ်ပြီး မော်ဒယ်သည် လေ့ကျင့်ထားသည့် ဒေတာနှင့် မညီကတိဘဲ ဖြစ်စေ သို့မဟုတ် မလုံလောက်စွာ ဖြစ်စေသည်။ Overfit မော်ဒယ်သည် လေ့ကျင့်ရေး ဒေတာကို များစွာ လေ့လာ၍ အသေးစိတ်နှင့် ဆူညံသံများကိုလည်း ကျွမ်းကျင်စွာ သင်ယူထားသောကြောင့် အလွန်တိကျစွာ ခန့်မှန်းသည်။ Underfit မော်ဒယ်မှာ မမှန်ကန်ယုံကြည်စွာလေ့ကျင့်မှုအဆင့်မရှိသဖြင့် အတိုးအကျယ် ခန့်မှန်းရန် မလုံလောက်ပါ။
-
+
> Infographic by [Jen Looper](https://twitter.com/jenlooper)
-## Parameter tuning
+## ပါရာမီတာ ပြင်ဆင်ခြင်း
-Hyperparameters ကို ပြင်ဆင်ခြင်းဖြင့် မော်ဒယ်ရဲ့ quality ကို တိုးတက်စေပါ။
+လေ့ကျင့်မှုစတင်ပြီးနောက် မော်ဒယ်၏ အရည်အသွေးကို သတ်မှတ်၍ 'hyperparameters' များကို ပြင်ဆင်ခြင်းဖြင့် တိုးတက်စေရန် ကြိုးပမ်းနိုင်သည်။ လုပ်ငန်းစဉ် အကြောင်း [စာတမ်း](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott) တွင် ဖတ်ရှုနိုင်သည်။
-## ခန့်မှန်းချက်လုပ်ဆောင်ခြင်း
+## ခန့်မှန်းခြင်း
-အသစ်သော input များကို အသုံးပြုပြီး မော်ဒယ်ရဲ့ တိကျမှုကို စမ်းသပ်ပါ။
+ဤအဆင့်တွင် သင့်မော်ဒယ်၏ တိကျမှုကို စမ်းသပ်ရန် ပြီးခဲ့သော ဒေတာအပြင် အသစ်တစ်ခုလုံးကို အသုံးပြုကာ ရရှိသည့် မော်ဒယ်၏ တိကျမှုကို သုံးသပ်နိုင်သည်။ 'Applied' စက်သင်ယူမှု setting မှာ မော်ဒယ်ကို ထုတ်လုပ်ရန်အသုံးပြုသော ဝက်ဘ်ပိုင်းဆိုင်ရာ အလုပ်အမှုတွေမှာ ရွေးချယ်မှုတစ်ခု (ဥပမာ button နှိပ်ခြင်း) သို့မဟုတ် ဧည့်သည် input တစ်ခု စုဆောင်း၍ မော်ဒယ်ထံ ပို့ပြီး ခန့်မှန်းချက် သို့မဟုတ် သုံးသပ်မှု ဖန်တီးသည်။
-ဒီသင်ခန်းစာများတွင် သင်သည် ML engineer အဖြစ် တိုးတက်ဖွံ့ဖြိုးရန် လိုအပ်သော အဆင့်များကို လေ့လာနိုင်ပါမယ်။
+ဤသင်ခန်းစာများတွင် သင်သည် ယင်းအဆင့်များအားလုံးကို ပြုပြင်၊ တည်ဆောက်၊ စမ်းသပ်၊ သုံးသပ်၊ နှင့် ခန့်မှန်းခြင်းတို့ကို သင်ယူမည်ဖြစ်၍ data scientist အဖြစ် တက်ကြွစွာ လေ့လာရာ၌ 'full stack' ML engineer ဖြစ်ရန် ခရီးစဉ်တစ်ခုဖြစ်ပါသည်။
---
-## 🚀Challenge
+## 🚀စိန်ခေါ်မှု
-ML practitioner တစ်ဦးရဲ့ လုပ်ငန်းစဉ်ကို ဖော်ပြတဲ့ flow chart တစ်ခု ရေးဆွဲပါ။ သင့်အနေဖြင့် လက်ရှိမှာ ဘယ်အဆင့်မှာ ရှိနေလဲ? ဘယ်အပိုင်းမှာ အခက်အခဲရှိမလဲ? ဘာတွေကို လွယ်ကူလို့ ထင်ပါသလဲ?
+ML လုပ်ငန်းသမား၏ လုပ်ငန်းစဉ်များကို ဖော်ပြသော flow chart တစ်ခု ချရေးပါ။ လုပ်ငန်းစဉ်တွင် ပစ္စည်းဖော်မြူလာ ဘယ်မှာ ရှိနေသလဲ။ ဘယ်အဆင့်တွင် အခက်အခဲ ဖြစ်မည်ဟု ခန့်မှန်းလဲ။ ဘာတွေ သင့်အတွက် လွယ်ကူသလဲ။
-## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
+## [သင်ခန်းစာပြီးနောက် စစ်ဆေးမှု](https://ff-quizzes.netlify.app/en/ml/)
-## Review & Self Study
+## ပြန်လည်သုံးသပ်ခြင်းနှင့် ကိုယ်တိုင်လေ့လာခြင်း
-Data scientist များရဲ့ နေ့စဉ်လုပ်ငန်းအကြောင်းကို ဆွေးနွေးထားတဲ့ အင်တာဗျူးများကို အွန်လိုင်းမှာ ရှာဖွေပါ။ ဒီမှာ [တစ်ခု](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ရှိပါတယ်။
+ဒေတာသိပ္ပံပညာရှင်များ၏ နေ့စဉ် အလုပ်လုပ်ငန်းအကြောင်း တွေ့ရှိနိုင်သော အင်တာဗျူးများကို အွန်လိုင်းရှာပါ။ ဤနေရာတွင် [တစ်ခု](https://www.youtube.com/watch?v=Z3IjgbbCEfs) ရှိသည်။
-## Assignment
+## အလုပ်အပ်
-[Data scientist တစ်ဦးကို အင်တာဗျူးလုပ်ပါ](assignment.md)
+[ဒေတာသိပ္ပံပညာရှင် တစ်ဦးကို အင်တာဗျူး မေးမြန်းခြင်း](assignment.md)
---
-**ဝက်ဘ်ဆိုက်မှတ်ချက်**:
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်ဆိုမှုများတွင် အမှားများ သို့မဟုတ် မတိကျမှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်သင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူပညာရှင်များမှ လက်တွေ့ဘာသာပြန်ဆိုမှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်ဆိုမှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပာယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။
\ No newline at end of file
+
+**အနှုတ်ချုပ်**
+ဤစာတမ်းသည် AI ဘာသာပြန်ဝန်ဆောင်မှုဖြစ်သည့် [Co-op Translator](https://github.com/Azure/co-op-translator) ကိုအသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားသော်လည်း စက်ရုပ်ဘာသာပြန်ချက်များတွင် အမှားများ သို့မဟုတ် မှားယွင်းမှုများ ရှိနိုင်ခြေရှိပါသည်။ မူရင်းစာတမ်းကို သက်ဆိုင်ရာဘာသာဖြင့် အခြေခံကလည်း အတည်ပြုရမည့် ရင်းမြစ်အဖြစ် သတ်မှတ်ပါရန် တိုက်တွန်းပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူအဖွဲ့ဝင်၏ ပရော်ဖက်ရှင်နယ် ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်လာနိုင်သည့် နားလည်မှားယွင်းမှုများ သို့မဟုတ် မှားမြင်မှုများအတွက် ကျွန်ုပ်တို့ အာမခံမထားပါ။
+
\ No newline at end of file
diff --git a/translations/my/2-Regression/3-Linear/README.md b/translations/my/2-Regression/3-Linear/README.md
index 5cac7dbf6..acb6bf0a3 100644
--- a/translations/my/2-Regression/3-Linear/README.md
+++ b/translations/my/2-Regression/3-Linear/README.md
@@ -1,137 +1,138 @@
-# Scikit-learn ကို သုံးပြီး regression မော်ဒယ်တစ်ခု တည်ဆောက်ခြင်း - regression နည်းလမ်းလေး မျိုး
+# Scikit-learn ဖြင့် Regression မော်ဒယ်တစ်ခုကို တည်ဆောက်ခြင်း - regression နည်းလမ်းလေးမျိုး
-## အစပြုသူအတွက် မှတ်ချက်
+## အစရောက်မှတ်ချက်
-Linear regression ကို **ကိန်းဂဏန်းတန်ဖိုး** (ဥပမာ၊ အိမ်ခြံမြေ စျးနှုန်း၊ အပူချိန်၊ သို့မဟုတ် အရောင်း) ကြိုတင်ခန့်မှန်းလိုသောအခါ အသုံးပြုသည်။
-ဒါဟာ input လက္ခဏာများနှင့် output အချက်အလက်တို့ကြား ဆက်နွယ်မှုကို အကောင်းဆုံးဖော်ပြနိုင်သော လိုင်းတစ်ခုကို ရှာဖွေခြင်းဖြင့် လည်ပတ်သည်။
+Linear regression ကို **ကိန်းဂဏန်းတန်ဖိုး** (ဥပမာ - အိမ်မျှော်မူ၊ အပူချိန် သို့မဟုတ် အရောင်း စသည်) ကို ခန့်မှန်းချင်သောအခါ အသုံးပြုသည်။
+ဒါဟာ input features နှင့် output ပေါ်ရှိ ဆက်စပ်မှုကို ကိုယ်စားပြုသော တိတိကျကျ စတိုးတန်းတစ်ခုကို ရှာဖွေခြင်းဖြင့် လည်ပတ်သည်။
-ဒီသင်ခန်းမှာတော့ မတော်တဆင့် တိုက်ရိုက်ပညာရှင်ကျမ်းများလုပ်ရန်မသိသေးမီ ဆက်စပ် regression နည်းလမ်းများကိုရှာဖွေဖို့မတိုင်မီ အကြောင်းအရာနားလည်မှုအပေါ် အာရုံစိုက်မှာဖြစ်ပါတယ်။
-
-> [Dasani Madipalli](https://twitter.com/dasani_decoded) မှ infographic
+ဒီသင်ခန်းစာမှာ ကိစ္စရပ်ကိုနားလည်ခြင်းကို ဦးတည်ပြီး regression နည်းပညာများပိုခက်ဆဲများကို ရှာဖွေဖို့မတိုင်ခင်လေ့လာမှာဖြစ်ပါတယ်။
+
+> [Dasani Madipalli](https://twitter.com/dasani_decoded)၏ infographic
-## [ချဉ်းကပ်ရေးမေးခွန်း](https://ff-quizzes.netlify.app/en/ml/)
+## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-> ### [ဒီသင်ခန်းကို R ဖြင့်လည်းရနိုင်ပါသည်!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
-### မိတ်ဆက်
+> ### [ဒီသင်ခန်းစာကို R မှာလည်း လေ့လာနိုင်ပါတယ်!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
+### နိဒါန်း
-အခုထိ pumpkin စျေးနှုန်း dataset မှ နမူနာဒေတာများအပေါ် regression အကြောင်း သိရှိဖူးပြီး Matplotlib ဖြင့် အနုညာတစနစ် ကွက်တိ တည်ဆောက်ထားတာကိုကြည့်နိုင်ခဲ့ပါပြီ။
+ယခုအချိန်အထိ သင်သည် regression ဆိုတာဘာလဲဆိုတာကို pumpkin စျေးနှုန်းဒေတာဝန်းကျင်ကနေရယူထားသော နမူနာဒေတာဖြင့် စတင်ကြည့်ရှုပြီး Matplotlib ဖြင့် တွေ့မြင်ကြပါတယ်။
-ယခုမော်ဒယ်သင်ကြားမှုမှာ ML ရဲ့ regression ဆိုတာ ဘယ်လိုလုပ်ဆောင်ကြောင်း နက်ရှိုင်းစွာ လေ့လာမှာဖြစ်ပြီး၊ visualization က ဒေတာကိုနားလည်မှုရဖို့သင့်ကိုကူညီပေးပေမယ့် Machine Learning ရဲ့ အမှန်တကယ် ပြင်းထန်တဲ့အားကို သိမ်းဆည်းထားတဲ့ နေရာက _training models_ ဖြစ်ပါတယ်။ မော်ဒယ်များကို သမိုင်းအချက်အလက်များမှာ လေ့ကျင့်ကာ ဒေတာ ဆက်စပ်မှုများကို အလိုအလျောက် ဖမ်းဆီးနိုင်ပြီး မကြိုက်တတ်နေသေးသော အသစ်သော ဒေတာအတွက် ရလဒ်များခန့်မှန်းနိုင်ပါတယ်။
+ယခုတွင် ML အတွက် regression ကို ပိုမိုနက်ရှိုင်းစွာ လေ့လာရန်အဆင်ပြေပြီ။ Visualization က data ကိုနားလည်စေရာပေးသော်လည်း Machine Learning ၏ တကယ့်အားကောင်းချက်မှာ _မော်ဒယ်များကို သင်ကြားသည်မှာဖြစ်သည်။_ မော်ဒယ်များဟာ နာမည်ကြီးအတိတ် ဒေတာများကို သင်ကြားခြင်းဖြင့် ဒေတာဆက်စပ်မှုများကို အလိုအလျောက် ဖမ်းဆီးနိုင်ပြီး မော်ဒယ်အသစ် မမြင်ဖူးသည့် ဒေတာများအတွက် ရလဒ်များ ရှာဖွေနိုင်စေသည်။
-ဒီသင်ခန်းမှာတော့ _မူလသော linear regression_ နှင့် _polynomial regression_ ဆိုတဲ့ regression အမျိုးအစား နှစ်မျိုးအကြောင်းကောင်းကောင်း နားလည်ကြမယ်၊ နည်းပညာများကို ဖက်ရှင်နည်းလမ်း တချို့နဲ့အတူ။ ဒီမော်ဒယ်တွေက pumpkin စျေးနှုန်းကို ကွဲပြားတဲ့ input အပေါ်မူတည်၍ ကြိုတင်ခန့်မှန်းပေးနိုင်ပါတယ်။
+ဒီသင်ခန်းစာမှာ _အခြေခံ linear regression_ နဲ့ _polynomial regression_ ဆိုတဲ့ regression နှစ်မျိုးကို ထပ်မံလေ့လာပြီး အဲ့ဒီနည်းပညာများအောက်မှာရှိတဲ့ သင်္ချာကိုလည်း တက်ကြွစွာ ဖော်ပြမှာ ဖြစ်ပါတယ်။ အဲဒီမော်ဒယ်တွေက pumpkin စျေးရှိတဲ့ input data အပေါ်မူတည်ပြီး စျေးနှုန်းခန့်မှန်းနိုင်စေပါမယ်။
[](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
-> 🎥 အပေါ်က ဓာတ်ပုံကို နှိပ်ပြီး linear regression အကြောင်းအကျဉ်းချုပ် ဗွီဒီယို မျှဝေကြည့်ပါ။
+> 🎥 Linear regression အကြောင်း တိုတိုကောက်ကပ်ချုပ် များကို ကြည့်ရန် ပုံကို နှိပ်ပါ။
-> ဒီသင်လမ်းညွှန်တစ်ခုလုံးမှာ နည်းနည်းသောသင်္ချာအသိပညာရှိသူ တွေအတွက်နဲ့ အခြားနယ်ပယ်မှလာသော ကျောင်းသားတွေအလွယ်တကူနားလည်စေချင်သောကြောင့် မှတ်ချက်များ၊ 🧮 သင်္ချာခေါ်ဆိုချက်များ၊ ပုံဆွဲနှင့် သင်ယူမှုကိရိယာများ ပါဝင်ပါတယ်။
+> ဒီသင်တန်းအစီအစဉ်မှာ သင်္ချာအခြေခံစာမျိုးနည်းနည်းသာ သိရှိထားပေးရန် အဓိကထားပြီး အခြားဘာသာရပ်မှ ကျောင်းသားများအတွက်လည်း လွယ်ကူစေမည့် မှတ်ချက်များ၊ 🧮 သင်္ချာဥပမာများ၊ ပုံပြင်နှင့် အခြားလေ့လာမှုကိရိယာများယူလာထားသည်။
-### အဆင်သင့်ဖြစ်မှု
+### မပြင်ဆင်မီ မျှော်မှန်းချက်
-ယခုအချိန်မှာ pumpkin ဒေတာဖွဲ့စည်းမှုနှင့် မိတ်ဆက်ထားသင့်ပါတယ်။ ဒေတာကို ဒီသင်ခန်း ရဲ့ _notebook.ipynb_ ဖိုင်ထဲမှာ ရှိပြီး ရှင်းလင်းပြီးသား ဖြစ်ပါတယ်။ ဖိုင်ထဲမှာ pumpkin စျေးနှုန်းကို bushel တစ်ခုခုအလိုက် အသစ်သော ဒေတာဇယားတစ်ခုအဖြစ် ပြထားပါသည်။ Visual Studio Code ၏ kernel များမှာ ဒီ notebook များကို ပြေးနိုင်ခြင်းကို သေချာစေရပါ။
+ယခုအထိ သင်သည် pumpkin ဒေတာ၏ ဖွဲ့စည်းပုံကို နားလည်ပြီးသား ဖြစ်ရန်လိုအပ်သည်။ ဒေတာကို ဒီသင်ခန်းစာနဲ့ ပတ်သက်သည့် _notebook.ipynb_ ဖိုင်ထဲတွင် ကြိုတင်ထည့်ထားပြီး သန့်စင်ထားပါသည်။ ဖိုင်ထဲတွင် pumpkin စျေးနှုန်းကို bushel တစ်ခုလျှင် ပြသထားပါတယ်။ Visual Studio Code တွင် kernel များကိုသုံးပြီး notebook များကို တက်နိုင်သောကြောင့် စစ်ဆေးပါ။
### ပြင်ဆင်မှု
-အသိပေးခြင်းအနေဖြင့် ဒီဒေတာကို ဖတ်ယူရခြင်းသည် ဒေတာကို ဖြေရှင်းရန် ရည်ရွယ်သည်ကို သတိပြုပါ။
+ရိုးရိုးမှတ်တမ်းအနေနဲ့ ဒေတာကို မေးမြန်းဖို့ယခု ဒေတာကိုဖွင့်ထားတယ်ဆိုတာကို မှတ်ထားပါ။
-- Pumpkin များဝယ်ရောက်ရန် အကောင်းဆုံးအချိန်က ဘယ်အချိန်လဲ?
-- မိသားစုတွေအတွက် ထုပ်ပိုးထားတဲ့ အသေးစား pumpkin တစ်အိတ် စျေးနှုန်း ဘယ်လောက်လဲ?
-- ထုတ်ပိုးမှု များကို half-bushel basket သို့မဟုတ် 1 1/9 bushel ဘောက်စ်ဖြင့် ဝယ်သင့်ပါသလား?
-ဒီဒေတာကို ဆက်လက်စူးစမ်းကြည့်ရအောင်။
+- ဘယ်အချိန် pumpkin ဝယ်ဖို့အကောင်းဆုံးလဲ?
+- miniature pumpkin case တစ်ခုအတွက် မည်သည့်စျေးဈေးမျိုးမျှော်လင့်ရမလဲ?
+- pumpkin ကို half-bushel တို့မှာ ဝယ်သင့်သလား၊ 1 1/9 bushel box နဲ့ ဝယ်သင့်သလား?
+ဒီဒေတာကို နက်ရှိုင်းစွာလေ့လာဆဲဖြစ်ပါတယ်။
-ပြီးခဲ့သည့်သင်ခန်းတွင် Pandas ဒေတာဖွဲ့စည်းမှု တစ်ခုကို ဖန်တီးပြီး မူရင်း dataset မှ အပိုင်းတစ်ပိုင်းဖြင့် ပြည့်စုံစွာ ပြင်ဆင်ပြီး စျေးနှုန်းကို bushel တစ်ခုအလိုက် စံပြန်းပြုလုပ်ခဲ့သည်။ သို့သော်၊ ဒီလိုလုပ်ခြင်းမကြောင့် datapoint ၄၀၀ ခန့် သာစုစည်းနိုင်ခဲ့ပြီး ရာသီဥတု ရာသီကာလများအတွက်သာ ဖြစ်ပါသည်။
+ယခင်သင်ခန်းစာမှာ Pandas data frame တစ်ခု ဖန်တီးပြီး မူလ dataset ၏ အစိတ်အပိုင်းတစ်ခုများဖြင့် bushel အရ စျေးနှုန်းကို အတိုင်းအတာတစ်ခုအဖြစ်ချိန်ညှိခဲ့ပြီဖြစ်ပါတယ်၊ သို့သော် အဲဒါကြောင့် data point များ ၄၀၀ ကျော်၊ အထူးသဖြင့် ဆောင်းရာသီလများအတွက်သာရယူနိုင်ခဲ့ပါတယ်။
-ဒီသင်ခန်းတွင် ပါဝင်သည့် notebook သို့ လေ့လာကြည့်ပါ။ ဒေတာကို အကြိုဖတ်ထားပြီး စတင် scatterplot တစ်ခုကို month အချက်အလက်များ ဖော်ပြထားပါတယ်။ နောက်ထပ်သန့်ရှင်းစင်ကြယ်မှုများအားဖြင့် ဒေတာ၏ သဘာဝအကြောင်းအရာ များကို အသေးစိတ် သိရှိနိုင်ဖို့ ကြိုးစားကြည့်ရအောင်။
+ဒီသင်ခန်းစာ notebook တွင် ကြိုတင်ထည့်ထားသည့် ဒေတာကို ကြည့်ရှုပါ။ ဒေတာကြိုထည့်ပြီး မူရင်း scatterplot တစ်ခုကို ပြုလုပ်ပြီး လကို ပြသထားသည်။ ဒေတာဂုဏ်သတ္တိများကို ပိုမိုနက်ရှိုင်းစေဖို့ သန့်စင်ကြည့်စမ်းခြင်းဖြင့် လေ့လာနိုင်မယ်။
-## Linear regression လိုင်း
+## linear regression စတိုးတန်းတစ်ခု
-သင်သိရှိခဲ့သည့် Lesson 1 မှာ၊ linear regression ရဲ့ ရည်ရွယ်ချက်မှာ အောက်ပါအချက်များအတွက် လိုင်းတစ်ခု အကောင်းဆုံး ဆွဲဆောင်နိုင်ခြင်း ဖြစ်သည် #
+သင်ယူခဲ့ပုံစာရင်းအရ၊ linear regression လေ့လာမှုရဲ့ ရည်ရွယ်ချက်မှာ အောက်ပါအလိုဖြစ်သည်။
-- **အပြောင်းအလဲဆက်စပ်မှုကို ဖော်ပြခြင်း**။ အပြောင်းအလဲများကြား ဆက်သွယ်မှု ဖော်ပြရန်
-- **ခန့်မှန်းချက်လုပ်ခြင်း**။ ဒေတာသစ်အချက်များ အတွင်း ဒီလိုင်းနှင့် ဆက်စပ်နေမည့်နေရာကို တိကျစွာ ခန့်မှန်းရန်
+- **အချင်းချင်းဆက်စပ်မှုများ ပြသခြင်း။** Variable များအကြား ဆက်စပ်မှုကို ပြသပါ။
+- **ခန့်မှန်းချက် ပြုလုပ်ခြင်း။** စတိုးတန်းနဲ့ ယှဉ်ကြည့် သင်ခန့်မှန်းထားသော အချက်အသစ်တစ်ခုမှ စတိုးတန်းအပေါ်မှာ မည်သည့်နေရာတွင် ရှိပါမည်ဆိုသည်ကို မှန်ကန်ပြည့်စုံသော ခန့်မှန်းချက်သုံးပါ။
-**Least-Squares Regression** ကိုသုံး၍ ဒီလိုင်းဆွဲခြင်း ပုံမှန်ဖြစ်သည်။ "Least-Squares" ဆိုသည်မှာ မော်ဒယ်အတွင်း စုစုပေါင်း အမှား(အချက်အလွဲ) များအား လျော့နည်းအောင်လုပ်ခြင်းလုပ်ငန်းစဉ်ဖြစ်သည်။ တစ်ခုချင်းစီသော ဒေတာအချက်များအတွက် ရှိနေသည့် စစ်မှန်သော အချက်နှင့် regression လိုင်းအကြား အလျားလိုင်းအကွာအဝေး (residual လို့ခေါ်သည်) ကိုတိုင်းတာသည်။
+**Least-Squares Regression** အသုံးပြု၍ ဤအမျိုးအစား စတိုးတန်းဆွဲတတ်သည်။ "Least-Squares" ဆိုသည်မှာ မော်ဒယ်အားလုံးတွင် မှားယွင်းမှုစုစုပေါင်းကို အနည်းဆုံးလုပ်ရန်ဖြစ်သည်။ Data point တစ်ခုစီအတွက်၊ အမှန်တကယ်ရှိသောနေရာနဲ့ regression စတိုးတန်းကြား လျှပ်တလွှာအကွာအဝေး (residual ဟုခေါ်သည်) ကို တိုင်းတာသည်။
-အဆိုပါကွာခြားမှုများကို squared (ချယောင်းခြင်း) ကျင့်သုံးစို့ခုနှစ်ကြောင်းမှာ -
+distance များကို square လုပ်ခြင်းသည် အဓိက နှစ်ချက်အတွက်ဖြစ်သည် -
-1. **ကြီးသေးမှုကို ဦးစားပေးရန်**။ ကွာခြားချက် -၅ ကို +၅ နှင့်တူညီစေရန်လိုသည်။ squared သောကြောင့် အဖေါ်အဖြစ်မှ အားလုံးကို အပလာတန်ဖိုးပြောင်းလဲသည်။
+1. **လျှောက်လွှာအားနည်းချက်အလိုက် မဟုတ်ဘဲ အမြန်ဖြေရှင်းရန်။** -5 ပမာဏမျှ -5 လိုအတိုင်း ဆက်ဆံလိုသည်။ Square လုပ်လျှင် positive ပမာဏပဲ ဆက်မိသည်။
+2. **လွတ်လပ်မှုများကို ပြစ်ဒဏ် ချမှတ်ခြင်း။** Square လုပ်ခြင်းသည် error ကြီးများကို ပိုမိုအလေးပေးကုန်တယ်၊ ပိုမိုဝေးလွန်းသော points များပတ်သက်ထားရန်စတိုးတန်းကို နီးစီးစေသည်။
-2. **အထူးကွာခြားချက်များကို ပိုဆိုးစေခြင်း**။ squared ခြင်းမျိုးက လွယ်ပေါ့ကွန်ယက်အမှားများအားပိုမိုထိခိုက်စေပြီး လိုင်းကို အလွဲကြီးနေသော ဒေတာအချက်များနီးစပ်ရန် မျှော်လင့်စေသည်။
+ပြီးလျှင် square များအားလုံးကို ပေါင်း၍ အနည်းဆုံးတန်ဖိုးရှိသော စတိုးတန်းကိုရှာဖွေသည်။
-ပြီးမှ အားလုံးကို စုပေါင်းသည်။ ကျွန်ုပ်တို့ရည်မှန်းတဲ့လိုင်းက ဖော်ပြထားတဲ့ စုစုပေါင်း 성ရေမှာ အနည်းဆုံးဖြစ်မည့် လိုင်းဖြစ်ရမည်။ ဒါကြောင့် "Least-Squares" လို့ ခေါ်ပါတယ်။
-
-> **🧮 သင်္ချာပြပါ**
->
-> ဒီလိုင်းကို _line of best fit_ လို့ခေါ်ပြီး [သင်္ချာဆိုင်ရာ ပုံစံဖြင့်](https://en.wikipedia.org/wiki/Simple_linear_regression) ဖော်ပြနိုင်သည် -
->
+> **🧮 သင်္ချာကိုပြပါ**
+>
+> ဤစတိုးတန်းကို _line of best fit_ ဟုပြောပြီး [တူညီသောသင်္ချာပြထားသည်](https://en.wikipedia.org/wiki/Simple_linear_regression):
+>
> ```
> Y = a + bX
> ```
->
-> `X` မှာ 'ရှင်းလင်းပြဿနာ ပြသသူ' (explanatory variable) ဖြစ်ပြီး `Y` ဟာ 'တာဝန်ခံပြဿနာ' (dependent variable) ဖြစ်သည်။ လိုင်း၏ စေ့ကွက် (slope) ကို `b` ဟုခေါ်ပြီး `a` သည် y-intercept ဖြစ်ပြီး `X=0` ဖြစ်စဉ်အတွင်း `Y` ရဲ့တန်ဖိုးကို ဆိုလိုသည်။
+>
+> `X` သည် 'explanatory variable' ဖြစ်သည်။ `Y` သည် 'dependent variable' ဖြစ်သည်။ စတိုးတန်း၏ slope ကို `b`၊ y-intercept ကို `a` ဟု ဆိုလိုသည်။ y-intercept သည် `X = 0` ဖြစ်သောအခါ `Y` ၏တန်ဖိုးဖြစ်သည်။
>
>
>
-> ပထမဆုံး slope `b` ကိုတွက်ပါ။ [Jen Looper](https://twitter.com/jenlooper) ရေး infographic
+> slope `b` ကို ဦးစီးတွက်ချက်ခြင်း။ [Jen Looper](https://twitter.com/jenlooper) မှ infographic
>
-> တခြားစကားများဖြင့် ပြောရမယ်ဆိုရင်၊ ကျွန်ုပ်တို့၏ pumpkin ဒေတာ မူလ မေးခွန်းအား "လစဉ် bushel တစ်ခုအတွက် pumpkin စျေးနှုန်းကို ခန့်မှန်းပါ" ဆိုပါက `X` သည်စျေးနှုန်းကို ကိုယ်စားပြုပြီး `Y` သည် အရောင်းလကို ကိုယ်စားပြုပါသည်။
+> နှင့် အခြားနည်းဖြင့် pumpkin data ၏ မူလမေးခွန်း စကားများမှာ - "pumpkin price ကို month အလိုက် ခန့်မှန်းရေး" ။ အဲဒီမှာ `X` သည် စျေးနှုန်းအား၊ `Y` သည် ရောင်းချနေ့ (month) ကို ကိုယ်စားပြုသည်။
>
>
>
-> Y ကို တွက်ချက်ပါ။ $4 လောက်ပေးဝယ်ရင် April လို့ မှတ်ပါ! [Jen Looper](https://twitter.com/jenlooper) infographic
+> Y တန်ဖိုးကိုတွက်ချက်ပါ။ $4 ခန့်ပေးရင် ဆိုတော့ April ဖြစ်မှာပဲ! [Jen Looper](https://twitter.com/jenlooper) infographic
>
-> ဒီလိုင်း တွက်ချက်ရာမှာ slope အပြင် y-intercept (ဆိုလိုသည်မှာ `X=0` ဖြစ်ဆုံးသော အချိန် `Y` တည်ရှိရာ နေရာ) ကို အလေးပေးဆင်ခြင်း လိုအပ်သည်။
+> စတိုးတန်း slope ကို တွက်ချက်ရန် သင်္ချာသည် y-intercept နဲ့လည်း ဆက်နွယ်နေသည်၊ `X=0` ဖြစ်သောအခါ `Y` တန်ဖိုးဘယ်နေရာမှာရှိသည်ကို ချပြပါသည်။
>
-> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ဝက်ဘ်ဆိုက်တွင် တန်ဖိုးများ တွက်ချက်နည်းကို ကြည့်ရှုနိုင်ပါတယ်။ နံပါတ်များ၏ တန်ဖိုးအစုံ မျိုး မျက်နှာပြင်ပေါ် မျဉ်းတွေလမ်းကြောင်းကို ရှုမျက် မိတ်ဆက်ရန် [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) ကိုလည်း သွားကြည့်ပါ။
+> [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) ဆိုဒ်တွင် ကိန်းဂဏန်းတွက်သည့်နည်းပညာကို ကြည့်ရှုနိုင်ပြီး၊ [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) တွင် နံပါတ်တန်ဖိုးများသည် စတိုးတန်းကို ဘယ်လို သက်ရောက်သနည်းကို ကြည့်ရှုပါ။
## Correlation
-နောက်တစ်ခု နားလည်ရန် လိုအပ်သော စကားလုံးမှာ X နဲ့ Y တန်ဖိုးများအတွက် **Correlation Coefficient** ဖြစ်သည်။ scatterplot တစ်ခုမှာ ချက်ချင်း ဒီ coefficient ကို မြင်တွေ့နိုင်သည်။ points များ စည်းရုံး၍ စစ်မှန်တဲ့တိုင်းဟာ correlation မြင့်ပြီး ၊ scatter များမရှိပဲ ရှုပ်ထွေးသော scatter က correlation နည်းသည်။
+နောက်ထပ် နားလည်သင့်သည့် စကားလုံးမှာပဲ၊ X နှင့် Y တန်ဖိုးများအကြား **Correlation Coefficient** ဖြစ်သည်။ Scatterplot ကိုသုံး၍ အကောင်းဆုံး သုံးသပ်နိုင်ပါသည်။ တဆင့်တည်း စတိုးတန်းတည်နေရာတွင် ပြသထားသည့် datapoint များသည် correlation အဆင့်မြင့်မှုရှိသည်ဟု ဆိုနိုင်သည်။ သို့သော် datapoint များသည် မည်သည့်နေရာတွင်မဆို ဖြန့်ဝေနေပါက correlation အနည်းငယ်ရှိသည် ဟု ဆိုနိုင်သည်။
-ကောင်းမွန်သော linear regression မော်ဒယ် အနေနဲ့ Least-Squares Regression နည်းဖြင့် correlation coefficient တန်ဖိုးဟာ 0 ထက် 1 အနီးကပ် ဖြစ်သည်။
+အကောင်းဆုံး linear regression မော်ဒယ်မှာ correlation coefficient က (0 ထက် 1 နီးကပ်) မြင့်မားပြီး Least-Squares Regression နည်းဖြင့် အလုပ်လုပ်ပါသည်။
-✅ ဒီသင်ခန်းထောက်ခံ notebook ကို run ပြီး Month နှင့် Price scatterplot ကို ကြည့်ပါ။ Pumpkin အရောင်းအတွက် Month နှင့် Price အချက်များတွင် သင့်ရဲ့ scatterplot တွင် အမြင်ဖြင့် correlation မြင့်မမှန်သလဲ? `Month` အစား *day of the year* (နှစ်အစဥ်က လနေ့ရေ) သုံးပါက ပြောင်းလဲမှုရှိပါသလား?
+✅ ဒီသင်ခန်းစာနဲ့ဆက်စပ်သားတဲ့ notebook ကို ထည့်Run ထားပြီး Month နှင့် Price Scatterplot ကို ကြည့်ပါ။ Month နဲ့ Price ကို ယှဥ်ကြည့်သော pumpkin အရောင်း ဒေတာတွင် scatterplot အရ correlation က မြင့်မားသလား ၊ နည်းနည်းပေါ့မလား? Month အစား *ေန့ရက်* (စာနှစ်အစောပိုင်းမှရက်အရေအတွက်) အသုံးပြုပါက ဘယ်လိုပြောင်းလဲသလဲ?
-အောက်က code မှာ `new_pumpkins` ဆိုတဲ့ data frame တစ်ခုရရှိထားတယ်ဆိုပြီး ထပ်မံယူဆမယ် -
+အောက်တွင် ကျွန်ုပ်တို့ သန့်စင်ပြီးရရှိထားသော dataframe အမည် `new_pumpkins` ဟုသတ်မှတ်ထားသည်။ ဤအတိုင်းဖြစ်သည် -
-ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
----|-------|-----------|---------|------|---------|-----------|------------|-------
-70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
-72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
-73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
-74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-
-> ဒေတာတိုက်ရိုက် သန့်ရှင်းဖို့ code ကို [`notebook.ipynb`](notebook.ipynb) မှာတွေ့နိုင်ပါတယ်။ ယခင်သင်ခန်းတွင် အတူတူ သန့်ရှင်းခြင်း လုပ်ဆောင်ပြီးပြီး၊ `DayOfYear` ကော်လံကို အောက်ပါ ဖော်ပြချက်အတိုင်း တွက်ချက်ထားပါတယ် -
+ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
+---|-------|-----------|---------|------|---------|-----------|------------|-------
+70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
+71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
+72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
+73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
+74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
+> ဒေတာသန့်စင် နည်းလမ်းတွေကို [`notebook.ipynb`](notebook.ipynb) ဖိုင်ထဲမှာ ရယူနိုင်ပါတယ်။ ယခင်သင်ခန်းစာနဲ့တူညီသည့် သန့်စင်ခြင်းများကဲ့သို့ ဆောင်ရွက်ပြီး `DayOfYear` ကော်လံကို တွက်ချက်ထားသည်။
+
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
-
-Linear regression ရဲ့ သင်္ချာနောက်ခံကို နားလည်ပြီးရင်တော့ ဟုတ်တယ် Regression မော်ဒယ်တစ်ခုဖန်တီးပြီး ဘယ် package က pumpkin ရဲ့ စျေးနှုန်းအကောင်းဆုံးမျိုး ဖြစ်မလဲ ခန့်မှန်းကြည့်မယ်။ လူတစ်ယောက် holiday pumpkin patch အတွက် ရောင်းဝယ်တဲ့ အချိန်မှာ package များကို မှန်ကန်စွာ ဝယ်ယူဖို့ အကြံပေးရန်လိုလိမ့်မယ်။
-## Correlation ကို ရှာဖွေရန်
+Linear regression အတွက် သင်္ချာကို နားလည်သွားသည့်အခါ Regression မော်ဒယ်တစ်ခု ဖန်တီး၍ pumpkin package မည်ဟာ ပိုမိုကောင်းမွန်သောစျေးနှုန်းရှိမလဲ ခန့်မှန်းကြည့်ပါ။ စနေတင် праздник pumpkin patch အတွက် pumpkin ဝယ်သူများအတွက် ဝယ်ယူမှုများတွင် အကောင်းဆုံး ဖြစ်စေဖို့ ဤသတင်းအချက်အလက် များလိုအပ်ပါမည်။
+
+## Correlation ရှာဖွေရေး
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
-> 🎥 အပေါ်ဓာတ်ပုံကိုနှိပ်၍ correlation အကြောင်းအကျဉ်းဗွီဒီယိုကြည့်ပါ။
+> 🎥 Correlation အကြောင်း တိုတုတ်ကောက်ကြည့်ရှုရန် ဗီဒီယို ကို အသုံးပြုလိုက်ပါ။
-ယခင်သင်ခန်းမှာ အသိပညာရထားတဲ့အတိုင်း တစ်လလျှင် စျေးနှုန်းပျမ်းမျှက ဒီလိုပုံစံဖြစ်သည် -
+ယခင်သင်ခန်းစာဖြတ်သန်းမှုအရ လ အလိုက် ပျမ်းမျှစျေးနှုန်းမှာ အောက်ပါအတိုင်းမြင်ရပါသည် -
-ဒါက correlation ရှိကြောင်း အဆိုပြုရာ၊ `Month` နဲ့ `Price` သို့မဟုတ် `DayOfYear` နဲ့ `Price` ဆက်နွယ်မှု ထောက်ထားရန် linear regression မော်ဒယ် လေ့ကျင့်ကြည့်နိုင်ပါတယ်။ အောက်မှာ scatterplot တစ်ခု ရှိပြီး "Day of Year" နှင့် "Price" ဆက်နွယ်မှုကို ဖေါ်ပြထားပါတယ် -
+ဒါဟာ correlation ရှိတယ်ဆိုတာကို ပြထားပြီး `Month` နဲ့ `Price`, `DayOfYear` နဲ့ `Price` ဆက်စပ်မှုကို predict လုပ်ဖို့ linear regression train/training ပြုလုပ်ကြည့်ရအောင်။
+
+အောက်က scatter plot သည် `DayOfYear` နဲ့ `Price` ဆက်စပ်မှုကို ဖော်ပြသည်။
-
+
-`corr` function ကိုသုံးပြီး correlation ရှိ/မရှိ စစ်ဆေးကြည့်ပါ -
+`corr` function ကို အသုံးပြုပြီး correlation ရှိ/မရှိ စစ်ဆေးကြည့်ရအောင် -
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-
-Correlation က အသေးစားဖြစ်ပြီး `Month` အပေါ်မှာ -0.15, `DayOfMonth` အပေါ်မှာ -0.17 ဖြစ်သော်လည်း ခိုင်မာသော ဆက်နွယ်မှုတစ်ခုရှိနိုင်သည်။ Pumpkin အမျိုးအစားနှင့် သက်ဆိုင်သော စျေးနှုန်း အုပ်စုကွဲများရှိပါသည်။ အဲ့ဒီအကြောင်းကို မူတည်ပြီး pumpkin အမျိုးအစားတွေ မတူညီတဲ့အရောင်နဲ့ scatterplot ချထားကြည့်ပါ။ `scatter` function ကို `ax` parameter ဖြင့် အသုံးပြု၍ တစ်ခုတည်းရေးကွက်ပေါ်မှာ အချက်အားလုံးကို ပုံဖော်နိုင်သည် -
+
+Correlation က `Month` နှင့် -0.15၊ `DayOfYear` နဲ့ -0.17 ဖြစ်ပြီး ကြီးမားမသိသာသော်။ pumpkin မျိုးစုံပေါ်မူတည်၍ စျေးအမျိုးအစား မတူကြပါသလားဆိုသည့် ရှာဖွေရေးနည်းလမ်း (hypothesis) တစ်ခုရှိပါသည်။ အဆိုပါ အတည်ပြုပြီး အမျိုးအစားအလိုက် အရောင်ကို ခွဲခြား၍ scatterplot တစ်ခု ဖော်ဆောင်လိုက်ရအောင်။ မြေပုံ `scatter` ဖန်တီးသော `ax` parameter ကို ထည့်သုံးပြီး အချက်များအားလုံးကို တစ်ခုတည်းသောပုံတွင် စုစည်းတင်ပြနိုင်ပါသည်။
```python
ax=None
@@ -140,76 +141,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
-
-
-စုံစမ်းတွေ့ရှိချက်အရ အမျိုးအစားဟာ စျေးနှုန်းမှာ နေရာအများကြီးသက်ရောက်စေပြီး အရောင်းရက်စွဲထက် ပိုအရေးကြီးသည်။ Bar graph ဖြင့် ထောက်ပြထားသည် -
+
+
+ကျွန်ုပ်များ ရေးရာ အယူအဆမှာ pumpkin variety က စျေးနှုန်း ပိုကြီးစေပါတယ်၊ ရောင်းချသော ရက်စွဲထက် ပိုမိုသက်ရောက်မှုရှိပါတယ်။ ဤအချက်ကို bar graph ဖြင့်တွေ့မြင်ရပါသည် -
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
-
-
-ယခုအချိန်မှာ pumpkin အမျိုးအစားတစ်မျိုးဖြစ်တဲ့ 'pie type' မှာ ကန်တော့လိုက်ပြီး အရောင်းရက်စွဲက စျေးနှုန်းမှာ သက်ရောက်မှု သိရှိကြည့်ပါ -
+
+
+ယခုအချိန် pumpkin မျိုးစုံ 'pie type' တစ်ခုသာ ရှု့နေပြီး ရက်စွဲသည် စျေးနှုန်းအပေါ် အကျိုးသက်ရောက်မှု ရှိသည်ကို ကြည့်ရှုကြပါစို့။
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-
+
-`Price` နဲ့ `DayOfYear` အကြား correlation တွက်ချက်ရာ `corr` function သုံး၍ -0.27 ခန့်ရပြီး predictive model လေ့ကျင့်ရန် သေချာသည့် နေရာဖြစ်သည်။
+ယခု `corr` function နှင့် Price နှင့် DayOfYear အကြား correlation တွက်ချက်ပါက `-0.27` ခုခံရပါမည် - predictive မော်ဒယ် တစ်ခုသင်ကြားရန် သေချာသောကြောင်းအတိုင်း ဖြစ်သည်။
-> Linear regression မော်ဒယ် လေ့ကျင့်မှုမတိုင်ခင် ဒေတာ အပြည့်အဝ သန့်ရှင်းထားတာ အရေးကြီးသည်။ Missing values တွေ အနေနှင့် မရှိမဖြစ်လိုအပ်သည်။
-> ထို့ကြောင့် ဟိုခွက်ကွက်တွေ ပယ်ဖျက်သင့်ပါတယ် -
+> linear regression မော်ဒယ် သင်ကြားမတိုင်မီ ဒေတာ သန့်ရှင်းမှု အရေးကြီးပါသည်။ မဖြည့်ထားသောတန်ဖိုးများစွာရှိပါက linear regression က သူ့လုပ်ငန်းကို မကောင်းစွာလုပ်နိုင်ပါ။ ထို့ကြောင့် အလယ်တန်းရွေ့တားသည့်ကွက်လပ်များကို ဖယ်ရှားသင့်သည်။
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
-
-အခြားနည်းလမ်းအနေနှင့် အလွတ်ရှိနေသောတန်ဖိုးများကို အဲဒီကော်လံရဲ့ ပျမ်းမျှတန်ဖိုးနဲ့ ဖြည့်စွက်နိုင်ပါတယ်။
+
+အခြားနည်းလမ်းမှာ ဒီလွတ်လပ်တဲ့တန်ဖိုးများကို ဆိုင်ရာကော်လံမှ ပျမ်းမျှတန်ဖိုးဖြင့် ဖြည့်သွင်းနိုင်သည်။
## Simple Linear Regression
[](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
-> 🎥 အပေါ်ဓာတ်ပုံကို နှိပ်ပြီး Linear နှင့် Polynomial Regression အကြောင်း အကျဉ်းဗွီဒီယို ကြည့်ပါ။
+> 🎥 linear နဲ့ polynomial regression အကြောင်း တိုတုတ်ကောက်ချက်များ အတွက် ဗီဒီယိုကို တွေ့ကြည့်ရန် ပုံကိုနှိပ်ပါ။
-Linear Regression မော်ဒယ် လေ့ကျင့်ရန် **Scikit-learn** ကို အသုံးပြုမည်ဖြစ်သည်။
+Linear Regression မော်ဒယ် သင်ကြားမှုအတွက် **Scikit-learn** library ကို အသုံးပြုပါမယ်။
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
-
-input တန်ဖိုးများ (features) နဲ့ output ရလဒ် (label ကို) များကို numpy array များအဖြစ် သီးခြားခွဲသည် -
+
+input များ (features) နဲ့ မျှော်လင့်ထားသော output (label) တို့ကို numpy arrays များအဖြစ် ခွဲထုတ်ပါမယ်-
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
-
-> input data ကို Linear Regression package သဘောကျစေရန် `reshape` လုပ်ရန် ဖြစ်သည်။ Linear Regression ဟာ 2D-array အနေဖြင့် input လက်ခံပြီး array ၏ တန်းတစ်တန်းစီမှာ input feature တစ်ခုစီ ပါဝင်ရမည်။ ကျွန်ုပ်တို့မှာ input တစ်ခုသာရှိသဖြင့် N×1 အမျိုးအစား array လိုအပ်သည်။
-ပြီးနောက် train နှင့် test data များ ခွဲရန် လိုအပ်သည်။ မော်ဒယ်ကို train ပြီးနောက် ဝင်ရောက် စစ်ဆေးနိုင်စေရန်ဖြစ်ပါသည်။
+> notice that Linear Regression သုံးရန် input data ကို reshape လုပ်ရသည်။ Linear Regression အတွက် input ကို 2D-array ဖြစ်ရမည်၊ အဲဒီမှာ တန်းတိုင်းသည် input feature vector ဖြစ်ရမည်။ ငါတို့တွင် input တစ်ခုသာရှိသောကြောင့် N×1 shape ရှိတဲ့ array ဖြင့် data ပေးရန် လိုအပ်သည်။
+
+ပြီးနောက် မော်ဒယ်ကို သင်ကြားမှုပြုလုပ်ပြီးနောက် စစ်ဆေးနိုင်ရန် train & test datasets များခွဲထုတ်ရမည်။
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
-
-နောက်ဆုံး အမှန်တကယ် Linear Regression မော်ဒယ် လေ့ကျင့်ခြင်း code နှစ်ကြောင်းသာ လိုအပ်သည်။ `LinearRegression` သို့ အသင့်သတ်မှတ်ပြီး `fit` method ဖြင့် လေ့ကျင့်သည်။
+
+နောက်ဆုံးမှာ Linear Regression မော်ဒယ်ကို ပြုလုပ်ရန် ၂လိုင်းသာလိုသည်။ `LinearRegression` object ကို သတ်မှတ်ပြီး `fit` method ဖြင့် data ကို သင်ကြားသည်။
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
-`fit`-ပြီးပြီးနောက် `LinearRegression` အရာဝတ္ထုတွင် regression ၏ coefficients အားလုံးပါရှိပြီး၊ ထို coefficients များကို `.coef_` ပိုင်ဆိုင်မှုမှတဆင့် access လုပ်နိုင်သည်။ ကျွန်ုပ်တို့အခြေအနေတွင် coefficient တစ်ခုသာရှိပြီး၊ လျှင် `-0.017` အနားအနီးရှိသင့်သည်။ ၎င်းသည် စျေးနှုန်းများသည် အချိန်အလိုက် တစ်နေ့လျှင် လက်မ ၂ စင့်ခန့် ပျော့မှုတစ်ခုခုရှိသည့်အတိုင်း ပြသနေသည်။ `lin_reg.intercept_` ကို သုံးကာ regression ၏ Y-axis နှင့် အစပ်ကိုလည်း access လုပ်နိုင်ပြီး ကျွန်ုပ်တို့အတွက်နှစ်အစတွင်စျေးနှုန်းအနီး `21` ခန့်ရှိမည်ဖြစ်သည်။
+`fit` ပြီးနောက် `LinearRegression` အရာဝတ္ထုတွင် regression ၏ coefficient များအားလုံး ပါရှိပြီး `.coef_` property ကို အသုံးပြု၍ ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ကျွန်ုပ်တို့၏အတွက် coefficient တစ်ခုတည်းရှိပြီး၊ ၎င်းသည် `-0.017` ဘယ်ဘက်လောက ပတ်လည်ရှိသင့်သည်။ ၎င်းမှာ ကာလကြာမြင့်သလို ပါးလျော့နည်းနည်းကျဆင်းသည်ကို အဓိပ္ပါယ်ရသည်၊ တစ်နေ့လျှင် စင့် ၂ ခန့် ကျဆင်းကြောင်း ဖြစ်သည်။ regression ၏ Y-axis နှင့်ထိတွေ့ရာနေရာကို `lin_reg.intercept_` ဖြင့်လည်း ဝင်ရောက်ကြည့်ရှုနိုင်ပြီး ကျွန်ုပ်တို့အတွက် ၎င်းက `21` ခန့်ရှိပြီး ၂၀၁၉ ခုနှစ်အစ အချိန်တွင်စျေးနှုန်းအဆင့်ကို ဖော်ပြသည်။
-မော်ဒယ်၏တိကျမှုကို ကြည့်ရန် မဟာဗျူဟာ dataset တွင် စျေးနှုန်းများကို ခန့်မှန်းပြီး ထိုခန့်မှန်းချက်များနှင့် မျှော်မှန်းထားသည့်တန်ဖိုးများ မည်မျှနီးကပ်သည်ကို ရှာဖွေရမည်။ ဤကို root mean square error (RMSE) မှ အသုံးပြု၍ တိုင်းတာနိုင်ပြီး၊ မျှော်မှန်းထားသည့်တန်ဖိုးနှင့် ခန့်မှန်းထားသည့်တန်ဖိုးတို့၏ ကွာခြားချက်များ၏ စတုရန်းပျားများ၏ ပျမ်းမျှ ၏ မျိုးကို ရွေ့လျား စတုရန်းမှောက်တန်ဖိုးဖြစ်သည်။
+ကျွန်ုပ်တို့၏ မော်ဒယ် တိကျမှုကို ကြည့်ရန်၊ စမ်းသပ်ဒေတာ စုစည်းမှုတွင် စျေးနှုန်း များကို ခန့်မှန်းပြီး ခန့်မှန်းချက်များသည် မျှော်မှန်းထားသောတန်ဖိုးများနှင့် မည်မျှ နီးကပ်သလဲ ဆွေးနွေးနိုင်သည်။ ၎င်းကို Root Mean Square Error (RMSE) ကိုအသုံးပြုပြီး ခန့်မှန်းချက်များ နှင့် မျှော်မှန်းတန်ဖိုးများအကြား ကွာခြားချက်များ၏ စတုဂံ၏ မြည်းတေကို ရှာဖွေရန် အသုံးပြုနိုင်သည်။
```python
pred = lin_reg.predict(X_test)
@@ -217,37 +217,38 @@ pred = lin_reg.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
-
-ကျွန်ုပ်တို့ error သည် ၂ ခန့်ရှိပြီး ဒါဟာ ~၁၇% ဖြစ်သည်။ မလွန်စွာကောင်းမှု မရှိပါ။ မော်ဒယ်အရည်အသွေး၏ အခြားပြသနာတစ်ခုမှာ **coefficient of determination** ဖြစ်ပြီး အောက်ပါအတိုင်း ရနိုင်သည်-
+
+ကျွန်ုပ်တို့၏ error သည် ၂ ပွင့်ခန့်ရှိပြီး ~၁၇% ဖြစ်သည်။ မကောင်းပါဘူး။ မော်ဒယ်၏ အရည်အသွေး အနေနဲ့တစ်ခုက **coefficient of determination** ဖြစ်ပြီး အောက်ပါအတိုင်း ရယူနိုင်သည်-
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
-Value သည် 0 ဖြစ်ပါက မော်ဒယ်သည် input ဒေတာကို ထည့်သွင်းစဉ်းစားမှုမရှိပါ၊ အဲ့ဒါဟာ *အဆိုးဆုံး linear predictor* အဖြစ် အလုပ်လုပ်ပြီး ရလဒ်၏ ပျမ်းမျှတန်ဖိုးကို ပြသသည်။ 1 ဆိုသည်မှာ မျှော်မှန်းထားသည့် output များအားလုံးကို တိကျစွာ ခန့်မှန်းနိုင်သည်ကို ကိုယ်စားပြုသည်။ ကျွန်ုပ်တို့အတွက် coefficient သည် 0.06 အနည်းငယ်၏ နီးပါးဖြစ်ပြီး၊ အလွန်နိမ့်ပါသည်။
+
+တန်ဖိုး 0 ဖြစ်လျှင် မော်ဒယ်သည် input ဒေတာကို လက်မခံဘဲ အလုပ်လုပ်နေပြီး အနုတ်ဆုံး Linear Predictor ဖြစ်သည်ဟု ဆိုလိုသည်၊ ၎င်းအနေဖြင့်ရလဒ်၏ ကြားနာ တန်ဖိုးသာ ဖြစ်သော mean တန်ဖိုးဖြစ်သည်။ 1 ရလဒ်ကနေ အားလုံးကို မှန်ကန်စွာ ခန့်မှန်းနိုင်သည်ကို ဆိုလိုသည်။ ကျွန်ပ်တို့အတွက် တန်ဖိုးက 0.06 ခန့်ရှိပြီး တော်တော်နည်းပါးသည်။
-test dataset နှင့် regression လိုင်းကို တွဲ၍ ဖော်ပြနိုင်ပါတယ် မော်ဒယ်အလုပ်လုပ်ပုံကို ပိုမိုရှင်းလင်းစေရန်-
+ကျွန်ုပ်တို့သည် စမ်းသပ် ဒေတာနှင့် regression line ကို တိုက်ရိုက်ပုံဆွဲ၍ Regression ၏ အလုပ်လုပ်ပုံကို ကောင်းစွာမြင်နိုင်သည်-
```python
plt.scatter(X_test,y_test)
plt.plot(X_test,pred)
```
-
+
## Polynomial Regression
-Linear Regression ၏ အမျိုးအစားတစ်ခုမှာ Polynomial Regression ဖြစ်သည်။ ကွဲပြားခြားနားသောအချိန်များတွင် variables များအကြားလိုင်းတူဆက်နွယ်မှုရှိနိုင်ပေမယ့် - ပန်းကန်၏ အရွယ်အစား များလာသည်နှင့်အမျှ စျေးနှုန်းမြင့်တက်သည် - တချို့အခြေအနေတွင် ဤဆက်နွယ်မှုများကို ပြင်သစ်လမ်းကြောင်း သို့မဟုတ် သတ်မှတ်ထားသောတန်းတူ အနားများဖြင့် ဖော်ပြ၍ မရနိုင်ပါ။
+Linear Regression ၏ နှစ် 번째 မျိုးကတော့ Polynomial Regression ဖြစ်သည်။ ခဏခဏ variable များအကြား ဆက်စပ်မှုတည်ရှိသောကြောင်း - ဥပမာ ဂဏန်းအရ အပူအကြီးဆုံးပါဝင်သည့် pumpkin ၏ ပမာဏ နှင့် စျေးနှုန်းတို့ အချိန်တည်းရှိခြင်းရှိသော်လည်း - တစ်ခါတစ်ရံတွင် ဒီဆက်စပ်မှုများသည် တန်းတူစတိုင်နယ်လိုင်း သို့ မဟုတ် မှန်းဆနိုင်သော ကွဲပြားမှု မဖြစ်နိုင်ပါ။
-✅ [Polynomial Regression အသုံးပြုနိုင်သည့် အခြား ဥပမာများ](https://online.stat.psu.edu/stat501/lesson/9/9.8)
+✅ [Polynomial Regression အသုံးပြုနိုင်သော ဒေတာများ](https://online.stat.psu.edu/stat501/lesson/9/9.8) ဥပမာအချို့
-Date နှင့် Price အချက်အလက်တို့ ညီမျှမှုကို ထပ်မံကြည့်ပါ။ Scatterplot သည် လိုင်းတစ်လမ်းဖြင့် အသေးစိတ် သုံးသပ်ရန် လိုအပ်သည် ဟုတ်သလား? စျေးနှုန်းများ မပြေပဲ ကွဲပြားခြားနားနိုင်အောင်။ ဤအဖြစ်တွင် polynomial regression ကို စမ်းသပ်နိုင်သည်။
+Date နှင့် Price အကြား ဆက်နွယ်မှုကို ထပ်မံကြည့်ပါ။ ဒီ scatterplot ကို သို့တိုင်သော တန်းနယ်လိုင်းဖြင့်သာ ခွဲခြားရန် သင်ယူသင့်ပါသလား? စျေးနှုန်းများ တက် ကြွေ့ ရန်လား? ဒီအခြေအနေနှင့် polynomial regression ကို စမ်းကြည့်နိုင်သည်။
-✅ Polynomial များမှာ တစ်ခု သို့မဟုတ် ၎င်းထက်ပိုသော variables နှင့် coefficients ပါဝင်သည့် သင်္ချာရေးသားချက်များဖြစ်သည်။
+✅ Polynomial တွင် များစွာသော variables နှင့် coefficients ပါဝင်နိုင်သည့် သင်္ချာရေးဖော်ပြချက်များဖြစ်သည်။
-Polynomial regression သည် nonlinear data ကို ပိုပိုက်ကာစွာသင့်တော်အောင် curved လိုင်း တစ်ခု ဖန်တီးသည်။ ကျွန်ုပ်တို့အတွက် squared `DayOfYear` variable ကို input data ထဲသို့ ထည့်သွင်းပါက parabolic curve အမျိုးအစားဖြင့် data ကို လိုက်ဖက်နိုင်ပြီး နှစ်အတွင်း တစ်နေရာတည်းတွင် အနည်းဆုံးရှိမည်။
+Polynomial regression သည် nonlinear ဒေတာအသုံးပြုမှုများအတွက် ကွေးလာပုံဖြင့် အလိုက်ဖက်မှု ပိုတိုးစေသည်။ ကျွန်ုပ်တို့အတွက် `DayOfYear` ကို ကျော်သွားပြီး squared variable ကို input data ထဲသို့ ထည့်သွင်းပါက၊ နှစ်တွင်း တည်ရှိသည့် ဥပမာ parabolic curve တစ်ခုကို ချိတ်ဆွဲနိုင်သည်။
-Scikit-learn တွင် [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) ကိုများသည် data processing အဆင့်ခွဲခြားမှုများကို တွဲဖက် အသုံးပြုနိုင်ရန်အတွက် ပါဝင်သည်။ **pipeline** သည် **estimators** များ၏ လွှဲစရာဖြစ်သည်။ ကျွန်ုပ်တို့အနေဖြင့် ပထမဆုံး polynomial features များကို မော်ဒယ်ထဲသို့ ထည့်သွင်းပြီး regression သင်ကြားမှုလုပ်မည့် pipeline တစ်ခုဖန်တီးမည်။
+Scikit-learn တွင် [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) များပါဝင်ပြီး data processing ၏အဆင့်ဆင့်ကို ပေါင်းစပ်နိုင်သည်။ **pipeline** သည် **estimators** သက်ဆိုင်မှုချိတ်ဆက်မှုတစ်ခု ဖြစ်သည်။ ကျွန်ုပ်တို့အတွက် Pipeline ကိုတည်ဆောက်ပြီး ပထမဦးဆုံး polynomial features များကို မော်ဒယ်ထဲ ထည့်သွင်းပြီး နောက်ဆုံး regression ကိုသင်ကြားမည်-
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -258,60 +259,82 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
-`PolynomialFeatures(2)` ကိုသုံးခြင်းဖြင့် input data ထဲမှ ဒုတိယကုန်လီပေါ်မီယနယ်များအားလုံး ပါဝင်သည်။ ကျွန်ုပ်တို့အတွက် သည်မှာ `DayOfYear`2 တစ်ခုသာဖြစ်မည်၊ ဒါပေမယ့် X နှင့် Y တို့ရှိပါက X2, XY နှင့် Y2 ကိုလည်း ထည့်သွင်းသည်။ ပိုမိုမြင့်မားသောကုန်လီပေါ်မီယနယ်များကိုလည်း အသုံးပြုနိုင်သည်။
+`PolynomialFeatures(2)` က input data မှ အပေါ်တန်းဒဂရီ များကို ထည့်သွင်းရန် အဓိပ္ပါယ် ရှိသည်။ ကျွန်ုပ်တို့တွင်၎င်းသည် `DayOfYear`2 ကိုသာ ပါဝင်သော်လည်း input variables နှစ်ခု X နှင့် Y ရှိပါက X2, XY နှင့် Y2 ဖြစ်သည်။ နိမ့်နေ့တန်းဒဂရီ ပိုများလည်း အသုံးပြုနိုင်သည်။
+
+Pipeline များကို `LinearRegression` အတိုင်း အသုံးပြုနိုင်သည်၊ တူညီပြီး pipeline ကို `fit` ပြီး `predict` ဖြင့် ခန့်မှန်းချက် ရယူနိုင်သည်။
+
+```python
+pred = pipeline.predict(X_test)
+
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
+
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+Smooth approximation curve ကို ပုံဆွဲရန် `np.linspace` ကို အသုံးပြုကာ input တန်ဖိုး များကို တည်ငြိမ်စေရန်၊ စမ်းသပ် ဒေတာမဟုတ်ဘဲ တိုက်ရိုက် ပုံဆွဲခြင်းက zigzag ဟူသောရိုးလိုင်း ထုတ်ပေးနိုင်သည်။
+
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
-Pipeline များကို မူရင်း `LinearRegression` object များနှင့်တူညီစွာ အသုံးပြုနိုင်၍၊ pipeline ကို `fit` ပြီး `predict` ဖြင့် ခန့်မှန်းချက်များ ရနိုင်သည်။ ဤနေရာတွင် test data နှင့် approximation curve ကို ဖော်ပြထားသည်-
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
+
+graph သည် စမ်းသပ်ဒေတာနှင့် approximation curve ကို ဖော်ပြထားသည်-
-Polynomial Regression ဖြင့် MSE သာနည်းနည်းချိုသာ၍ determination မြင့်တက်သည်၊ သို့သော် ထူးခြားမှုမရှိသေးပါ။ အခြား features များကိုလည်း ပေါင်းစပ်စဉ်းစားရမည်။
+Polynomial Regression သုံးပြီး RMSE နည်းနည်း သာ ပိုနည်းပြီး determination ပိုမြင့်လာ၍ အနည်းငယ်သာပြောင်းလဲသည်။ အခြား features များကိုလည်း ထည့်သွင်းစဉ်းစားရမည်။
-> မျက်နှာတစ်ခုအနေဖြင့် အနည်းဆုံး pumpkin စျေးနှုန်းများသည် Halloween အားအနီးတွင် တွေ့ရှိနေရသည်။ ၎င်းအကြောင်း ဘယ်လိုရှင်းလင်းမည်နည်း?
+> minimal pumpkin စျေးနှုန်း သည် Halloween အနီးတွင် တွေ့ရှိရသည်။ ၎င်းကို မည်သို့ရှင်းလင်းနိုင်သနည်း?
-🎃 ဂုဏ်ယူပါတယ်၊ သင်သည် pumpkin မှာ pie အမျိုးအစား စျေးနှုန်းခန့်မှန်းနိုင်သည့် မော်ဒယ်တစ်ခု ဖန်တီးနိုင်လိုက်ပြီ။ Pumpkin အမျိုးအစားအားလုံးအတွက် ထပ်မံပြုလုပ်ပါက ပင်ပန်းနွမ်းနယ်လိမ့်မည်။ ယခု Pumpkin အမျိုးအစားအား မော်ဒယ်တွင် ထည့်သွင်းစဥ်းစားမည့် နည်းလမ်းကို လေ့လာကြမည်။
+🎃 သင်သည် စျေးနှုန်း ခန့်မှန်းနိုင်သော pie pumpkin မော်ဒယ် တစ်ခု ဖန်တီးထားသဖြင့် ဂုဏ်ပြုသည်။ အခြား pumpkin အမျိုးအစားများအတွက်လည်း ဒီလုပ်နည်းကို ထပ်မံ သုံးနိုင်သည်၊ သို့သော်၎င်းသည် မကြာခဏအလုပ်များသည်။ Pumpkin အမျိုးအစားကို မော်ဒယ်တွင် စဉ်စားဖို့ လေ့လာကြမယ်။
## Categorical Features
-ကောင်းမွန်သောကမ္ဘာကြီးထဲ၌ pumpkin အမျိုးအစားအလိုက် စျေးနှုန်းများကို တစ်ခုတည်းသောမော်ဒယ်ဖြင့် ခန့်မှန်းနိုင်ရန် ဆန္ဒရှိကြသည်။ သို့ပေမယ့် `Variety` ကော်လမ်သည် `Month` ကဲ့သို့ ကော်လမ်များနှင့် မတူဘဲ နံပါတ်မဟုတ်သော တန်ဖိုးများပါရှိသည်။ ဒီလိုကော်လမ်များကို **categorical** ဟုခေါ်သည်။
+Ideal အာကာသတွင် မတူညီသော pumpkin အမျိုးအစားများအတွက် တူညီသော မော်ဒယ် အသုံးပြု၍ စျေးနှုန်းများ ခန့်မှန်းနိုင်စေရန် မျှော်လင့်သည်။ သို့သော် `Variety` ကော်လံသည် `Month` ကဲ့သို့ မျိုးဖြစ်၍၊ ချည်းများကို number မဟုတ်သော တန်ဖိုးများပါရှိသည်။ ယင်းကော်လံများအား **categorical** ဟု ခေါ်သည်။
[](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
-> 🎥 အပေါ်ရှိ ဇာတ်ပုံကို နှိပ်၍ categorical features အသုံးပြုခြင်း၏ အကျဉ်းချုပ် ဗီဒီယိုကို ကြည့်ရှုနိုင်ပါသည်။
+> 🎥 ပုံနှိပ်ပြီး categorical features အသုံးပြုခြင်းအတွင်း ရှုထောင့်တို video ကြည့်ပါ။
-Variety အလိုက် စျေးနှုန်းပျမ်းမျှသည် ဤအတိုင်း ဖြစ်ပါသည်-
+Variety အလိုက် ပျမ်းမျှစျေးနှုန်းကို ကြည့်ရှုပါ-
-Variety ကို စဉ်းစားရန်အတွက် ပထမဦးစွာ နံပါတ်တန်ဖိုးသို့ သို့မဟုတ် **encode** ပြုလုပ်ရန် လိုအပ်သည်။ လုပ်နည်းများမှာ-
+Variety ကို စဉ်းစားရန် ဦးစွာ ဂဏန်းပုံစံ သို့ပြောင်းရန်(encode) လိုအပ်သည်။ အဖြစ်ဆုံး မြင်သာသည့် နည်းလမ်းမှာ-
-* ရိုးရိုး **နံပါတ်အမှတ်ပေးခြင်း** သည် variété များကို စာရင်းတစ်ခုဖန်တီးပြီး variety နာမည်ကို စာရင်းအတွင်းရှိ အညွှန်းနံပါတ်ဖြင့် အစားထိုးသည်။ အကြောင်းက linear regression အတွက် အကောင်းဆုံးမဟုတ်ပါ၊ မကြာခဏ linear regression သည် index နံပါတ်၏ နံပါတ်တန်ဖိုးကို အသုံးပြုပြီး ရလဒ်ထဲ ထည့်သွင်းခြင်းဖြင့် coefficient တစ်ခုနှင့် မြှောက်သည်။ ကျွန်ုပ်တို့အနေဖြင့် index နံပါတ်နှင့် စျေးနှုန်းအကြား ဆက်စပ်မှုသည် ရိုးရှင်း linear မဟုတ်ပေ။
-* **One-hot encoding** သည် `Variety` ကော်လမ်ကို စားကြီးသုံးကော်လမ်အစားထိုးပေးပြီး၊ ကြိုက်သော variety အတန်းတစ်ခုစီအတွက် ကော်လမ်တစ်ခုစီဖန်တီးသည်။ အတန်းအလိုက် အဆိုပါ variety ရှိပါက ကော်လမ်တွင် `1`၊ မရှိပါက `0` ပါဝင်သည်။ ထို့ကြောင့် linear regression တွင် pumpkin variety တစ်ခုစီအတွက် coefficient ၄ ခုရှိပြီး၊ ၎င်းတွင် အစောပိုင်းစျေးနှုန်း(သို့မဟုတ် "အပိုစျေး") အတွက် တာဝန်ရှိသည်။
+* အလွယ်တကူ **numeric encoding** - ရှားစီးပြား Variety များစာရင်းဖြင့်တ Table တည်ဆောက်ပြီး Variety အမည်များကို ထိုစာရင်းအတွင်း အညွှန်း नंबर ဖြင့် ဖြည့်စွက်သည်။ ဒါပေမယ့် linear regression ကလည်း အမှန်တကယ် ဂဏန်းတန်ဖိုးကို အသုံးပြု၍ လုပ်ဆောင်သဖြင့် အညွှန်းနံပါတ်နှင့် စျေးနှုန်း အကြား ဆက်စပ်မှု ပုံမှန်မဖြစ်ပါ၊ နှိုင်းပြောင်မှု မရှိရင်လည်း။
+* **One-hot encoding** သည် `Variety` ကို 4 ကော်လံအသစ်တွင် ဖြန့်ဝေပြီး variety တစ်ခုချင်းစီအတွက် column တစ်ခုထားမည်။ အသီးသီးကော်လံများတွင် 해당က variety row ဖြစ်ခဲ့လျှင် `1` ရရှိပြီး မဖြစ်လျှင် `0` ဖြစ်သည်။ ၎င်းသည် liner regression တွင် variety အသီးသီးအတွက် coefficient ၄ ခုရှိမည် ဖြစ်ပြီး pumpkin အမျိုးအစားတစ်ခု၏ စတင်မှု စျေးနှုန်း "သို့မဟုတ်" "ထပ်မံစျေးနှုန်း" ကို ဖော်ပြသည်။
-Variety ကို one-hot encode ပြုလုပ်သည့်နည်းလမ်းကို အောက်ပါကုဒ်က ဖော်ပြထားသည်-
+အောက်ပါကုဒ်တွင် variety ကို one-hot encode ပြုလုပ်ခြင်းပြသာနာရှိသည်-
```python
pd.get_dummies(new_pumpkins['Variety'])
```
-
- ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
-----|-----------|-----------|--------------------------|----------
-70 | 0 | 0 | 0 | 1
-71 | 0 | 0 | 0 | 1
-... | ... | ... | ... | ...
-1738 | 0 | 1 | 0 | 0
-1739 | 0 | 1 | 0 | 0
-1740 | 0 | 1 | 0 | 0
-1741 | 0 | 1 | 0 | 0
-1742 | 0 | 1 | 0 | 0
-
-One-hot encoded variety ကို input အဖြစ်သုံးပြီး linear regression ကို သင်ကြားရာတွင် `X` နှင့် `y` ဒေတာများကို မှန်မှန်ကန်ကန် သတ်မှတ်ရုံဖြစ်သည်-
+
+ ID | FAIRYTALE | MINIATURE | MIXED HEIRLOOM VARIETIES | PIE TYPE
+----|-----------|-----------|--------------------------|----------
+70 | 0 | 0 | 0 | 1
+71 | 0 | 0 | 0 | 1
+... | ... | ... | ... | ...
+1738 | 0 | 1 | 0 | 0
+1739 | 0 | 1 | 0 | 0
+1740 | 0 | 1 | 0 | 0
+1741 | 0 | 1 | 0 | 0
+1742 | 0 | 1 | 0 | 0
+
+one-hot encoded variety ကို input အသုံးပြုပြီး linear regression သပ်မတ်ရန် `X` နှင့် `y` data ကိုမှန်ကန်စွာ initialize လုပ်ရုံပဲ လိုသည်-
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
-
-Linear Regression သင်ကြားခြင်းတွက် အခြားကုဒ်ပိုင်းများထက်မတူဘဲမဟုတ်ပါ၊ မူလသင်ကြားထားသည့်ပုံစံနှင့် တူညီသည်။ စမ်းသပ်ပါက mean squared error ပြောင်းလဲမှုမပြင်းထန်ပေ၊ determination coefficient သည် ၀.၇၇ ခန့် ရရှိမည်။ ပိုမိုတိကျသော ခန့်မှန်းချက်များ ရယူရန် categorical features များနှင့် numeric features များ (ဥပမာ- `Month`, `DayOfYear`) ကိုပါ သွင်းစဉ်းစားနိုင်သည်။ feature များကို တစ်စုစည်း array တစ်ခုတွင် ပေါင်းစပ်ဖို့ `join` ကို အသုံးပြုနိုင်သည်-
+
+အခြားကုဒ်များသည် အထက်တွင် Linear Regression သင်ကြားသည့်နည်းလမ်း တူညီသည်။ စမ်းသပ်၍ mean squared error တန်ဖိုးတူညီသော်လည်း coefficient of determination သည် (၇၇%) ပိုမြင့်စေသည်။ တိကျမှု ပိုစွမ်းဆောင်ရန် categorical features နောက်ထပ်များ၊ numeric features (ဥပမာ `Month` သို့မဟုတ် `DayOfYear`) များပါ သတ်မှတ်နိုင်သည်။ feature တစ်ခုကို စုစည်းရန် `join` ကို အသုံးပြုနိုင်သည်-
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@@ -320,69 +343,69 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
```
+
+ဒီမှာ `City` နှင့် `Package` Type ကိုပါ ထည့်သွင်းပြီး RMSE = 2.84 (10.5%), determination = 0.94 ရသည်။
-ဤတွင် `City` နှင့် `Package` အမျိုးအစားများလည်း သွင်းစဉ်းစားပြီး၊ MSE 2.84 (၁၀%) နှင့် determination 0.94 ထိရရှိပါသည်။
-
-## စုပေါင်းပြီး မော်ဒယ်ကို ဖန်တီးခြင်း
+## ပြန်လည်ပေါင်းစပ်ခြင်း
-အကောင်းဆုံးမော်ဒယ်ဖန်တီးရန် အပေါ်ပါ ဥပမာမှ Categorical (one-hot encoded) နှင့် numeric ဒေတာများကို Polynomial Regression နှင့် တွဲဖက်၍ အသုံးပြုနိုင်သည်။ အဆင်ပြေစေရန် မူလကုဒ် here ပါ-
+အကောင်းဆုံး မော်ဒယ် ရရှိစေရန် အထက်ပါ စုစုပေါင်း( one-hot encoded categorical + numeric) ဒေတာများကို Polynomial Regression နှင့် ပေါင်းစပ်နိုင်သည်။ အောက်မှာ အကုန်လုံးစုံလင်သော ကုဒ်ဖြစ်သည်-
```python
-# လေ့ကျင့်ရေးဒေတာကို စီစဉ်ပါ
+# လေ့ကျင့်မှုဒေတာကို သတ်မှတ်ပါ
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
-# လေ့ကျင့်မှုနှင့် စမ်းသပ်မှု ခွဲခြားပါ
+# လေ့ကျင့်မှု-စမ်းသပ်မှု ခွဲခြားပါ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
-# ပိုင်းလိုင်းကို အသင့်ပြင်ပြီး လေ့ကျင့်ပါ
+# pipeline ကို စီစဉ်ပြီး လေ့ကျင့်ပါ
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
-# စမ်းသပ်ဒေတာအတွက် ဖော်ထုတ်ဆောင်ရွက်မှု
+# စမ်းသပ်ဒေတာအတွက် မျှော်မှန်းချက်များကို ထုတ်ယူပါ
pred = pipeline.predict(X_test)
-# MSE နှင့် သတ်မှတ်ချက်ကို ချည်းကပ်ပါ
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# RMSE နှင့် သတ်မှတ်ချက်ကိုတွက်ချက်ပါ
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
+
+ဤက ဒါကာမှာ determination coefficient ၉၇% ခန့်ရပြီး RMSE=2.23 (~8% ခန့်ခန့် ခန့်မှန်းမှားယွင်းမှု) ဖြစ်ပါမည်။
-ဒါမှတစ်ပါး determination coefficient ကို ၉၇% ခန့်၊ MSE=2.23 (~၈%ခန့် မျှော်မှန်းချက် အချက်အလက်အမှား) ရရှိမည်။
-
-| Model | MSE | Determination |
-|-------|-----|---------------|
-| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
-| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
-| `Variety` Linear | 5.24 (19.7%) | 0.77 |
-| All features Linear | 2.84 (10.5%) | 0.94 |
-| All features Polynomial | 2.23 (8.25%) | 0.97 |
+| Model | RMSE | Determination |
+|-------|-----|---------------|
+| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
+| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
+| `Variety` Linear | 5.24 (19.7%) | 0.77 |
+| All features Linear | 2.84 (10.5%) | 0.94 |
+| All features Polynomial | 2.23 (8.25%) | 0.97 |
-🏆 အလုပ်ကောင်းပါတယ်! သင်သည် သင်ခန်းစာတစ်ခုအတွင်း Regression မော်ဒယ် (၄) များ ဖန်တီးပြီး မော်ဒယ်အရည်အသွေးကို ၉၇% ဆုတ်ခဲ့ပြီ။ Regression ၏ နောက်ဆုံးပိုင်းတွင် Logistic Regression အကြောင်း လေ့လာ၍ ကဏ္ဍ သတ်မှတ်ခြင်းကို သင်ယူမည်ဖြစ်သည်။
+🏆 ကောင်းပါတယ်! သင်သည် Regression မော်ဒယ် ၄ မျိုးကို တစ်သင်ခန်းစာအတွင်း ဖန်တီးပြီး မော်ဒယ် အရည်အသွေးကို ၉၇% ထိ တိုးတက်စေခဲ့သည်။ Logistic Regression ကို သင်ကြားရန် နောက်ထပ် ကျန်ရှိသည့် Regression အပိုင်းတွင် သင်ယူမည်။
---
-## 🚀စိန်ခေါ်မှု
+## 🚀Challenge
-ဤ notebook တွင် မတူညီသော variable များစမ်းသပ်၍ correlation နှင့် မော်ဒယ်တိကျမှု ဆက်စပ်မှုကို တွေ့ပါ။
+ဒီ Notebook တွင် မတူညီသည့် variables များစမ်းသပ်လေ့လာပြီး correlation နှင့် model တိကျမှုကြား ဆက်စပ်မှုဘယ်လောက်ရှိကြောင်း ခွဲခြားပါ။
-## [သင်ခန်းစာ အပေါ်တွင် စစ်တမ်း](https://ff-quizzes.netlify.app/en/ml/)
+## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
-## ပြန်လည်သုံးသပ်ရန် နှင့် ကိုယ်တိုင်လေ့လာရန်
+## Review & Self Study
-ဤသင်ခန်းစာတွင် Linear Regression အကြောင်း သင်ယူခဲ့သည်။ အခြား အရေးကြီးသော Regression အမျိုးအစားများလည်းရှိပါသည်။ Stepwise, Ridge, Lasso, နှင့် Elasticnet နည်းများကို အသေးစိတ်လေ့လာပါ။ ပိုမိုသိရှိရန် [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ကို အကြံပြုသည်။
+ဒီသင်ခန်းစာတွင် Linear Regression အကြောင်း သင်ယူခဲ့သည်။ အခြား အရေးပါ Regression မျိုးလည်း ရှိသည်။ Stepwise, Ridge, Lasso နှင့် Elasticnet နည်းပညာများကို လေ့လာပါ။ ပိုမိုလေ့လာလိုသူများအတွက် [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) သင်တန်းကောင်းတစ်ခု ဖြစ်သည်။
-## အလုပ်လက်တွေ့
+## Assignment
-[Model တစ်ခု တည်ဆောက်ရန်](assignment.md)
+[Build a Model](assignment.md)
---
-**ကာကွယ်ချက်**
-ဤစာရွက်စာတမ်းကို AI ဘာသာပြန် စနစ်ဖြစ်သော [Co-op Translator](https://github.com/Azure/co-op-translator) မှ အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားသော်လည်း အလိုအလျှောက်ဘာသာပြန်ခြင်းများတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ခြင်းကို ကျေးဇူးပြုပြီး သိရှိထားရပါမည်။ စာရွက်စာတမ်းပိုင်ဆိုင်ခြင်းနှင့် အခိုင်အမာအချက်အလက်အဖြစ် မူလစာရွက်စာတမ်းကို သတ်မှတ်သည်။ အရေးကြီးသော အချက်အလက်များအတွက် အတတ်ပညာရှင် လူသား ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုရာအတွင်း ဖြစ်ပေါ်လာသော လွဲမှားခြင်းများ သို့မဟုတ် သဘောနားလည်မှုမှားယွင်းမှုများအတွက် ကျွန်ုပ်တို့မှာ တာဝန်မရှိပါ။
+**ရှင်းလင်းချက်**
+ဤစာရွက်စာတမ်းသည် AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားခြင်းဖြစ်ပါသည်။ တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းပါသော်လည်း အလိုအလျောက်ဘာသာပြန်ချက်များတွင် အမှားများ သို့မဟုတ် တိကျမှုနည်းပါးမှုများ ရှိနိုင်ကြောင်း သတိပြုပါရန်။ မူရင်းစာရွက်စာတမ်းကို အစစ်အမှန်အရင်းအမြစ်အဖြစ် အယူခံသင့်ပါသည်။ အရေးကြပ်သောသတင်းအချက်အလက်များအတွက် များသောအားဖြင့် လူ့ဘာသာပြန်သူများ၏ ပညာရှင်ဘာသာပြန်ခြင်းကို အကြံပြုပါသည်။ ဤဘာသာပြန်ချက်ကို အသုံးပြုမှုကြောင့် ဖြစ်ပေါ်လာနိုင်သော်လည်း နားမလည်မှုများ သို့မဟုတ် မှားယွင်းဖော်ပြချက်များအတွက် ကျွန်ုပ်တို့ တာဝန်မယူပါ။
\ No newline at end of file
diff --git a/translations/my/2-Regression/3-Linear/solution/notebook.ipynb b/translations/my/2-Regression/3-Linear/solution/notebook.ipynb
index d1dba85e4..dddea2fb5 100644
--- a/translations/my/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/my/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## ဖရုံသီးဈေးနှုန်းအတွက် လိုင်းနီယာနှင့် ပေါလီနိုမီယာ ရေဂရက်ရှင်း - သင်ခန်းစာ ၃\n",
+ "## Linear and Polynomial Regression for Pumpkin Pricing - Lesson 3\n",
"\n",
- "လိုအပ်သော လိုက်ဘရရီများနှင့် ဒေတာစနစ်ကို load လုပ်ပါ။ ဒေတာကို အောက်ပါအချက်များပါဝင်သော dataframe အဖြစ် ပြောင်းပါ။\n",
+ "လိုအပ်သောစာကြည့်တိုက်များနှင့် ဒေတာကိုတင်ပါ။ ဒေတာကို အချက်အလက်တစ်စစ်အတွက် အပိုင်းအစပါဝင်သည့် dataframe သို့ပြောင်းပါ - \n",
"\n",
- "- bushel အလိုက်ဈေးနှုန်းထားသော ဖရုံသီးများကိုသာ ရယူပါ\n",
- "- ရက်စွဲကို လပြောင်းပါ\n",
- "- ဈေးနှုန်းကို အမြင့်နှင့် အနိမ့်ဈေးနှုန်းများ၏ ပျမ်းမျှတန်ဖိုးအဖြစ်တွက်ချက်ပါ\n",
- "- bushel အရေအတွက်အလိုက် ဈေးနှုန်းကို ပြောင်းလဲပါ\n"
+ "- အထူးသဖြင့် တန်ဖိုးအနေနဲ့ bushel ဖြင့် တန်ဖိုးထားသော pumpkins များကိုသာ ရယူပါ\n",
+ "- ရက်စွဲကို လအဖြစ်ပြောင်းပါ\n",
+ "- တန်ဖိုးကို အပေါ်ဆုံးနှင့် အောက်ဆုံး တန်ဖိုး၏ သော့ချက်ဖြင့်တွက်ချက်ပါ\n",
+ "- တန်ဖိုးကို bushel ပမာဏအတွက်တန်ဖိုးပြောင်းရန် ပြောင်းပါ\n"
]
},
{
@@ -376,7 +376,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "scatterplot သည် အောက်တိုဘာမှ ဒီဇင်ဘာအထိသာ လစဉ်ဒေတာရှိသည်ကို သတိပေးသည်။ ဖော်မြူလာအတိုင်း နိုင်ငံသားများရဲ့ သရုပ်အရာများကို ရေးဆွဲနိုင်ရန် ဒေတာပိုများရန် လိုအပ်နိုင်သည်။\n"
+ ]
},
{
"cell_type": "code",
@@ -445,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "ကြည့်ကြမယ် အကြားဆက်စပ်မှုရှိမရှိ:\n"
+ ]
},
{
"cell_type": "code",
@@ -470,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "အချင်းချင်းဆက်စပ်မှုက တော်တော်ငယ်သလိုပဲ၊ ဒါပေမယ့် အခြားအရေးကြီးတဲ့ဆက်စပ်မှုတစ်ခုရှိနေတယ်လို့ပုံရတယ် - အထက်ပါပုံတွင် စျေးနှုန်းအချက်များမှာ သီးခြားအုပ်စုအချို့ရှိနေသလိုပဲ။ အမျိုးမျိုးသောဖရုံသီးအမျိုးအစားများကို ပြသမယ့်ပုံတစ်ခု ပြုလုပ်ကြည့်ရအောင်:\n"
+ "ဆက်စပ်မှုကတကယ်တော့သေးသေးငယ်ငယ်ပဲပုံရတယ်၊ ဒါပေမယ့်တခြားအရေးကြီးတဲ့ဆက်နွယ်မှုတစ်ခုရှိနေတယ် - အထက်မှာပြထားတဲ့ ဈေးနှုန်းအချက်များမှာ ကွဲပြားတဲ့အုပ်စုအနည်းငယ်ရှိနေတယ်လိုမျိုး ဖော်ပြနေတဲ့အတွက်ပါ။ ယခု မိန့်ခြင်းမှာ ခြစ်ချာအမျိုးအစား အသီးသီးကို ပြချင်တဲ့ ပုံတစ်ပုံ ဖန်တီးကြရအောင် - ။\n"
]
},
{
@@ -533,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "အခုအချိန်အတွက်တော့ အသေးစိတ်အနေနဲ့ **ပိုင်အမျိုးအစား** တစ်မျိုးပဲ အာရုံစိုက်ကြပါစို့။\n"
+ ]
},
{
"cell_type": "code",
@@ -580,9 +586,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### လိုင်းနာ ရေဂရက်ရှင်း\n",
+ "### Linear Regression\n",
"\n",
- "ကျွန်တော်တို့ Scikit Learn ကို အသုံးပြုပြီး လိုင်းနာ ရေဂရက်ရှင်း မော်ဒယ်ကို လေ့ကျင့်သွားမယ်။\n"
+ "ကျွန်ုပ်တို့သည် linear regression မော်ဒယ်ကိုလေ့ကျင့်ရန် Scikit Learn ကိုအသုံးပြုမည်။\n"
]
},
{
@@ -659,7 +665,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "လိုင်း၏ ထောင့်ချိုင့်ကို ရိုးရာအကြောင်းအရာသင့်ရေးဆွဲမှု ကော်ဌာနမှ ဆုံးဖြတ်နိုင်သည်။\n"
+ ]
},
{
"cell_type": "code",
@@ -684,7 +692,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "ကျွန်ုပ်တို့သည် သင်ကြားပြီးသော မော်ဒယ်ကို စျေးနှုန်းခန့်မှန်းရန် အသုံးပြုနိုင်ပါသည်။\n"
+ ]
},
{
"cell_type": "code",
@@ -712,11 +722,11 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### ပိုလီနိုမီယာ ရီဂရက်ရှင်း\n",
+ "### Polynomial Regression\n",
"\n",
- "တစ်ခါတစ်ရံမှာ အင်္ဂါရပ်တွေ (features) နဲ့ ရလဒ်တွေ (results) အကြား ဆက်နွယ်မှုဟာ သဘာဝအတိုင်း မတည့်တည့် ဖြစ်တတ်ပါတယ်။ ဥပမာ၊ ဖရုံစျေးနှုန်းတွေဟာ ဆောင်းရာသီ (လ=1,2) မှာ မြင့်တက်ပြီး နွေရာသီ (လ=5-7) မှာ ကျဆင်းပြီး နောက်ထပ် မြင့်တက်လာနိုင်ပါတယ်။ Linear regression က ဒီဆက်နွယ်မှုကို တိကျစွာ ရှာဖွေမရနိုင်ပါ။\n",
+ "တခါတရံ အင်္ဂါရပ်များနှင့်ရလဒ်များအကြား ဆက်စပ်မှုသည် သဘာဝတရားနည်းဖြင့် သတ်မှတ်ချက်မရှိသော လိုင်းမဟုတ်သောတန်ဖိုးရှိသည်။ ဥပမာအားဖြင့်၊ ဖရဲဖူးစျေးသည် ဆောင်းရာသီ(လ=1,2)တွင် မြင့်မားတတ်ပြီး၊ နွေရာသီ(လ=5-7)အတွင်းကျဆင်းပြီး၊ နောက်ပြန်တက်တတ်သည်။ လိုင်းရိုးညီသော ရောဂါခွဲခြားခြင်းသည် ဤဆက်သွယ်မှုကို တိကျစွာ မတွေ့နိုင်ပါ။\n",
"\n",
- "ဒီလိုအခြေအနေမှာ အပိုအင်္ဂါရပ်တွေ ထည့်သွင်းစဉ်းစားနိုင်ပါတယ်။ ရိုးရှင်းတဲ့နည်းလမ်းကတော့ input အင်္ဂါရပ်တွေကို ပိုလီနိုမီယာ (polynomials) အဖြစ် ပြောင်းလဲပြီး **ပိုလီနိုမီယာ ရီဂရက်ရှင်း** ကို ရလဒ်အဖြစ် ရရှိစေမှာ ဖြစ်ပါတယ်။ Scikit Learn မှာတော့ pipelines ကို အသုံးပြုပြီး ပိုလီနိုမီယာ အင်္ဂါရပ်တွေကို အလိုအလျောက် ကြိုတင်တွက်ချက်နိုင်ပါတယ်။\n"
+ "ဤအခါတွင်၊ အပို အင်္ဂါရပ်များ ထည့်သွင်းရန် စဉ်းစားနိုင်သည်။ ရိုးရာနည်းလမ်းမှာ ထွက်လာသော အင်္ဂါရပ်များမှ ပိုလီနမီယာများကို အသုံးပြုခြင်းဖြစ်ပြီး၊ ၎င်းသည် **polynomial regression** ဖြစ်စေမည်။ Scikit Learn တွင် ရိုးရိုးလိုင်းမဟုတ်သော အင်္ဂါရပ်များကို အလိုအလျောက် ကြိုတင်တွက်ချက်ရန် pipeline များကို အသုံးပြုနိုင်သည်။\n"
]
},
{
@@ -771,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### အမျိုးအစားများကို Encode လုပ်ခြင်း\n",
+ "### ချဲ့ထွင်ခြင်း မျိုးစုံ\n",
"\n",
- "အကောင်းဆုံးကမ္ဘာမှာတော့ တူညီတဲ့မော်ဒယ်တစ်ခုကို အသုံးပြုပြီး ဖရုံမျိုးစုံအတွက် စျေးနှုန်းတွေကို ခန့်မှန်းနိုင်ချင်ပါတယ်။ အမျိုးအစားကို ထည့်သွင်းစဉ်းစားဖို့အတွက် အရင်ဆုံး အမျိုးအစားကို ကိန်းဂဏန်းပုံစံ (numeric form) သို့မဟုတ် **encode** လုပ်ဖို့လိုပါတယ်။ ဒါကို လုပ်နိုင်တဲ့နည်းလမ်းအမျိုးမျိုးရှိပါတယ်-\n",
+ "စံနမူနာကမ္ဘာတွင်၊ ကျွန်ုပ်တို့သည် မော်ဒယ်တစ်ခုတည်းဖြင့် ဖရဲသီးမျိုးစုံအတွက် စျေးနှုန်းများကို ခန့်မှန်းနိုင်ရန်လိုအပ်သည်။ မျိုးစုံကို ထည့်သွင်းစဉ်းစားရန် အရင်ဆုံး၊ ဒါကို ဂဏန်းပုံသို့ ပြောင်းရန်လိုတယ်၊ ဒါမှမဟုတ် **encode** လုပ်ရန်လိုသည်။ သင်ပြုလုပ်နိုင်သော နည်းလမ်း အချို့ရှိသည်မှာ-\n",
"\n",
- "* ရိုးရှင်းတဲ့ ကိန်းဂဏန်း encode လုပ်နည်းက အမျိုးအစားအမျိုးမျိုးကို စာရင်းတစ်ခုထဲမှာ တည်ဆောက်ပြီး၊ အဲ့ဒီစာရင်းထဲက အမျိုးအစားနာမည်ကို အညွှန်း (index) နံပါတ်နဲ့ အစားထိုးပေးမှာဖြစ်ပါတယ်။ ဒါပေမယ့် ဒီနည်းလမ်းက linear regression အတွက် အကောင်းဆုံးမဟုတ်ပါဘူး၊ အကြောင်းကတော့ linear regression က အညွှန်းနံပါတ်ရဲ့ ကိန်းဂဏန်းတန်ဖိုးကို သက်ဆိုင်အောင် သုံးတတ်ပြီး၊ အဲ့ဒီကိန်းဂဏန်းတန်ဖိုးက စျေးနှုန်းနဲ့ တိုက်ရိုက်ဆက်နွယ်မှု မရှိနိုင်တဲ့ အခွင့်အလမ်းများ ရှိနိုင်ပါတယ်။\n",
- "* One-hot encoding ကတော့ `Variety` ကော်လံကို အမျိုးအစားတစ်ခုစီအတွက် ကော်လံ ၄ ခုအဖြစ် အစားထိုးပေးမှာဖြစ်ပြီး၊ အဲ့ဒီကော်လံတွေမှာ အတန်းတစ်ခုဟာ အချို့အမျိုးအစားနဲ့ ကိုက်ညီရင် 1 ဖြစ်ပြီး၊ မဟုတ်ရင် 0 ဖြစ်ပါမယ်။\n",
+ "* မျိုးစုံအမျိုးအစားများ၏ ဇယားတစ်ခု တည်ဆောက်ပြီး၊ အဲ့ဒီဇယားအတွင်း မြောက်နံပါတ်ဖြင့် မျိုးစုံအမည်ကို အစားထိုးပြောင်းလဲပေးသည့် ရိုးရှင်းဂဏန်း encode လုပ်ခြင်း။ ဤနည်းသည် လေးနက်ဂဏန်းပြန်လည်ဆက်စပ်မှု (linear regression) အတွက် အကောင်းဆုံး မဟုတ်ပါ၊ ဟုတ်သောကြောင့် တန်ဖိုးဂဏန်းသည် စျေးနှုန်းနှင့် ဂဏန်းဆိုင်ရာ သက်ဆိုင်မှု မရှိနိုင်ပါ။\n",
+ "* One-hot encoding ဖြစ်သော `Variety` ကော်လံကို များပြားသော ၄ မျိုးခြားထပ် များသောကော်လံ ၄ခုဖြင့် အစားထိုးပြီး၊ သတ္တိကြောင်းသည် ဤမျိုးစုံဖြစ်လျှင် ၁ ပါရှိခြင်းဖြင့်၊ မဟုတ်လျှင် ၀ ပါရှိခြင်း။\n",
"\n",
- "အောက်မှာပါတဲ့ ကုဒ်က အမျိုးအစားတစ်ခုကို one-hot encode လုပ်နိုင်တဲ့ နည်းလမ်းကို ပြသထားပါတယ်-\n"
+ "အောက်ပါ ကုဒ်ကို မျိုးစုံတစ်ခုကို one-hot encode ပြုလုပ်သည့် နည်းလမ်းကို ပြကြသည်-\n"
]
},
{
@@ -934,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### အမျိုးအစားအပေါ် Linear Regression\n",
+ "### Linear Regression on Variety \n",
"\n",
- "ယခုအခါတွင် အထက်ပါကုဒ်တူတူကို အသုံးပြုမည်ဖြစ်ပြီး၊ သို့သော် `DayOfYear` အစား၊ one-hot-encoded အမျိုးအစားကို input အဖြစ် အသုံးပြုမည်:\n"
+ "We will now use the same code as above, but instead of `DayOfYear` we will use our one-hot-encoded variety as input:\n"
]
},
{
@@ -984,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "ကျွန်ုပ်တို့သည် အခြားအင်္ဂါရပ်များကိုလည်း အတူတူပုံစံဖြင့် အသုံးပြုကြည့်နိုင်ပြီး၊ `Month` သို့မဟုတ် `DayOfYear` ကဲ့သို့သော ကိန်းဂဏန်းအင်္ဂါရပ်များနှင့် ပေါင်းစပ်နိုင်ပါသည်။\n"
+ "ကျွန်ုပ်တို့သည် အခြားသော လက္ခဏာများကိုလည်း ထိုနည်းတူစမ်းသပ်နိုင်ပြီး၊ ဥပမာ `Month` သို့မဟုတ် `DayOfYear` ကဲ့သို့သော နံပါတ်ဆိုင်ရာ လက္ခဏာများနှင့် ပေါင်းစပ်အသုံးပြုနိုင်ပါသည်။\n"
]
},
{
@@ -1015,9 +1028,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### ပေါလီနိုမီးယား ပြန်လည်သုံးသပ်မှု\n",
+ "### Polynomial Regression\n",
"\n",
- "ပေါလီနိုမီးယား ပြန်လည်သုံးသပ်မှုကို တစ်ခုတည်းသော hot-encoded အမျိုးအစားအချက်အလက်များနှင့်လည်း အသုံးပြုနိုင်ပါသည်။ ပေါလီနိုမီးယား ပြန်လည်သုံးသပ်မှုကို လေ့ကျင့်ရန် ကုဒ်သည် အထက်တွင် မြင်ခဲ့သည့်အတိုင်း အခြေခံအားဖြင့် တူညီနေပါမည်။\n"
+ "Polynomial regression သည် one-hot-encoded categorical features များနှင့်အတူလည်း အသုံးပြုနိုင်ပါသည်။ polynomial regression ကိုလေ့ကျင့်ရန်ကုဒ်သည် အထက်တွင်မြင်ခဲ့သည့်အတိုင်း ဆင်တူပင်ဖြစ်ပါသည်။\n"
]
},
{
@@ -1064,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**ဝက်ဘ်ဆိုက်မှတ်ချက်**: \nဤစာရွက်စာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှု [Co-op Translator](https://github.com/Azure/co-op-translator) ကို အသုံးပြု၍ ဘာသာပြန်ထားပါသည်။ ကျွန်ုပ်တို့သည် တိကျမှန်ကန်မှုအတွက် ကြိုးစားနေပါသော်လည်း၊ အလိုအလျောက်ဘာသာပြန်မှုများတွင် အမှားများ သို့မဟုတ် မမှန်ကန်မှုများ ပါဝင်နိုင်သည်ကို ကျေးဇူးပြု၍ သတိပြုပါ။ မူရင်းစာရွက်စာတမ်းကို ၎င်း၏ မူလဘာသာစကားဖြင့် အာဏာတည်သောရင်းမြစ်အဖြစ် သတ်မှတ်ရန် လိုအပ်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် လူကောင်းမွန်သော ပရော်ဖက်ရှင်နယ်ဘာသာပြန်ဝန်ဆောင်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှုကို အသုံးပြုခြင်းမှ ဖြစ်ပေါ်လာသော နားလည်မှုမှားများ သို့မဟုတ် အဓိပ္ပါယ်မှားများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မယူပါ။\n"
+ "---\n\n\n**အာမခံချက်** \nဤစာတမ်းကို AI ဘာသာပြန်ဝန်ဆောင်မှုဖြစ်သော [Co-op Translator](https://github.com/Azure/co-op-translator) အသုံးပြုပြီး ဘာသာပြန်ထားပါသည်။ တိကျမှန်ကန်မှုအတွက် ကြိုးပမ်းမည်ဖြစ်ပေမယ့်၊ စက်ရုပ်အမှတ်အသားပြန်ဆိုမှုတွင် အမှားများ သို့မဟုတ် မှားယွင်းချက်များ ပါဝင်နိုင်ပါသည်။ မူလစာတမ်း၏ မိခင်ဘာသာဖြင့်ရေးသားထားသည့် မူရင်းစာတမ်းကို တရားဝင်အတည်ပြု အရင်းအမြစ်အဖြစ်ယူဆသင့်ပါသည်။ အရေးကြီးသော အချက်အလက်များအတွက် ကျွမ်းကျင်သော လူသားဘာသာပြန်မှုကို အကြံပြုပါသည်။ ဤဘာသာပြန်မှု အသုံးပြုမှုမှ ဖြစ်ပေါ်လာသည့် မသိမှတ်မိမှုများ သို့မဟုတ် မှားယွင်းသဘောဆောင်မှုများအတွက် ကျွန်ုပ်တို့သည် တာဝန်မရှိပါ။\n\n"
]
}
],
@@ -1094,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2025-09-06T11:30:43+00:00",
- "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
- "language_code": "my"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2
diff --git a/translations/uk/.co-op-translator.json b/translations/uk/.co-op-translator.json
index c5dd4b842..83f45ccef 100644
--- a/translations/uk/.co-op-translator.json
+++ b/translations/uk/.co-op-translator.json
@@ -36,8 +36,8 @@
"language_code": "uk"
},
"1-Introduction/4-techniques-of-ML/README.md": {
- "original_hash": "9d91f3af3758fdd4569fb410575995ef",
- "translation_date": "2025-09-05T12:44:40+00:00",
+ "original_hash": "84b1715a6be62ef1697351dcc5d7b567",
+ "translation_date": "2026-04-26T19:18:26+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "uk"
},
@@ -90,8 +90,8 @@
"language_code": "uk"
},
"2-Regression/3-Linear/README.md": {
- "original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
- "translation_date": "2026-04-20T20:21:55+00:00",
+ "original_hash": "8b776e731c35b171d316d01d0e7b1369",
+ "translation_date": "2026-04-26T19:18:00+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "uk"
},
@@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "uk"
},
+ "2-Regression/3-Linear/solution/notebook.ipynb": {
+ "original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
+ "translation_date": "2026-04-26T19:14:35+00:00",
+ "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
+ "language_code": "uk"
+ },
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T11:36:28+00:00",
diff --git a/translations/uk/1-Introduction/4-techniques-of-ML/README.md b/translations/uk/1-Introduction/4-techniques-of-ML/README.md
index 7e8e2ba5f..b880d9c91 100644
--- a/translations/uk/1-Introduction/4-techniques-of-ML/README.md
+++ b/translations/uk/1-Introduction/4-techniques-of-ML/README.md
@@ -1,123 +1,125 @@
# Техніки машинного навчання
-Процес створення, використання та підтримки моделей машинного навчання і даних, які вони використовують, значно відрізняється від багатьох інших робочих процесів розробки. У цьому уроці ми розкриємо цей процес і окреслимо основні техніки, які вам потрібно знати. Ви:
+Процес створення, використання та підтримки моделей машинного навчання та даних, які вони використовують, дуже відрізняється від багатьох інших робочих процесів розробки. У цьому уроці ми розкриємо цей процес і окреслимо основні техніки, які вам потрібно знати. Ви:
- Зрозумієте процеси, що лежать в основі машинного навчання на високому рівні.
-- Дослідите базові концепції, такі як "моделі", "прогнози" та "навчальні дані".
+- Дослідите базові поняття, такі як «моделі», «прогнози» та «навчальні дані».
-## [Тест перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
+## [Опитування перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
-[](https://youtu.be/4NGM0U2ZSHU "ML для початківців - Техніки машинного навчання")
+[](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
-> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео, яке пояснює цей урок.
+> 🎥 Натисніть на зображення вище для перегляду короткого відео, яке розбирає цей урок.
## Вступ
-На високому рівні мистецтво створення процесів машинного навчання (ML) складається з кількох етапів:
+На високому рівні миттєва створення процесів машинного навчання (ML) складається з кількох кроків:
-1. **Визначте питання**. Більшість процесів ML починаються з постановки питання, яке не можна вирішити за допомогою простих умовних програм або систем на основі правил. Ці питання часто стосуються прогнозів на основі зібраних даних.
-2. **Зберіть і підготуйте дані**. Щоб відповісти на ваше питання, вам потрібні дані. Якість і, іноді, кількість ваших даних визначатиме, наскільки добре ви зможете відповісти на початкове питання. Візуалізація даних є важливим аспектом цього етапу. Цей етап також включає розділення даних на навчальну та тестову групи для створення моделі.
-3. **Виберіть метод навчання**. Залежно від вашого питання і природи ваших даних, вам потрібно вибрати, як ви хочете навчати модель, щоб вона найкраще відображала ваші дані і робила точні прогнози. Ця частина процесу ML вимагає спеціальних знань і часто значної кількості експериментів.
-4. **Навчіть модель**. Використовуючи ваші навчальні дані, ви будете використовувати різні алгоритми для навчання моделі розпізнавати шаблони в даних. Модель може використовувати внутрішні ваги, які можна налаштувати, щоб надавати перевагу певним частинам даних над іншими для створення кращої моделі.
-5. **Оцініть модель**. Ви використовуєте дані, які модель раніше не бачила (ваші тестові дані), щоб перевірити, як вона працює.
-6. **Налаштування параметрів**. Виходячи з продуктивності вашої моделі, ви можете повторити процес, використовуючи різні параметри або змінні, які контролюють поведінку алгоритмів, що використовуються для навчання моделі.
-7. **Прогнозуйте**. Використовуйте нові вхідні дані, щоб перевірити точність вашої моделі.
+1. **Визначте питання**. Більшість процесів ML починаються з запитання, на яке не можна відповісти простою умовною програмою або системою правил. Ці питання часто пов’язані з прогнозами на базі зібраних даних.
+2. **Збір та підготовка даних**. Щоб відповісти на ваше питання, потрібні дані. Якість і, іноді, кількість ваших даних визначать, наскільки добре ви зможете відповісти на початкове питання. Візуалізація даних є важливим аспектом цього етапу. Цей етап також включає розподіл даних на навчальну та тестову групи для побудови моделі.
+3. **Вибір методу навчання**. Залежно від вашого питання та характеру даних, потрібно вибрати, як ви хочете навчати модель, щоб найкраще відобразити ваші дані та робити точні прогнози. Це частина процесу ML, яка вимагає спеціалізованих знань і, часто, значних експериментів.
+4. **Навчання моделі**. Використовуючи навчальні дані, ви застосуєте різні алгоритми для навчання моделі розпізнавати закономірності в даних. Модель може використовувати внутрішні ваги, які можна налаштовувати, щоб акцентувати певні частини даних для покращення моделі.
+5. **Оцінка моделі**. Ви використовуєте ще не бачені раніше дані (тестові), щоб перевірити, як працює модель.
+6. **Налаштування параметрів**. На основі продуктивності моделі ви можете повторити процес із різними параметрами або змінними, які керують поведінкою алгоритмів навчання.
+7. **Прогнозування**. Використовуйте нові вхідні дані, щоб перевірити точність вашої моделі.
## Яке питання ставити
-Комп'ютери особливо добре вміють знаходити приховані шаблони в даних. Ця здатність дуже корисна для дослідників, які мають питання про певну область, на які не можна легко відповісти, створивши систему на основі умовних правил. Наприклад, у задачі актуарного аналізу дата-сайєнтист може створити вручну правила щодо смертності курців і некурців.
+Комп’ютери особливо добре виявляють приховані закономірності в даних. Ця корисність дуже цінна для дослідників, які мають питання про певну галузь, на які не можна легко відповісти, створивши систему умовних правил. Для прикладу, в актуарних завданнях, дата-сайєнтист міг би виготовити ручні правила щодо смертності курців на відміну від некурців.
-Однак, коли до рівняння додається багато інших змінних, модель ML може виявитися більш ефективною для прогнозування майбутніх показників смертності на основі історії здоров'я. Більш оптимістичний приклад може включати прогнозування погоди на квітень у певному місці на основі даних, які включають широту, довготу, зміни клімату, близькість до океану, шаблони струменевих потоків тощо.
+Однак, коли до рівняння додається багато інших змінних, модель ML може бути ефективнішою для прогнозування майбутніх показників смертності на основі минулої медичної історії. Веселіший приклад — прогнозування погоди на квітень для певного місця з урахуванням широти, довготи, зміни клімату, близькості до океану, закономірностей струменевого течії тощо.
-✅ Ця [презентація](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) про моделі погоди пропонує історичний погляд на використання ML в аналізі погоди.
+✅ Цей [презентаційний матеріал](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) про погодні моделі пропонує історичний погляд на використання ML у погодному аналізі.
-## Завдання перед створенням моделі
+## Завдання перед побудовою
-Перед тим як почати створювати модель, є кілька завдань, які потрібно виконати. Щоб перевірити ваше питання і сформувати гіпотезу на основі прогнозів моделі, вам потрібно визначити і налаштувати кілька елементів.
+Перед тим, як почати будувати модель, потрібно виконати кілька завдань. Щоб перевірити своє питання та сформувати гіпотезу на основі прогнозів моделі, потрібно визначити та налаштувати кілька елементів.
### Дані
-Щоб відповісти на ваше питання з будь-якою впевненістю, вам потрібна достатня кількість даних відповідного типу. На цьому етапі потрібно зробити дві речі:
+Щоб із певною впевненістю відповісти на ваше питання, потрібна достатня кількість відповідних даних. На цьому етапі потрібно зробити дві речі:
-- **Зберіть дані**. З огляду на попередній урок про справедливість в аналізі даних, збирайте дані з обережністю. Звертайте увагу на джерела цих даних, будь-які властиві їм упередження і документуйте їх походження.
-- **Підготуйте дані**. У процесі підготовки даних є кілька кроків. Можливо, вам доведеться об'єднати дані і нормалізувати їх, якщо вони надходять з різних джерел. Ви можете покращити якість і кількість даних різними методами, такими як перетворення рядків у числа (як ми робимо в [Кластеризації](../../5-Clustering/1-Visualize/README.md)). Ви також можете генерувати нові дані на основі оригінальних (як ми робимо в [Класифікації](../../4-Classification/1-Introduction/README.md)). Ви можете очищати і редагувати дані (як ми будемо робити перед уроком [Веб-додаток](../../3-Web-App/README.md)). Нарешті, можливо, вам доведеться рандомізувати і перемішати їх залежно від ваших технік навчання.
+- **Зібрати дані**. Пам’ятайте про попередній урок щодо справедливості в аналізі даних — збирайте дані ретельно. Усвідомлюйте джерела цих даних, існуючі упередження та документуйте походження.
+- **Підготувати дані**. Процес підготовки даних складається з кількох кроків. Можливо, потрібно об’єднати та нормалізувати дані, якщо вони походять з різних джерел. Ви можете покращити якість і кількість даних різними методами, наприклад, перетворювати рядки у числа (як у [Кластеризації](../../5-Clustering/1-Visualize/README.md)). Можна також генерувати нові дані на основі оригіналу (як у [Класифікації](../../4-Classification/1-Introduction/README.md)). Можна очищувати та редагувати дані (як ми робитимемо перед уроком [Web App](../../3-Web-App/README.md)). Нарешті, можливо, потрібно їх перемішати або рандомізувати залежно від вашої техніки навчання.
-✅ Після збору і обробки даних, приділіть час, щоб перевірити, чи їх структура дозволить вам вирішити ваше заплановане питання. Можливо, дані не будуть добре працювати у вашій задачі, як ми виявляємо в наших уроках [Кластеризації](../../5-Clustering/1-Visualize/README.md)!
+✅ Після збору та обробки даних приділіть час, щоб оцінити, чи їх форма дозволить вам відповісти на поставлене питання. Можливо, дані не будуть відповідними для вашої задачі, як ми дізнаємося у наших уроках із [Кластеризації](../../5-Clustering/1-Visualize/README.md)!
-### Ознаки і ціль
+### Ознаки та ціль
-[Ознака](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — це вимірювана властивість ваших даних. У багатьох наборах даних вона виражається як заголовок стовпця, наприклад, "дата", "розмір" або "колір". Змінна ознаки, зазвичай представлена як `X` у коді, представляє вхідну змінну, яка буде використовуватися для навчання моделі.
+[Ознака](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) — це вимірювана властивість ваших даних. У багатьох наборах даних вона виражена у вигляді заголовка стовпця, наприклад 'дата', 'розмір' або 'колір'. Ваша змінна ознаки, зазвичай позначена `X` в коді, — це вхідна змінна, яка використовується для навчання моделі.
-Ціль — це те, що ви намагаєтеся передбачити. Ціль, зазвичай представлена як `y` у коді, представляє відповідь на питання, яке ви намагаєтеся поставити до ваших даних: у грудні, якого **кольору** гарбузи будуть найдешевшими? У Сан-Франциско, які райони матимуть найкращу **ціну** на нерухомість? Іноді ціль також називають атрибутом мітки.
+Ціль — це те, що ви намагаєтеся спрогнозувати. Ціль, зазвичай позначена `y` у коді, — це відповідь на питання, яке ви ставите своїм даним: у грудні, який **колір** гарбузів буде найдешевший? в Сан-Франциско, які райони матимуть найкращу **ціну** на нерухомість? Іноді ціль також називають атрибутом мітки.
### Вибір змінної ознаки
-🎓 **Вибір ознак і витяг ознак** Як зрозуміти, яку змінну вибрати при створенні моделі? Ви, ймовірно, пройдете процес вибору ознак або витягу ознак, щоб вибрати правильні змінні для найкращої моделі. Однак це не одне й те саме: "Витяг ознак створює нові ознаки з функцій оригінальних ознак, тоді як вибір ознак повертає підмножину ознак." ([джерело](https://wikipedia.org/wiki/Feature_selection))
+🎓 **Вибір ознак та вилучення ознак** Як зрозуміти, яку змінну обрати для побудови моделі? Ймовірно, ви пройдете процес вибору або вилучення ознак, щоб вибрати правильні змінні для максимально ефективної моделі. Проте це не те саме: "Вилучення ознак створює нові ознаки з функцій початкових ознак, тоді як вибір ознак повертає підмножину початкових ознак." ([джерело](https://wikipedia.org/wiki/Feature_selection))
-### Візуалізація даних
+### Візуалізуйте свої дані
-Важливим аспектом інструментарію дата-сайєнтиста є здатність візуалізувати дані за допомогою кількох чудових бібліотек, таких як Seaborn або MatPlotLib. Візуалізація даних може дозволити вам виявити приховані кореляції, які ви можете використати. Ваші візуалізації також можуть допомогти вам виявити упередження або незбалансовані дані (як ми виявляємо в [Класифікації](../../4-Classification/2-Classifiers-1/README.md)).
+Важливим інструментом дата-сайєнтиста є можливість візуалізації даних за допомогою чудових бібліотек, таких як Seaborn або MatPlotLib. Відображення даних у вигляді графіків може допомогти виявити приховані кореляції, які можна використати. Візуалізації також можуть допомогти виявити упередженість або дисбаланс у даних (як ми бачимо у [Класифікації](../../4-Classification/2-Classifiers-1/README.md)).
-### Розділення набору даних
+### Розділіть ваш набір даних
-Перед навчанням вам потрібно розділити ваш набір даних на дві або більше частини нерівного розміру, які все ще добре представляють дані.
+Перед навчанням вам потрібно розділити набір даних на дві чи більше частин нерівного розміру, які при цьому добре відображають дані.
-- **Навчання**. Ця частина набору даних використовується для навчання моделі. Цей набір складає більшість оригінального набору даних.
-- **Тестування**. Тестовий набір даних — це незалежна група даних, часто зібрана з оригінальних даних, яку ви використовуєте для підтвердження продуктивності створеної моделі.
-- **Валідація**. Набір для валідації — це менша незалежна група прикладів, яку ви використовуєте для налаштування гіперпараметрів або архітектури моделі, щоб покращити її. Залежно від розміру ваших даних і питання, яке ви ставите, вам може не знадобитися створювати цей третій набір (як ми зазначаємо в [Прогнозуванні часових рядів](../../7-TimeSeries/1-Introduction/README.md)).
+- **Навчання**. Цю частину даних використовують для навчання моделі. Вона становить більшість оригінального набору.
+- **Тестування**. Тестовий набір — це незалежна група даних, часто отримана з оригіналу, яку використовують для перевірки продуктивності побудованої моделі.
+- **Валідація**. Валідаційний набір — це менша незалежна група прикладів, яку використовують для налаштування гіперпараметрів або архітектури моделі задля її покращення. Залежно від розміру даних та поставленого питання, третій набір може бути не потрібен (як ми зазначаємо у [Прогнозуванні часових рядів](../../7-TimeSeries/1-Introduction/README.md)).
-## Створення моделі
+## Побудова моделі
-Використовуючи ваші навчальні дані, ваша мета — створити модель, або статистичне представлення ваших даних, використовуючи різні алгоритми для її **навчання**. Навчання моделі дозволяє їй робити припущення про виявлені шаблони, перевіряти їх і приймати або відхиляти.
+Використовуючи навчальні дані, ваша мета — побудувати модель, або статистичне уявлення ваших даних, застосовуючи різні алгоритми для **тренування** її. Навчання моделі дає їй змогу аналізувати дані та робити припущення про виявлені закономірності, підтверджує їх та приймає або відхиляє.
-### Вибір методу навчання
+### Визначте метод навчання
-Залежно від вашого питання і природи ваших даних, ви виберете метод для навчання. Переглядаючи [документацію Scikit-learn](https://scikit-learn.org/stable/user_guide.html) — яку ми використовуємо в цьому курсі — ви можете дослідити багато способів навчання моделі. Залежно від вашого досвіду, вам, можливо, доведеться спробувати кілька різних методів, щоб створити найкращу модель. Ви, ймовірно, пройдете процес, під час якого дата-сайєнтисти оцінюють продуктивність моделі, подаючи їй невідомі дані, перевіряючи точність, упередження та інші проблеми, що знижують якість, і вибираючи найбільш відповідний метод навчання для поставленої задачі.
+Залежно від вашого питання та природи даних, ви оберете метод для навчання. Переглядаючи [документацію Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - яку ми використовуємо в цьому курсі - ви знайдете багато способів навчання моделей. Залежно від вашого досвіду, можливо, доведеться спробувати кілька різних методів, щоб побудувати найкращу модель. Зазвичай дата-сайєнтисти проходять процес оцінки якості моделі, подаючи їй нові дані, оцінюючи точність, упередженість та інші проблеми, що знижують якість, і вибирають найбільш відповідний метод навчання.
### Навчання моделі
-Озброївшись вашими навчальними даними, ви готові "підганяти" їх для створення моделі. Ви помітите, що в багатьох бібліотеках ML ви знайдете код 'model.fit' — саме в цей момент ви передаєте змінну ознаки як масив значень (зазвичай 'X') і змінну цілі (зазвичай 'y').
+Маючи навчальні дані, ви готові 'натренувати' модель. Ви побачите у багатьох ML бібліотеках код 'model.fit' — саме в цей момент передаються значення змінної ознаки масивом (зазвичай 'X') та цільової змінної (зазвичай 'y').
### Оцінка моделі
-Після завершення процесу навчання (для навчання великої моделі може знадобитися багато ітерацій або "епох"), ви зможете оцінити якість моделі, використовуючи тестові дані для оцінки її продуктивності. Ці дані є підмножиною оригінальних даних, які модель раніше не аналізувала. Ви можете вивести таблицю метрик про якість вашої моделі.
+Після завершення навчання (це може зайняти багато ітерацій, або 'епох', для великої моделі) ви зможете оцінити якість моделі, використавши тестові дані для вимірювання її продуктивності. Ці дані — підмножина оригінальних, які модель раніше не обробляла. Ви можете вивести таблицю з метриками щодо якості моделі.
🎓 **Підгонка моделі**
-У контексті машинного навчання підгонка моделі стосується точності функції моделі, коли вона намагається аналізувати дані, з якими вона не знайома.
+У контексті машинного навчання підгонка моделі означає точність функції моделі при спробі аналізувати незнайомі для неї дані.
-🎓 **Недопідгонка** і **перепідгонка** — це поширені проблеми, які знижують якість моделі, коли модель підганяється або недостатньо добре, або занадто добре. Це призводить до того, що модель робить прогнози або занадто тісно пов'язані, або занадто слабо пов'язані з її навчальними даними. Перепідгонка моделі передбачає навчальні дані занадто добре, оскільки вона занадто добре вивчила деталі і шум даних. Недопідгонка моделі є неточною, оскільки вона не може точно аналізувати ні свої навчальні дані, ні дані, які вона ще не "бачила".
+🎓 **Недонавчання** і **перенавчання** — це поширені проблеми, які погіршують якість моделі: модель або погано навчається, або занадто добре. Це призводить до дуже точних або, навпаки, надто загальних прогнозів щодо тренувальних даних. Модель із перенавчанням занадто добре слідкує за деталями та шумом тренувальних даних. Модель із недонавчанням є неточною, бо вона не може ні точно проаналізувати тренувальні, ні нові дані.
-
+
> Інфографіка від [Jen Looper](https://twitter.com/jenlooper)
## Налаштування параметрів
-Після завершення початкового навчання спостерігайте за якістю моделі і розгляньте можливість її покращення шляхом налаштування її "гіперпараметрів". Дізнайтеся більше про процес [у документації](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
+Після початкового навчання спостерігайте за якістю моделі і подумайте про можливість її покращення, налаштовуючи її «гіперпараметри». Детальніше про цей процес читайте [у документації](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## Прогнозування
-Це момент, коли ви можете використовувати абсолютно нові дані, щоб перевірити точність вашої моделі. У "прикладному" середовищі ML, де ви створюєте веб-ресурси для використання моделі в продакшені, цей процес може включати збір даних від користувача (наприклад, натискання кнопки), щоб встановити змінну і передати її моделі для інференсу або оцінки.
+Ось момент, коли ви можете використати абсолютно нові дані для перевірки точності вашої моделі. У прикладному середовищі ML, коли ви створюєте веб-ресурси для використання моделі в продакшені, цей процес може означати збір вводу користувача (наприклад, натискання кнопки) для встановлення змінної і надсилання її в модель для висновку або оцінки.
-У цих уроках ви дізнаєтеся, як використовувати ці кроки для підготовки, створення, тестування, оцінки і прогнозування — всі дії дата-сайєнтиста і більше, коли ви просуваєтеся у своїй подорожі, щоб стати "фул-стек" ML-інженером.
+У цих уроках ви дізнаєтеся, як використати ці кроки для підготовки, побудови, тестування, оцінки та прогнозування — всі дії, притаманні дата-сайєнтисту, і не тільки, у вашій подорожі до становлення «повноцінним» ML-інженером.
---
-## 🚀Завдання
+## 🚀Виклик
-Намалюйте блок-схему, яка відображає кроки практикуючого ML. Де ви бачите себе зараз у процесі? Де, на вашу думку, ви зіткнетеся з труднощами? Що здається вам легким?
+Намалюйте схему кроків практикуючого ML-фахівця. Де ви зараз у цьому процесі? Де, на вашу думку, можуть виникнути труднощі? Що вам здається легким?
-## [Тест після лекції](https://ff-quizzes.netlify.app/en/ml/)
+## [Опитування після лекції](https://ff-quizzes.netlify.app/en/ml/)
-## Огляд і самостійне навчання
+## Огляд та самостійне вивчення
-Шукайте в інтернеті інтерв'ю з дата-сайєнтистами, які обговорюють свою щоденну роботу. Ось [одне](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
+Пошукайте в інтернеті інтерв’ю з дата-сайєнтистами, які говорять про свою щоденну роботу. Ось [одне](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## Завдання
-[Інтерв'ю з дата-сайєнтистом](assignment.md)
+[Інтерв’ю з дата-сайєнтистом](assignment.md)
---
-**Відмова від відповідальності**:
-Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, звертаємо вашу увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний переклад людиною. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
\ No newline at end of file
+
+**Відмова від відповідальності**:
+Цей документ було перекладено за допомогою сервісу штучного інтелекту [Co-op Translator](https://github.com/Azure/co-op-translator). Хоч ми й прагнемо до точності, будь ласка, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для важливої інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння або неправильне тлумачення, що виникли внаслідок використання цього перекладу.
+
\ No newline at end of file
diff --git a/translations/uk/2-Regression/3-Linear/README.md b/translations/uk/2-Regression/3-Linear/README.md
index b87620cca..3a93deae2 100644
--- a/translations/uk/2-Regression/3-Linear/README.md
+++ b/translations/uk/2-Regression/3-Linear/README.md
@@ -1,138 +1,136 @@
-# Побудова регресійної моделі з використанням Scikit-learn: регресія чотирма способами
+# Побудова регресійної моделі за допомогою Scikit-learn: регресія чотирма способами
## Примітка для початківців
-Лінійна регресія використовується, коли ми хочемо передбачити **числове значення** (наприклад, ціну будинку, температуру або продажі).
-Вона працює, знаходячи пряму, яка найкраще відображає зв’язок між вхідними ознаками й виходом.
+Лінійна регресія використовується, коли ми хочемо передбачити **числове значення** (наприклад, ціну будинку, температуру чи продажі).
+Вона працює шляхом пошуку прямої лінії, яка найкраще описує зв’язок між вхідними ознаками та результатом.
-У цьому уроці ми зосереджуємося на розумінні концепції перед тим, як вивчати більш просунуті методи регресії.
-
+У цьому уроці ми зосереджуємося на розумінні концепції перед тим, як вивчати більш просунуті методи регресії.
+
> Інфографіка від [Dasani Madipalli](https://twitter.com/dasani_decoded)
+## [Передлекційний тест](https://ff-quizzes.netlify.app/en/ml/)
-## [Перевірка знань перед лекцією](https://ff-quizzes.netlify.app/en/ml/)
-
-> ### [Цей урок доступний на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
-
+> ### [Цей урок доступний також на R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Вступ
-До цього моменту ви досліджували, що таке регресія, на прикладі даних про ціни на гарбузи, які ми використаємо протягом цього уроку. Ви також візуалізували дані за допомогою Matplotlib.
+Поки що ви ознайомилися з тим, що таке регресія на прикладі зібраних даних із датасету цін на гарбуза, який ми використовуватимемо протягом усього уроку. Ви також візуалізували їх за допомогою Matplotlib.
-Тепер ви готові заглибитися в регресію для машинного навчання (ML). Візуалізація допомагає зрозуміти дані, але справжня сила машинного навчання полягає у _навчанні моделей_. Моделі тренуються на історичних даних, щоб автоматично вловлювати залежності в даних і дозволяють робити прогнози для нових даних, які модель раніше не бачила.
+Тепер ви готові зануритися глибше в регресію для 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 DataFrame і заповнили його частиною оригінального набору даних, стандартизуючи ціни за бушель. Проте таким чином вдалося зібрати лише близько 400 точок даних і тільки за осінні місяці.
+У попередньому уроці ви створили Pandas DataFrame і заповнили його частиною вихідного датасету, стандартизуючи ціну за бушель. Проте таким чином вдалося зібрати близько 400 точок даних лише за осінні місяці.
-Ознайомтеся з даними, які ми завантажили у супровідному ноутбуці цього уроку. Дані завантажені, і початковий розсіювальний графік відображає дані за місяцями. Можливо, ми зможемо дізнатися більше про природу даних, очистивши їх більш ретельно.
+Погляньте на дані, які ми попередньо завантажили у ноутбуці до цього уроку. Дані вже завантажені, і початковий scatterplot показує місячні дані. Можливо, ми зможемо краще зрозуміти природу цих даних, якщо їх більше почистимо.
## Лінійна регресійна лінія
-Як ви дізналися в уроці 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. За допомогою розсіювального графіку ви можете швидко побачити цей коефіцієнт. Якщо точки показані впорядковано уздовж лінії, кореляція висока, якщо розкидані хаотично — кореляція низька.
+Ще один термін, який варто знати, — це **коефіцієнт кореляції** між змінними X і Y. Використовуючи scatterplot, ви швидко побачите цей коефіцієнт. Точки, розкидані впорядковано вздовж лінії, мають високу кореляцію, а точки, розкидані хаотично, — низьку.
+
+Гарна модель лінійної регресії матиме високий коефіцієнт кореляції (ближчий до 1, а не до 0) з використанням методу найменших квадратів з лінією регресії.
+
+✅ Запустіть ноутбук для цього уроку та подивіться на scatterplot між місяцем і ціною. Чи здається вам, що між місяцем та ціною гарбузів є висока чи низька кореляція, з огляду на вашу візуальну інтерпретацію цього графіку? Чи зміниться це, якщо замінити `Month` більш точним показником, наприклад, *день року* (кількість днів з початку року)?
-Добрий лінійний регресійний модель — це та, у якої коефіцієнт кореляції високо (ближче до 1, ніж до 0) і з використанням методу найменших квадратів із регресійною лінією.
+У коді нижче ми припускаємо, що дані очищені, і одержали датафрейм `new_pumpkins`, схожий на такий:
-✅ Запустіть ноутбук, що супроводжує цей урок, та подивіться на розсіювальний графік "Місяць - Ціна". Чи виглядає, що дані, що зв’язують місяць і ціну продажу гарбузів, мають високу чи низьку кореляцію згідно з вашим візуальним аналізом графіка? Чи зміниться це, якщо використати більш детальний показник замість `Month`, наприклад, *день року* (число днів від початку року)?
+ID | Місяць | ДеньРоку | Сорт | Місто | Упаковка | Мінімальна ціна | Максимальна ціна | Ціна
+---|--------|----------|-------|-------|-----------|-----------------|------------------|-------
+70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 15.0 | 15.0 | 13.636364
+71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 18.0 | 18.0 | 16.363636
+72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 18.0 | 18.0 | 16.363636
+73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 17.0 | 17.0 | 15.454545
+74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 бушеля картонна коробка | 15.0 | 15.0 | 13.636364
-У наведеному нижче коді ми припускаємо, що дані були очищені і отримано DataFrame з назвою `new_pumpkins`, схожий на наступний:
+> Код для очищення даних доступний у файлі [`notebook.ipynb`](notebook.ipynb). Ми виконали такі ж кроки очищення, як і в попередньому уроці, а колонку `DayOfYear` обчислили за формулою:
-ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
----|-------|-----------|---------|------|---------|-----------|------------|---------
-70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
-72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
-73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
-74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
-
-> Код для очищення даних доступний у файлі [`notebook.ipynb`](notebook.ipynb). Ми виконали ті самі кроки очищення, що й у попередньому уроці, і обчислили стовпець `DayOfYear` за допомогою такого виразу:
-
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
-
-Тепер, коли ви маєте уявлення про математику лінійної регресії, давайте створимо регресійну модель, щоб побачити, чи можемо ми передбачити, яка упаковка гарбузів матиме найкращі ціни. Хтось, хто купує гарбузи для осіннього ярмарку, може хотіти цю інформацію, щоб оптимізувати свої покупки.
+
+Тепер, коли ви маєте базове розуміння математики лінійної регресії, давайте створимо модель регресії, щоб спробувати передбачити, яка упаковка гарбузів матиме найкращі ціни. Хтось, хто купує гарбузи для святкової ділянки, може зацікавитись цією інформацією для оптимізації покупки.
## Пошук кореляції
[](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
-> 🎥 Натисніть на зображення вище, щоб переглянути коротке відео про кореляцію.
+> 🎥 Натисніть на зображення вище для короткого відеоогляду кореляції.
-Із попереднього уроку ви, мабуть, бачили, що середня ціна по місяцях виглядає так:
+З попереднього уроку ви, мабуть, бачили, що середня ціна по місяцях виглядає так:
-Це підказує, що повинна бути певна кореляція, і ми можемо спробувати навчити модель лінійної регресії для прогнозу зв’язку між `Month` і `Price`, або між `DayOfYear` і `Price`. Ось розсіювальний графік для останнього зв’язку:
+Це натякає на існування певної кореляції, і ми можемо спробувати натренувати модель лінійної регресії для передбачення зв’язку між `Month` і `Price` або між `DayOfYear` і `Price`. Ось scatter plot для останньої залежності:
-Поглянемо, чи є кореляція, використовуючи функцію `corr`:
+Перевіримо кореляцію за допомогою функції `corr`:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
-
-Здається, кореляція досить мала: -0.15 за `Month` та -0.17 за `DayOfMonth`, але може бути ще один важливий зв’язок. Виглядає, що існують різні кластери цін відповідно до сортів гарбуза. Щоб підтвердити це припущення, побудуємо графік, де кожен сорт гарбузів виділено іншим кольором. Передаючи параметр `ax` в функцію `scatter`, ми можемо відобразити всі точки на одному графіку:
+
+Кореляція невелика: -0,15 за `Month` і -0,17 за `DayOfYear`, але можлива інша важлива залежність. Схоже, що різні кластери цін відповідають різним сортам гарбуза. Щоб підтвердити цю гіпотезу, відобразимо кожну категорію гарбузів різними кольорами. Передаючи параметр `ax` у функцію `scatter`, ми можемо нанести всі точки на один графік:
```python
ax=None
@@ -141,76 +139,75 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
-
+
-Наше дослідження свідчить про те, що сорт має більший вплив на загальну ціну, ніж фактична дата продажу. Це можна бачити на стовпчиковій діаграмі:
+Наша перевірка показує, що сорт впливає сильніше на загальну ціну, ніж дата продажу. Це підтверджується графіком:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
-
+
-Зараз зосередимося лише на одному сорті гарбуза, 'pie type', і подивимось, який вплив має дата на ціну:
+Наразі зосередимось лише на одному сорті гарбузів — 'pie type' — і подивимось, як дата впливає на ціну:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
-
-Якщо тепер порахувати кореляцію між `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 for beginners - Linear and Polynomial Regression using Scikit-learn")
-> 🎥 Натисніть на зображення вище, щоб переглянути коротке відеоогляд лінійної та поліноміальної регресії.
+> 🎥 Натисніть на зображення вище для короткого відеоогляду лінійної та поліноміальної регресії.
-Для навчання моделі лінійної регресії ми використаємо бібліотеку **Scikit-learn**.
+Для навчання нашої моделі лінійної регресії використаємо бібліотеку **Scikit-learn**.
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
-
-Почнемо з розділення вхідних значень (ознаки) і очікуваного результату (мітки) у окремі масиви numpy:
+
+Почнемо з розділення вхідних значень (ознаки) та очікуваних результатів (мітки) у окремі масиви numpy:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
-
-> Зверніть увагу, що довелося застосувати `reshape` до вхідних даних, щоб пакет лінійної регресії правильно їх сприйняв. Лінійна регресія очікує 2D-масив на вході, де кожен рядок — це вектор вхідних ознак. В нашому випадку, оскільки вхідна ознака лише одна, потрібен масив розміру N×1, де N — розмір набору даних.
-Далі потрібно розділити дані на навчальний (train) та тестовий (test) набори, щоб можна було перевірити модель після навчання:
+> Зверніть увагу, що нам довелося застосувати `reshape` до вхідних даних, щоб пакет Linear Regression коректно їх зрозумів. Лінійна регресія очікує 2-вимірний масив, де кожен рядок — це вектор вхідних ознак. У нашому випадку, маючи лише одну ознаку, потрібен масив розміру N×1, де N — розмір датасету.
+
+Далі потрібно розділити дані на тренувальний і тестовий набори, щоб перевірити модель після навчання:
```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`, що вказує на ціну на початку року.
-Щоб побачити, наскільки точна наша модель, ми можемо передбачити ціни на тестовому наборі даних, а потім виміряти, наскільки близькі наші прогнози до очікуваних значень. Це можна зробити за допомогою метрики кореня середньоквадратичної помилки (RMSE), яка є коренем середнього значення всіх квадратів різниці між очікуваним і передбаченим значеннями.
+Об'єкт `LinearRegression` після виконання методу `fit` містить усі коефіцієнти регресії, до яких можна звернутися за допомогою властивості `.coef_`. У нашому випадку є лише один коефіцієнт, який має бути близько до `-0.017`. Це означає, що ціни, схоже, трохи падають із часом, але не надто сильно, приблизно на 2 центи на день. Ми також можемо отримати точку перетину регресії з віссю Y за допомогою `lin_reg.intercept_` – вона буде близько до `21` у нашому випадку, що вказує на ціну на початку року.
+
+Щоб побачити, наскільки точна наша модель, ми можемо передбачити ціни на тестовому наборі даних, а потім виміряти, наскільки близькі наші прогнози до очікуваних значень. Це можна зробити за допомогою метрики кореня середнього квадратичного відхилення (RMSE), яка є коренем з середнього значення усіх квадратів різниць між очікуваним та передбаченим значеннями.
```python
pred = lin_reg.predict(X_test)
@@ -219,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
-Наша похибка, здається, близько 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)
@@ -238,17 +235,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) для поєднання різних етапів обробки даних. **Пайплайн** — це ланцюжок **оцінювачів**. У нашому випадку ми створимо пайплайн, який спочатку додає поліноміальні ознаки до моделі, а потім навчає регресію:
```python
from sklearn.preprocessing import PolynomialFeatures
@@ -259,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
-Використання `PolynomialFeatures(2)` означає, що ми включимо всі поліноми другого ступеня із вхідних даних. У нашому випадку це просто `DayOfYear`2, але якщо є дві вхідні змінні X і Y, додадуться X2, XY і Y2. Ми також можемо використати поліноми вищого ступеня, якщо хочемо.
+Використання `PolynomialFeatures(2)` означає, що ми включимо всі поліноми другого ступеня з вхідних даних. У нашому випадку це просто `DayOfYear`2, але, якщо є дві вхідні змінні X та Y, це додасть X2, XY і Y2. Ми також можемо використати поліноми вищого ступеня, якщо хочемо.
+
+Пайплайни можна використовувати так само, як і об'єкт `LinearRegression`, тобто ми можемо `fit` пайплайн, а потім застосовувати `predict` для отримання результатів прогнозу:
+
+```python
+pred = pipeline.predict(X_test)
+
+rmse = np.sqrt(mean_squared_error(y_test,pred))
+print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
+
+score = pipeline.score(X_train,y_train)
+print('Model determination: ', score)
+```
+
+Для побудови гладкої апроксимуючої кривої ми використовуємо `np.linspace` для створення рівномірного діапазону вхідних значень, замість прямого побудови по неупорядкованих тестових даних (що дало б зубчасту лінію):
+
+```python
+X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
+y_range = pipeline.predict(X_range)
+
+plt.scatter(X_test, y_test)
+plt.plot(X_range, y_range)
+```
-Pipeline можна використовувати так само, як і оригінальний об'єкт `LinearRegression`, тобто ми можемо `fit` pipeline, а потім викликати `predict` для отримання прогнозів. Ось графік, що показує тестові дані та криву апроксимації:
+Ось графік з тестовими даними та апроксимуючою кривою:
-За допомогою поліноміальної регресії ми можемо отримати дещо нижче MSE та вищий коефіцієнт детермінації, але не суттєво. Потрібно враховувати інші ознаки!
+Використовуючи поліноміальну регресію, ми можемо отримати трохи нижче значення RMSE і вищий коефіцієнт детермінації, але не суттєво. Потрібно враховувати інші ознаки!
-> Ви бачите, що мінімальні ціни на гарбузи спостерігаються десь біля Геловіну. Як це можна пояснити?
+> Ви можете побачити, що мінімальні ціни на гарбузи спостерігаються приблизно наприкінці жовтня. Як ви це поясните?
-🎃 Вітаємо, ви щойно створили модель, яка може допомогти передбачити ціну гарбузів для пирогів. Ймовірно, ви можете повторити цю процедуру для всіх типів гарбузів, але це було б нудно. Давайте навчимося враховувати сорт гарбуза в нашій моделі!
+🎃 Вітаємо, ви щойно створили модель, яка допоможе передбачати ціну гарбузів для пирогів. Ви, мабуть, можете повторити ту саму процедуру для всіх типів гарбузів, але це буде нудно. Тепер навчаємося враховувати сорт гарбуза у нашій моделі!
## Категоріальні ознаки
-В ідеальному світі ми хочемо передбачати ціни для різних сортів гарбузів за допомогою однієї моделі. Однак стовпець `Variety` дещо відрізняється від стовпців на кшталт `Month`, тому що містить нечислові значення. Такі стовпці називаються **категоріальними**.
+В ідеалі ми хочемо мати змогу передбачати ціни для різних сортів гарбуза, використовуючи одну й ту саму модель. Однак стовпець `Variety` дещо відрізняється від таких, як `Month`, бо містить нечислові значення. Такі стовпці називаються **категоріальними**.
-[](https://youtu.be/DYGliioIAE0 "ML для початківців - передбачення з категоріальними ознаками за допомогою лінійної регресії")
+[](https://youtu.be/DYGliioIAE0 "ML для початківців - Передбачення категоріальних ознак з лінійною регресією")
-> 🎥 Натисніть на зображення вище для короткого відеоогляду використання категоріальних ознак.
+> 🎥 Клікніть на зображення вище, щоб переглянути короткий відеоогляд використання категоріальних ознак.
Тут ви бачите, як середня ціна залежить від сорту:
-Щоб врахувати сорт, спочатку потрібно перетворити його у числову форму, або **закодувати**. Є кілька способів це зробити:
+Щоб врахувати сорт, спершу потрібно перетворити його у числову форму, або **закодувати**. Є кілька способів це зробити:
-* Просте **числове кодування** створює таблицю різних сортів, а потім замінює назву сорту індексом у цій таблиці. Це не найкраща ідея для лінійної регресії, оскільки регресія бере фактичне числове значення індексу і додає його до результату, множачи на коефіцієнт. У нашому випадку залежність між номером індексу і ціною очевидно нелінійна, навіть якщо впорядкувати індекси певним чином.
-* **One-hot кодування** замінить стовпець `Variety` на 4 різні стовпці — по одному для кожного сорту. Кожен стовпець міститиме `1`, якщо відповідний рядок — це даний сорт, і `0` інакше. Це означає, що у лінійній регресії буде чотири коефіцієнти, по одному для кожного сорту гарбузів, які відповідають за "початкову ціну" (або радше "додаткову ціну") для цього сорту.
+* Просте **числове кодування** створює таблицю з різними сортами, а потім замінює назву сорту індексом із цієї таблиці. Це не найкраща ідея для лінійної регресії, оскільки регресія враховує саме числове значення індексу і додає його до результату, помноженого на якийсь коефіцієнт. У нашому випадку зв’язок між номером індексу та ціною явно нелінійний, навіть якщо ми впевнимося, що індекси впорядковані певним чином.
+* **One-hot кодування** замінить стовпець `Variety` на 4 окремі стовпці, по одному для кожного сорту. Кожен стовпець матиме `1`, якщо відповідний рядок відноситься до цього сорту, і `0` інакше. Це означає, що буде чотири коефіцієнти у лінійній регресії, по одному для кожного сорту гарбуза, які відповідальні за "початкову ціну" (або скоріше "додаткову ціну") для цього сорту.
-Код нижче показує, як можна виконати one-hot кодування сорту:
+Код нижче показує, як можна застосувати one-hot кодування для сорту:
```python
pd.get_dummies(new_pumpkins['Variety'])
@@ -305,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
-Щоб навчити лінійну регресію з 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']) \
@@ -322,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
-Тут ми також враховуємо `City` і тип упаковки `Package`, що дає нам MSE = 2.84 (10%) і коефіцієнт детермінації 0.94!
+Тут ми також враховуємо `City` і тип `Package`, що дає RMSE 2.84 (10.5%) і детермінацію 0.94!
-## Підсумовуємо
+## Підсумовуючі результати
-Щоб створити найкращу модель, ми можемо використовувати комбіновані (one-hot закодовані категоріальні + числові) дані з вищенаведеного прикладу разом з поліноміальною регресією. Ось повний код для вашої зручності:
+Щоб отримати найкращу модель, можна використати комбіновані (one-hot закодовані категоріальні + числові) дані з попереднього прикладу разом із поліноміальною регресією. Ось повний код для зручності:
```python
-# налаштувати навчальні дані
+# налаштувати тренувальні дані
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
-# зробити розподіл на навчальну та тестову вибірки
+# зробити розподіл на тренувальні та тестові дані
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
-# налаштувати та навчити конвеєр
+# налаштувати і натренувати конвеєр
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# передбачити результати для тестових даних
pred = pipeline.predict(X_test)
-# обчислити середньоквадратичну помилку та коефіцієнт детермінації
-mse = np.sqrt(mean_squared_error(y_test,pred))
-print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
+# обчислити RMSE та коефіцієнт детермінації
+rmse = mean_squared_error(y_test, pred, squared=False)
+print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
-Це має дати нам найкращий коефіцієнт детермінації майже 97% і MSE=2.23 (~8% похибка прогнозу).
+Це має дати нам найкращий коефіцієнт детермінації майже 97% та RMSE=2.23 (~8% похибки прогнозу).
-| Модель | MSE | Коефіцієнт детермінації |
-|-------|-----|-------------------------|
+| Модель | RMSE | Детермінація |
+|-------|-----|---------------|
| Лінійна за `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Поліноміальна за `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Лінійна за `Variety` | 5.24 (19.7%) | 0.77 |
| Лінійна за всіма ознаками | 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 техніки. Хорошим курсом для поглибленого вивчення є [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
+У цьому уроці ми вивчили лінійну регресію. Є й інші важливі типи регресії. Прочитайте про методи Stepwise, Ridge, Lasso та Elasticnet. Хорошим курсом для навчання є [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Завдання
-[Побудуйте модель](assignment.md)
+[Побудувати модель](assignment.md)
---
-**Відмова від відповідальності**:
-Цей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
+**Відмова від відповідальності**:
+Цей документ було перекладено за допомогою сервісу машинного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоч ми і прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.
\ No newline at end of file
diff --git a/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb b/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb
index e22b0f96c..0804b2dfb 100644
--- a/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb
+++ b/translations/uk/2-Regression/3-Linear/solution/notebook.ipynb
@@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "## Лінійна та поліноміальна регресія для визначення ціни на гарбузи - Урок 3\n",
+ "## Лінійна та поліноміальна регресія для ціноутворення гарбузів - Урок 3\n",
"\n",
"Завантажте необхідні бібліотеки та набір даних. Перетворіть дані у датафрейм, що містить підмножину даних:\n",
"\n",
- "- Виберіть лише гарбузи, ціна яких вказана за бушель\n",
- "- Перетворіть дату на місяць\n",
- "- Розрахуйте ціну як середнє значення між високою та низькою ціною\n",
- "- Перетворіть ціну, щоб вона відображала вартість за кількість у бушелях\n"
+ "- Отримуйте лише гарбузи, ціна яких встановлена за бушель\n",
+ "- Перетворіть дату у місяць\n",
+ "- Обчисліть ціну як середнє значення між високою та низькою цінами\n",
+ "- Перетворіть ціну так, щоб вона відповідала ціноутворенню за кількість бушелів\n"
]
},
{
@@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Діаграма розсіювання нагадує нам, що ми маємо дані лише за місяці з серпня по грудень. Ймовірно, нам потрібно більше даних, щоб зробити висновки лінійним способом.\n"
+ "Точкова діаграма нагадує нам, що у нас є дані лише за місяці з серпня по грудень. Ймовірно, нам потрібно більше даних, щоб мати можливість робити висновки у лінійній формі.\n"
]
},
{
@@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Давайте перевіримо, чи існує кореляція:\n"
+ ]
},
{
"cell_type": "code",
@@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Здається, кореляція досить мала, але існує інший, більш важливий зв'язок - оскільки точки цін на графіку вище, здається, утворюють кілька окремих кластерів. Давайте створимо графік, який покаже різні сорти гарбузів:\n"
+ "Схоже, кореляція досить мала, але існує інший, більш важливий зв’язок — оскільки цінові точки на графіку вище, здається, мають кілька окремих кластерів. Давайте зробимо графік, який покаже різні сорти гарбузів:\n"
]
},
{
@@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Поки що зосередьмося лише на одному виді - **тип пирога**.\n"
+ ]
},
{
"cell_type": "code",
@@ -662,7 +666,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Нахил прямої можна визначити за коефіцієнтами лінійної регресії:\n"
+ "Нахил лінії можна визначити за коефіцієнтами лінійної регресії:\n"
]
},
{
@@ -688,7 +692,9 @@
{
"cell_type": "markdown",
"metadata": {},
- "source": []
+ "source": [
+ "Ми можемо використовувати навчану модель для прогнозування ціни:\n"
+ ]
},
{
"cell_type": "code",
@@ -718,9 +724,9 @@
"source": [
"### Поліноміальна регресія\n",
"\n",
- "Іноді зв'язок між ознаками та результатами є природно нелінійним. Наприклад, ціни на гарбузи можуть бути високими взимку (місяці=1,2), потім знижуватися влітку (місяці=5-7), а потім знову зростати. Лінійна регресія не здатна точно визначити цей зв'язок.\n",
+ "Іноді залежність між ознаками та результатами є за своєю суттю нелінійною. Наприклад, ціни на гарбузи можуть бути високими взимку (місяці=1,2), потім падати влітку (місяці=5-7), а потім знову зростати. Лінійна регресія не в змозі точно відобразити цю залежність.\n",
"\n",
- "У такому випадку можна розглянути додавання додаткових ознак. Простий спосіб — використовувати поліноми з вхідних ознак, що призведе до **поліноміальної регресії**. У Scikit Learn ми можемо автоматично попередньо обчислювати поліноміальні ознаки за допомогою конвеєрів:\n"
+ "У цьому випадку можна розглянути додавання додаткових ознак. Простий спосіб – використати поліноми від вхідних ознак, що призведе до **поліноміальної регресії**. У Scikit Learn ми можемо автоматично попередньо обчислити поліноміальні ознаки за допомогою пайплайнів: \n"
]
},
{
@@ -775,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
- "plt.scatter(X_test,y_test)\n",
- "plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
+ "X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
+ "y_range = pipeline.predict(X_range)\n",
+ "\n",
+ "plt.scatter(X_test, y_test)\n",
+ "plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Кодування сортів\n",
+ "### Варіанти кодування\n",
"\n",
- "У ідеальному світі ми хочемо мати можливість прогнозувати ціни для різних сортів гарбуза, використовуючи одну й ту саму модель. Щоб врахувати сорт, спочатку потрібно перетворити його в числову форму, або **закодувати**. Є кілька способів зробити це:\n",
+ "В ідеальному світі ми хочемо мати можливість прогнозувати ціни для різних сортів гарбуза, використовуючи одну й ту саму модель. Щоб врахувати сорт, спочатку потрібно перетворити його у числову форму, або **закодувати**. Існує кілька способів, як це можна зробити:\n",
"\n",
- "* Просте числове кодування, яке створить таблицю різних сортів, а потім замінить назву сорту на індекс у цій таблиці. Це не найкраща ідея для лінійної регресії, оскільки лінійна регресія враховує числове значення індексу, а числове значення, ймовірно, не буде корелювати чисельно з ціною.\n",
- "* Одновимірне кодування (one-hot encoding), яке замінить стовпець `Variety` на 4 різні стовпці, по одному для кожного сорту, які міститимуть 1, якщо відповідний рядок належить до даного сорту, і 0 в іншому випадку.\n",
+ "* Прості числові кодування, які створять таблицю різних сортів, а потім замінять назву сорту на індекс у цій таблиці. Це не найкраща ідея для лінійної регресії, бо лінійна регресія враховує числове значення індексу, і це числове значення навряд чи буде корелювати з ціною.\n",
+ "* Кодування в одному гарячому форматі (one-hot encoding), яке замінить стовпець `Variety` на 4 різні стовпці, по одному для кожного сорту, які будуть містити 1, якщо відповідний рядок належить цьому сорту, і 0 – інакше.\n",
"\n",
- "Код нижче показує, як можна закодувати сорт за допомогою одновимірного кодування:\n"
+ "Код нижче показує, як ми можемо виконати кодування в одному гарячому форматі для сорту:\n"
]
},
{
@@ -938,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "### Лінійна регресія на основі сорту\n",
+ "### Лінійна регресія за сортом\n",
"\n",
- "Тепер ми використаємо той самий код, що й вище, але замість `DayOfYear` використаємо наш закодований у форматі one-hot сорт як вхідні дані:\n"
+ "Ми тепер використаємо той самий код, що й вище, але замість `DayOfYear` ми використаємо наш одноразове кодування сорту як вхідні дані:\n"
]
},
{
@@ -988,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "Ми також можемо спробувати використовувати інші функції таким же чином і комбінувати їх з числовими характеристиками, такими як `Month` або `DayOfYear`:\n"
+ "Ми також можемо спробувати використовувати інші ознаки аналогічним чином і комбінувати їх з числовими ознаками, такими як `Month` або `DayOfYear`:\n"
]
},
{
@@ -1021,7 +1030,7 @@
"source": [
"### Поліноміальна регресія\n",
"\n",
- "Поліноміальну регресію також можна використовувати з категоріальними ознаками, які закодовані методом one-hot-encoding. Код для навчання поліноміальної регресії буде фактично таким самим, як ми бачили вище.\n"
+ "Поліноміальну регресію також можна використовувати з категоріальними ознаками, які закодовані методом one-hot. Код для навчання поліноміальної регресії, по суті, буде таким самим, як ми бачили вище.\n"
]
},
{
@@ -1068,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
- "\n---\n\n**Відмова від відповідальності**: \nЦей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ мовою оригіналу слід вважати авторитетним джерелом. Для критично важливої інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникли внаслідок використання цього перекладу.\n"
+ "---\n\n\n**Відмова від відповідальності**: \nЦей документ було перекладено за допомогою сервісу автоматичного перекладу [Co-op Translator](https://github.com/Azure/co-op-translator). Хоча ми прагнемо до точності, будь ласка, зверніть увагу, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ рідною мовою слід вважати авторитетним джерелом. Для критичної інформації рекомендується звертатися до професійного людського перекладу. Ми не несемо відповідальності за будь-які непорозуміння чи неправильні тлумачення, що виникли внаслідок використання цього перекладу.\n\n"
]
}
],
@@ -1098,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
- "orig_nbformat": 2,
- "coopTranslator": {
- "original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
- "translation_date": "2025-09-04T06:22:30+00:00",
- "source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
- "language_code": "uk"
- }
+ "orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2