diff --git a/translations/hr/.co-op-translator.json b/translations/hr/.co-op-translator.json index ad9e58fd6..4151a354e 100644 --- a/translations/hr/.co-op-translator.json +++ b/translations/hr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "hr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:43:14+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:47:58+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "hr" }, @@ -90,8 +90,8 @@ "language_code": "hr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:13:53+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:47:29+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "hr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "hr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:44:42+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "hr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:34:39+00:00", diff --git a/translations/hr/1-Introduction/4-techniques-of-ML/README.md b/translations/hr/1-Introduction/4-techniques-of-ML/README.md index 447ce1c62..580516a6e 100644 --- a/translations/hr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/hr/1-Introduction/4-techniques-of-ML/README.md @@ -1,123 +1,125 @@ # Tehnike strojnog učenja -Proces izrade, korištenja i održavanja modela strojnog učenja te podataka koje koriste vrlo je različit od mnogih drugih razvojnih tijekova rada. U ovoj lekciji razjasnit ćemo taj proces i istaknuti glavne tehnike koje trebate znati. Naučit ćete: +Proces izgradnje, korištenja i održavanja modela strojnog učenja i podataka koje oni koriste vrlo je različit od mnogih drugih razvojnih tijekova. U ovoj lekciji razjasnit ćemo proces i izložiti glavne tehnike koje trebate znati. Naučit ćete: -- Razumjeti procese koji podržavaju strojno učenje na visokoj razini. -- Istražiti osnovne pojmove poput 'modela', 'predikcija' i 'podataka za treniranje'. +- Razumjeti procese koji stoje iza strojnog učenja na visokoj razini. +- Istražiti osnovne pojmove kao što su 'modeli', 'predviđanja' i 'podaci za treniranje'. ## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/) -[![ML za početnike - Tehnike strojnog učenja](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML za početnike - Tehnike strojnog učenja") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Kliknite na sliku iznad za kratki video koji obrađuje ovu lekciju. +> 🎥 Kliknite na sliku gore za kratki video koji obrađuje ovu lekciju. ## Uvod -Na visokoj razini, proces stvaranja strojnog učenja (ML) sastoji se od nekoliko koraka: +Na visokoj razini, vještina stvaranja procesa strojnog učenja (ML) sastoji se od niza koraka: -1. **Odlučite o pitanju**. Većina ML procesa započinje postavljanjem pitanja koje se ne može odgovoriti jednostavnim uvjetnim programom ili sustavom temeljenim na pravilima. Ta pitanja često se odnose na predikcije temeljene na zbirci podataka. -2. **Prikupite i pripremite podatke**. Da biste mogli odgovoriti na svoje pitanje, trebate podatke. Kvaliteta, a ponekad i količina vaših podataka, odredit će koliko dobro možete odgovoriti na početno pitanje. Vizualizacija podataka važan je aspekt ove faze. Ova faza također uključuje podjelu podataka na skup za treniranje i testiranje kako biste izgradili model. -3. **Odaberite metodu treniranja**. Ovisno o vašem pitanju i prirodi vaših podataka, trebate odabrati način na koji želite trenirati model kako bi najbolje odražavao vaše podatke i davao točne predikcije. Ovo je dio ML procesa koji zahtijeva specifičnu stručnost i često značajnu količinu eksperimentiranja. -4. **Trenirajte model**. Koristeći podatke za treniranje, koristit ćete razne algoritme za treniranje modela kako bi prepoznao obrasce u podacima. Model može koristiti unutarnje težine koje se mogu prilagoditi kako bi se privilegirali određeni dijelovi podataka u odnosu na druge za izgradnju boljeg modela. -5. **Procijenite model**. Koristite podatke koje model nikada prije nije vidio (vaše testne podatke) iz prikupljenog skupa kako biste vidjeli kako model funkcionira. -6. **Podešavanje parametara**. Na temelju performansi vašeg modela, možete ponoviti proces koristeći različite parametre ili varijable koje kontroliraju ponašanje algoritama korištenih za treniranje modela. -7. **Predikcija**. Koristite nove ulaze kako biste testirali točnost vašeg modela. +1. **Odlučite o pitanju**. Većina ML procesa započinje pitanjem koje se ne može odgovoriti jednostavnim uvjetnim programom ili motorom temeljenim na pravilima. Ta pitanja često se tiču predviđanja na temelju skupa podataka. +2. **Prikupite i pripremite podatke**. Da biste mogli odgovoriti na svoje pitanje, trebate podatke. Kvaliteta i ponekad količina podataka odredit će koliko dobro možete odgovoriti na početno pitanje. Vizualizacija podataka važan je aspekt ove faze. Ova faza također uključuje podjelu podataka u skup za treniranje i testiranje za izgradnju modela. +3. **Odaberite metodu treniranja**. Ovisno o vašem pitanju i prirodi podataka, morate odabrati kako želite trenirati model da najbolje odražava vaše podatke i da daje točna predviđanja. Ovo je dio ML procesa koji zahtijeva specifičnu stručnost i često značajnu količinu eksperimentiranja. +4. **Trenirajte model**. Koristeći svoje podatke za treniranje, upotrijebit ćete različite algoritme za treniranje modela kako bi prepoznao obrasce u podacima. Model može koristiti unutarnje težine koje se mogu prilagoditi kako bi se privilegirali određeni dijelovi podataka u odnosu na druge za izgradnju boljeg modela. +5. **Evaluirajte model**. Koristite podatke koje model prije nije vidio (vaše testne podatke) iz prikupljenog skupa kako biste vidjeli kako model radi. +6. **Podesite parametre**. Na temelju performansi modela možete ponoviti proces koristeći različite parametre ili varijable koje kontroliraju ponašanje algoritama korištenih za treniranje modela. +7. **Predviđajte**. Koristite nove ulaze za testiranje točnosti modela. ## Koje pitanje postaviti -Računala su posebno vješta u otkrivanju skrivenih obrazaca u podacima. Ova korisnost vrlo je korisna za istraživače koji imaju pitanja o određenom području koja se ne mogu lako odgovoriti stvaranjem sustava temeljenog na uvjetima. Na primjer, u aktuarskom zadatku, podatkovni znanstvenik mogao bi konstruirati ručno izrađena pravila o smrtnosti pušača u odnosu na nepušače. +Računala su posebno vješta u otkrivanju skrivenih obrazaca u podacima. Ova korisnost vrlo je korisna istraživačima koji imaju pitanja o određenom području na koja se ne može lako odgovoriti stvaranjem sustava pravila temeljenih na uvjetima. Na primjer, za aktuarijski zadatak, znanstvenik podataka mogao bi sastaviti ručno izrađena pravila o smrtnosti pušača naspram nepušača. -Međutim, kada se u jednadžbu uključi mnogo drugih varijabli, ML model mogao bi se pokazati učinkovitijim za predviđanje budućih stopa smrtnosti na temelju povijesti zdravlja. Jedan veseliji primjer mogao bi biti izrada vremenskih predikcija za mjesec travanj na određenoj lokaciji na temelju podataka koji uključuju geografsku širinu, dužinu, klimatske promjene, blizinu oceana, obrasce mlaznih struja i više. +Međutim, kad se u jednadžbu uključi mnogo drugih varijabli, ML model može se pokazati učinkovitijim za predviđanje budućih stopa smrtnosti na temelju prijašnje zdravstvene povijesti. Veseliji primjer može biti predviđanje vremena za mjesec travanj na određenom mjestu temeljem podataka koji uključuju širinu, dužinu, klimatske promjene, blizinu oceana, obrasce jet stream-a i još mnogo toga. -✅ Ova [prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskim modelima nudi povijesnu perspektivu korištenja ML-a u analizi vremena. +✅ Ova [prezentacija](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskim modelima nudi povijesnu perspektivu korištenja ML u analizi vremena. ## Zadaci prije izgradnje -Prije nego što počnete graditi svoj model, postoji nekoliko zadataka koje trebate dovršiti. Kako biste testirali svoje pitanje i oblikovali hipotezu na temelju predikcija modela, trebate identificirati i konfigurirati nekoliko elemenata. +Prije nego što započnete s izgradnjom modela, postoje nekoliko zadataka koje morate dovršiti. Da biste testirali svoje pitanje i oblikovali hipotezu na temelju predviđanja modela, trebate identificirati i konfigurirati nekoliko elemenata. ### Podaci -Da biste mogli odgovoriti na svoje pitanje s bilo kakvom sigurnošću, trebate dobru količinu podataka odgovarajućeg tipa. U ovom trenutku trebate učiniti dvije stvari: +Da biste mogli odgovoriti na svoje pitanje s bilo kakvom sigurnošću, trebate dobru količinu podataka odgovarajućeg tipa. Trenutno morate učiniti dvije stvari: -- **Prikupiti podatke**. Imajući na umu prethodnu lekciju o pravednosti u analizi podataka, pažljivo prikupite svoje podatke. Budite svjesni izvora tih podataka, bilo kakvih inherentnih pristranosti koje bi mogli imati, i dokumentirajte njihovo podrijetlo. -- **Pripremiti podatke**. Postoji nekoliko koraka u procesu pripreme podataka. Možda ćete trebati objediniti podatke i normalizirati ih ako dolaze iz različitih izvora. Možete poboljšati kvalitetu i količinu podataka raznim metodama, poput pretvaranja stringova u brojeve (kao što radimo u [Klasterizaciji](../../5-Clustering/1-Visualize/README.md)). Možete također generirati nove podatke na temelju originalnih (kao što radimo u [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Možete očistiti i urediti podatke (kao što ćemo učiniti prije lekcije o [Web aplikaciji](../../3-Web-App/README.md)). Na kraju, možda ćete trebati nasumično rasporediti i promiješati podatke, ovisno o tehnikama treniranja. +- **Prikupite podatke**. Imajući na umu prethodnu lekciju o pravednosti u analizi podataka, pažljivo prikupite svoje podatke. Budite svjesni izvora tih podataka, bilo kojih unutarnjih pristranosti koje mogu imati i dokumentirajte njihov izvor. +- **Pripremite podatke**. Postoji nekoliko koraka u procesu pripreme podataka. Možda ćete trebati objediniti podatke i normalizirati ih ako dolaze iz različitih izvora. Možete poboljšati kvalitetu i količinu podataka raznim metodama, poput pretvaranja nizova u brojeve (kao u [Klasifikaciji](../../5-Clustering/1-Visualize/README.md)). Možete također generirati nove podatke, temeljene na originalima (kao u [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Možete očistiti i urediti podatke (kao što ćemo učiniti prije lekcije [Web aplikacije](../../3-Web-App/README.md)). Na kraju, možda ćete ih također trebati nasumično posložiti i promiješati, ovisno o vašoj tehnici treniranja. -✅ Nakon prikupljanja i obrade podataka, odvojite trenutak da vidite hoće li njihov oblik omogućiti da se pozabavite svojim namjeravanim pitanjem. Može se dogoditi da podaci neće dobro funkcionirati u vašem zadatku, kao što otkrivamo u našim lekcijama o [Klasterizaciji](../../5-Clustering/1-Visualize/README.md)! +✅ Nakon prikupljanja i obrade podataka, odvojite trenutak da provjerite hoće li njihov oblik omogućiti odgovor na vaše postavljeno pitanje. Možda se pokaže da podaci neće dobro funkcionirati u zadatku, kao što otkrivamo u našim lekcijama o [Klasifikaciji](../../5-Clustering/1-Visualize/README.md)! ### Značajke i cilj -[Značajka](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je mjerljiva karakteristika vaših podataka. U mnogim skupovima podataka izražena je kao naslov stupca poput 'datum', 'veličina' ili 'boja'. Vaša varijabla značajke, obično predstavljena kao `X` u kodu, predstavlja ulaznu varijablu koja će se koristiti za treniranje modela. +[Značajka](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je mjerljiva svojstva vaših podataka. U mnogim skupovima podataka izražena je kao naslov stupca poput 'datum', 'veličina' ili 'boja'. Vaša značajka varijabla, obično prikazana kao `X` u kodu, predstavlja ulaznu varijablu koja će se koristiti za treniranje modela. -Cilj je ono što pokušavate predvidjeti. Cilj, obično predstavljen kao `y` u kodu, predstavlja odgovor na pitanje koje pokušavate postaviti svojim podacima: u prosincu, koje će **boje** bundeve biti najjeftinije? U San Franciscu, koje će četvrti imati najbolju **cijenu** nekretnina? Ponekad se cilj također naziva atribut oznake. +Cilj je stvar koju pokušavate predvidjeti. Cilj, obično označen kao `y` u kodu, predstavlja odgovor na pitanje koje postavljate svojim podacima: u prosincu, koja će boja bundeva biti najjeftinija? U San Franciscu, koje će četvrti imati najbolju cijenu nekretnina? Cilj se ponekad naziva i atributom oznake. ### Odabir varijable značajke -🎓 **Odabir značajki i ekstrakcija značajki** Kako znati koju varijablu odabrati prilikom izrade modela? Vjerojatno ćete proći kroz proces odabira značajki ili ekstrakcije značajki kako biste odabrali prave varijable za najperformantniji model. Međutim, nisu iste stvari: "Ekstrakcija značajki stvara nove značajke iz funkcija originalnih značajki, dok odabir značajki vraća podskup značajki." ([izvor](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Odabir značajke i izdvajanje značajki** Kako znate koju varijablu odabrati prilikom izrade modela? Vjerojatno ćete proći kroz proces odabira značajki ili izdvajanja značajki kako biste odabrali prave varijable za najuspješniji model. Međutim, to nisu iste stvari: "Izdvajanje značajki stvara nove značajke iz funkcija izvornih značajki, dok odabir značajki vraća podskup značajki." ([izvor](https://wikipedia.org/wiki/Feature_selection)) ### Vizualizirajte svoje podatke -Važan aspekt alata podatkovnog znanstvenika je moć vizualizacije podataka koristeći nekoliko izvrsnih biblioteka poput Seaborn ili MatPlotLib. Predstavljanje vaših podataka vizualno može vam omogućiti otkrivanje skrivenih korelacija koje možete iskoristiti. Vaše vizualizacije također vam mogu pomoći otkriti pristranost ili neuravnotežene podatke (kao što otkrivamo u [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). +Važan aspekt alata znanstvenika podataka je moć vizualizacije podataka koristeći nekoliko izvrsnih biblioteka poput Seaborn ili MatPlotLib. Vizualno predstavljanje podataka može vam omogućiti otkrivanje skrivenih korelacija koje možete iskoristiti. Vaši prikazi također vam mogu pomoći otkriti pristranost ili neuravnotežene podatke (kao što otkrivamo u [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). ### Podijelite svoj skup podataka -Prije treniranja, trebate podijeliti svoj skup podataka na dva ili više dijelova nejednake veličine koji i dalje dobro predstavljaju podatke. +Prije treniranja, trebate podijeliti svoj skup podataka u dva ili više dijelova različite veličine koji još uvijek dobro predstavljaju podatke. -- **Treniranje**. Ovaj dio skupa podataka koristi se za treniranje modela. Ovaj skup čini većinu originalnog skupa podataka. -- **Testiranje**. Testni skup podataka je neovisna grupa podataka, često prikupljena iz originalnih podataka, koju koristite za potvrdu performansi izgrađenog modela. -- **Validacija**. Skup za validaciju je manja neovisna grupa primjera koju koristite za podešavanje hiperparametara modela ili arhitekture kako biste poboljšali model. Ovisno o veličini vaših podataka i pitanju koje postavljate, možda nećete trebati izgraditi ovaj treći skup (kao što primjećujemo u [Predviđanju vremenskih serija](../../7-TimeSeries/1-Introduction/README.md)). +- **Trening**. Ovaj dio skupa podataka koristi se za treniranje modela. Ovaj skup čini većinu izvornog skupa podataka. +- **Testiranje**. Skup podataka za testiranje je neovisna skupina podataka, često prikupljena iz izvornog skupa, koju koristite za potvrdu performansi izgrađenog modela. +- **Validacija**. Skup za validaciju je manja neovisna skupina primjera koju koristite za podešavanje hiperparametara modela ili arhitekture da biste poboljšali model. Ovisno o veličini podataka i pitanju koje postavljate, možda nećete trebati stvarati ovaj treći skup (kao što navodimo u [Predviđanju vremenskih serija](../../7-TimeSeries/1-Introduction/README.md)). -## Izrada modela +## Izgradnja modela -Koristeći podatke za treniranje, vaš cilj je izgraditi model, odnosno statistički prikaz vaših podataka, koristeći razne algoritme za **treniranje**. Treniranje modela izlaže ga podacima i omogućuje mu da donosi pretpostavke o uočenim obrascima koje otkriva, potvrđuje i prihvaća ili odbacuje. +Koristeći svoje podatke za treniranje, cilj vam je izgraditi model ili statistički prikaz podataka, koristeći razne algoritme za **treniranje**. Trening modela izlaže ga podacima i omogućuje mu da donosi pretpostavke o otkrivenim obrascima koje provjerava i prihvaća ili odbacuje. ### Odlučite o metodi treniranja -Ovisno o vašem pitanju i prirodi vaših podataka, odabrat ćete metodu za treniranje. Pregledavajući [dokumentaciju Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - koju koristimo u ovom tečaju - možete istražiti mnoge načine treniranja modela. Ovisno o vašem iskustvu, možda ćete morati isprobati nekoliko različitih metoda kako biste izgradili najbolji model. Vjerojatno ćete proći kroz proces u kojem podatkovni znanstvenici procjenjuju performanse modela hranjenjem neviđenih podataka, provjeravajući točnost, pristranost i druge probleme koji degradiraju kvalitetu te odabiru najprikladniju metodu treniranja za zadatak. +Ovisno o vašem pitanju i prirodi podataka, odabrat ćete metodu za treniranje. Pregledavajući [Scikit-learn dokumentaciju](https://scikit-learn.org/stable/user_guide.html) – koju koristimo u ovom tečaju – možete istražiti mnoge načine treniranja modela. Ovisno o iskustvu, možda ćete morati isprobati nekoliko različitih metoda da biste izgradili najbolji model. Vjerojatno ćete proći proces u kojem znanstvenici podataka ocjenjuju performanse modela tako da mu daju neviđene podatke, provjeravaju točnost, pristranost i druge probleme koji umanjuju kvalitetu, te odabiru najprikladniju metodu treniranja za zadatak. ### Trenirajte model -Naoružani podacima za treniranje, spremni ste 'prilagoditi' ih kako biste stvorili model. Primijetit ćete da u mnogim ML bibliotekama postoji kod 'model.fit' - u ovom trenutku šaljete svoju varijablu značajke kao niz vrijednosti (obično 'X') i ciljnu varijablu (obično 'y'). +Naoružani podacima za treniranje, spremni ste na 'fit' modela. Primijetit ćete da mnoge ML biblioteke koriste kod 'model.fit' – upravo u toj fazi šaljete svoju varijablu značajke kao niz vrijednosti (obično 'X') i ciljnu varijablu (obično 'y'). -### Procijenite model +### Evaluirajte model -Nakon što je proces treniranja završen (može potrajati mnogo iteracija ili 'epoha' za treniranje velikog modela), moći ćete procijeniti kvalitetu modela koristeći testne podatke za procjenu njegovih performansi. Ovi podaci su podskup originalnih podataka koje model prethodno nije analizirao. Možete ispisati tablicu metrike o kvaliteti vašeg modela. +Nakon što je proces treniranja završen (može trajati mnogo iteracija ili 'epoha' za treniranje velikog modela), moći ćete ocijeniti kvalitetu modela koristeći testne podatke za procjenu njegove izvedbe. Ti podaci su podskup izvornih podataka koje model ranije nije analizirao. Možete ispisati tablicu metrike o kvaliteti vašeg modela. -🎓 **Prilagodba modela** +🎓 **Prilagođavanje modela** -U kontekstu strojnog učenja, prilagodba modela odnosi se na točnost osnovne funkcije modela dok pokušava analizirati podatke s kojima nije upoznat. +U kontekstu strojnog učenja, prilagođavanje modela odnosi se na točnost funkcije modela dok pokušava analizirati podatke s kojima nije upoznat. -🎓 **Premalo prilagođavanje** i **preveliko prilagođavanje** su uobičajeni problemi koji degradiraju kvalitetu modela, jer model ili ne odgovara dovoljno dobro ili previše dobro. To uzrokuje da model daje predikcije koje su ili previše usklađene ili premalo usklađene s podacima za treniranje. Previše prilagođen model predviđa podatke za treniranje previše dobro jer je previše naučio detalje i šum podataka. Premalo prilagođen model nije točan jer ne može ni točno analizirati podatke za treniranje niti podatke koje još nije 'vidio'. +🎓 **Nedovoljno prilagođavanje** i **preveliko prilagođavanje** česti su problemi koji smanjuju kvalitetu modela, jer model prilagođava podatke ili nedovoljno ili previše. To uzrokuje da model predviđa preblizu ili previše slobodno u odnosu na svoje podatke za treniranje. Model koji je previše prilagođen predviđa podatke za treniranje previše točno jer je naučio detalje i šum podataka previše dobro. Model koji je nedovoljno prilagođen nije točan jer ne može ni precizno analizirati podatke za treniranje ni podatke koje još nije 'vidio'. -![model prevelikog prilagođavanja](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/hr/overfitting.1c132d92bfd93cb6.webp) > Infografika od [Jen Looper](https://twitter.com/jenlooper) ## Podešavanje parametara -Nakon što je početno treniranje završeno, promatrajte kvalitetu modela i razmislite o njegovom poboljšanju podešavanjem njegovih 'hiperparametara'. Pročitajte više o procesu [u dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Kad je vaše početno treniranje završeno, promatrajte kvalitetu modela i razmislite o njegovom poboljšanju podešavanjem njegovih 'hiperparametara'. Više o procesu pročitajte [u dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). -## Predikcija +## Predviđanje -Ovo je trenutak kada možete koristiti potpuno nove podatke za testiranje točnosti vašeg modela. U 'primijenjenom' ML okruženju, gdje gradite web alate za korištenje modela u produkciji, ovaj proces može uključivati prikupljanje korisničkog unosa (na primjer, pritisak na gumb) za postavljanje varijable i slanje modelu za inferenciju ili procjenu. +Ovo je trenutak kada možete koristiti potpuno nove podatke za testiranje točnosti vašeg modela. U 'primijenjenom' ML okruženju, gdje gradite web resurse za korištenje modela u produkciji, ovaj proces može uključivati prikupljanje korisničkog unosa (primjerice pritiskom na gumb) kako biste postavili varijablu i poslali je modelu na izvođenje zaključivanja ili evaluacije. -U ovim lekcijama otkrit ćete kako koristiti ove korake za pripremu, izgradnju, testiranje, procjenu i predikciju - sve geste podatkovnog znanstvenika i više, dok napredujete na svom putu da postanete 'full stack' ML inženjer. +U ovim lekcijama otkrit ćete kako koristiti ove korake za pripremu, izgradnju, testiranje, evaluaciju i predviđanje – sve geste znanstvenika podataka i više, dok napredujete na putu da postanete 'full stack' ML inženjer. --- ## 🚀Izazov -Nacrtajte dijagram toka koji odražava korake ML praktičara. Gdje se trenutno vidite u procesu? Gdje predviđate da ćete naići na poteškoće? Što vam se čini jednostavno? +Nacrtajte dijagram tijeka koji prikazuje korake ML praktičara. Gdje se sada vidite u procesu? Gdje predviđate da ćete naići na poteškoće? Što vam se čini lako? ## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/) ## Pregled i samostalno učenje -Pretražite online intervjue s podatkovnim znanstvenicima koji raspravljaju o svom svakodnevnom radu. Evo [jednog](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Potražite na internetu intervjue sa znanstvenicima podataka koji govore o svom svakodnevnom radu. Evo [jednog](https://www.youtube.com/watch?v=Z3IjgbbCEfs). ## Zadatak -[Intervjuirajte podatkovnog znanstvenika](assignment.md) +[Interview a data scientist](assignment.md) --- -**Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda. \ No newline at end of file + +**Odricanje od odgovornosti**: +Ovaj dokument je preveden pomoću AI usluge prijevoda [Co-op Translator](https://github.com/Azure/co-op-translator). Iako težimo točnosti, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba se smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Nismo odgovorni za bilo kakva nesporazume ili pogrešna tumačenja proizašla iz korištenja ovog prijevoda. + \ No newline at end of file diff --git a/translations/hr/2-Regression/3-Linear/README.md b/translations/hr/2-Regression/3-Linear/README.md index 82404bc3d..45edd5483 100644 --- a/translations/hr/2-Regression/3-Linear/README.md +++ b/translations/hr/2-Regression/3-Linear/README.md @@ -1,136 +1,136 @@ -# Izgradnja regresijskog modela pomoću Scikit-learn: četiri načina regresije +# Izrada regresijskog modela pomoću Scikit-learn: regresija na četiri načina ## Napomena za početnike -Linearna regresija se koristi kada želimo predvidjeti **numeričku vrijednost** (na primjer, cijenu kuće, temperaturu ili prodaju). -Funkcionira tako da pronalazi pravu koja najbolje predstavlja odnos između ulaznih značajki i izlaza. +Linearna regresija se koristi kada želimo predvidjeti **numeričku vrijednost** (na primjer, cijenu kuće, temperaturu ili prodaju). +Radi pronalaženjem pravca koji najbolje predstavlja odnos između ulaznih značajki i izlaza. -U ovoj lekciji se fokusiramo na razumijevanje koncepta prije nego što istražimo naprednije tehnike regresije. -![Linear vs polynomial regression infographic](../../../../translated_images/hr/linear-polynomial.5523c7cb6576ccab.webp) -> Infografika autora [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kviz prije lekcije](https://ff-quizzes.netlify.app/en/ml/) +U ovoj lekciji fokusiramo se na razumijevanje koncepta prije nego što istražimo naprednije tehnike regresije. +![Linear vs polynomial regression infographic](../../../../translated_images/hr/linear-polynomial.5523c7cb6576ccab.webp) +> Infografika autora [Dasani Madipalli](https://twitter.com/dasani_decoded) +## [Kviz prije predavanja](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ova je lekcija dostupna i u R-u!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Ova lekcija dostupna je i na R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Uvod -Do sada ste istraživali što je regresija koristeći uzorke podataka prikupljenih iz skupa podataka o cijenama bundeva koje ćemo koristiti kroz cijelu ovu lekciju. Također ste ih vizualizirali pomoću Matplotlib. +Do sada ste istraživali što je regresija na primjeru podataka iz skupa podataka o cijenama bundeva koje ćemo koristiti kroz ovu lekciju. Također ste ih vizualizirali koristeći Matplotlib. -Sada ste spremni dublje zaroniti u regresiju za ML. Dok vizualizacija omogućuje razumijevanje podataka, prava snaga strojnog učenja dolazi iz _treninga modela_. Modeli se treniraju na povijesnim podacima kako bi automatski uhvatili ovisnosti u podacima i omogućuju predviđanje ishoda za nove podatke koje model prije nije vidio. +Sada ste spremni za dublje razumijevanje regresije za strojno učenje. Dok vizualizacija pomaže da razumijete podatke, prava moć strojnog učenja dolazi iz _treniranja modela_. Modeli se treniraju na povijesnim podacima kako bi automatski uhvatili ovisnosti u podacima, a omogućuju vam predviđanje ishoda za nove podatke koje model još nije vidio. -U ovoj lekciji ćete naučiti više o dvije vrste regresije: _osnovna linearna regresija_ i _polinomijalna regresija_, zajedno s dijelom matematike koja stoji iza tih tehnika. Ti modeli će nam omogućiti predviđanje cijena bundeva ovisno o različitim ulaznim podacima. +U ovoj lekciji naučit ćete više o dvije vrste regresije: _osnovnoj linearnoj regresiji_ i _polinomnoj regresiji_, zajedno s matematikom koja stoji iza ovih tehnika. Ti modeli će nam omogućiti predviđanje cijena bundeva ovisno o različitim ulaznim podacima. [![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") -> 🎥 Kliknite na sliku gore za kratak video pregled linearne regresije. +> 🎥 Kliknite na sliku iznad za kratak video pregled linearne regresije. -> Kroz ovaj kurikulum pretpostavljamo minimalno znanje iz matematike i nastojimo ga učiniti dostupnim studentima iz drugih područja, stoga obratite pažnju na bilješke, 🧮 oznake, dijagrame i druge nastavne alate koji pomažu u razumijevanju. +> Tijekom ovog kurikuluma pretpostavljamo minimalno matematičko znanje i nastojimo ga učiniti dostupnim studentima iz drugih područja, pa obratite pozornost na bilješke, 🧮 istaknute kutke, dijagrame i druge alate za učenje koji pomažu u razumijevanju. ### Preduvjeti -Sada biste trebali biti upoznati sa strukturom podataka o bundevama koje promatramo. One su unaprijed učitane i očišćene u datoteci _notebook.ipynb_ ove lekcije. U datoteci je cijena bundeve prikazana po košari. Provjerite da možete pokretati ove bilježnice u kernelima u Visual Studio Codeu. +Trebao bi biti upoznat sa strukturom podataka o bundevama koje proučavamo. Možete ih pronaći unaprijed učitane i očišćene u datoteci _notebook.ipynb_ koja prati ovu lekciju. U toj datoteci cijena bundeve je prikazana po šokcu u novom DataFrameu. Pobrinite se da možete pokretati ove bilježnice u kernelima unutar Visual Studio Codea. ### Priprema -Kao podsjetnik, učitavate ove podatke kako biste mogli postavljati pitanja o njima. +Kao podsjetnik, učitavate ove podatke da biste mogli postavljati pitanja o njima. -- Kada je najbolje vrijeme za kupnju bundeva? -- Koju cijenu mogu očekivati za kutiju mini bundeva? -- Trebam li ih kupovati u košarama od pola bushela ili u kutiji od 1 1/9 bushela? -Nastavimo dalje kopati u ove podatke. +- Kada je najbolje vrijeme za kupiti bundeve? +- Koju cijenu mogu očekivati za kutiju malih bundeva? +- Trebam li kupovati u polušokcima ili po kutiji od 1 1/9 šokca? +Nastavimo dalje istraživati ove podatke. -U prethodnoj lekciji ste napravili Pandas DataFrame i popunili ga dijelom izvornog skupa podataka, standardizirajući cijene po bushelu. Time ste uspjeli prikupiti oko 400 podataka samo za jesenske mjesece. +U prethodnoj lekciji ste kreirali Pandas DataFrame i popunili ga dijelom izvornog skupa podataka, standardizirajući cijenu po šokcu. Međutim, tako ste uspjeli prikupiti oko 400 podataka i to samo za jesenske mjesece. -Pogledajte podatke koje smo unaprijed učitali u pratećoj bilježnici za ovu lekciju. Podaci su unaprijed učitani i nacrtan je početni scatterplot koji prikazuje podatke po mjesecima. Možda možemo dobiti malo više detalja o prirodi podataka dodatnim čišćenjem. +Pogledajte podatke koje smo unaprijed učitali u bilježnici ove lekcije. Podaci su već učitani i prikazan je početni scatterplot koji pokazuje podatke po mjesecu. Možda možemo dobiti malo više detalja o prirodi podataka njihovim dodatnim čišćenjem. -## Linearna regresijska crta +## Linija linearne regresije -Kao što ste naučili u Lekciji 1, cilj linearne regresije je moći nacrtati liniju da: +Kao što ste naučili u Lekciji 1, cilj vježbe linearne regresije je moći nacrtati liniju koja će: -- **Prikaže odnose varijabli**. Prikaže odnos između varijabli -- **Napraviti predviđanja**. Precizno predvidjeti gdje će se novi podatak smjestiti u odnosu na tu liniju. - -Tipično za **regresiju najmanjih kvadrata** je crtanje takve linije. Termin "najmanjih kvadrata" odnosi se na proces minimiziranja ukupne pogreške u našem modelu. Za svaku točku mjerimo vertikalnu udaljenost (zvanu rezidual) između stvarne točke i naše regresijske linije. +- **Prikazati odnose između varijabli**. Pokazati odnos između varijabli +- **Napraviti predviđanja**. Točno predvidjeti gdje bi novi podatak pao u odnosu na tu liniju. + +Tipično za **Least-Squares regresiju** je crtanje ovakve linije. Pojam "Least-Squares" odnosi se na proces minimizacije ukupne pogreške u našem modelu. Za svaki podatak mjerimo okomitu udaljenost (nazvanu ostatak) između stvarne točke i naše regresijske linije. Te udaljenosti kvadriramo iz dva glavna razloga: -1. **Veličina nasuprot smjeru:** Želimo tretirati pogrešku od -5 isto kao i pogrešku od +5. Kvadriranjem sve vrijednosti postaju pozitivne. +1. **Veličina a ne smjer:** Želimo tretirati pogrešku -5 jednako kao i pogrešku +5. Kvadriranjem sve vrijednosti postaju pozitivne. -2. **Kazna za odstupanja:** Kvadriranjem se daje veća težina većim pogreškama, tjerajući liniju da bude bliža točkama koje su daleko. +2. **Kazna za outliere:** Kvadriranjem veće pogreške dobivaju veću težinu, prisiljavajući liniju da bude bliže udaljenim točkama. -Zatim zbrojimo sve te kvadrirane vrijednosti. Cilj je pronaći specifičnu liniju za koju je taj konačni zbroj najmanji (najmanja moguća vrijednost)—otuda i naziv "najmanjih kvadrata". +Zatim zbrajamo sve kvadrirane vrijednosti. Cilj je pronaći točnu liniju za koju je taj konačni zbroj najmanji (najmanja moguća vrijednost) — po čemu je naziv "Least-Squares". -> **🧮 Pokaži mi matematiku** -> -> Ova linija, nazvana _linijom najboljeg pristajanja_, može se izraziti [jednadžbom](https://en.wikipedia.org/wiki/Simple_linear_regression): -> +> **🧮 Pokaži mi matematiku** +> +> Ova linija, nazvana _linija najboljeg pristajanja_ može se izraziti [jednadžbom](https://en.wikipedia.org/wiki/Simple_linear_regression): +> > ``` > Y = a + bX > ``` -> -> `X` je 'objašnjavajuća varijabla'. `Y` je 'ovisna varijabla'. Nagib linije je `b` a `a` je y-presjek, što je vrijednost `Y` kad je `X = 0`. -> ->![izračun nagiba](../../../../translated_images/hr/slope.f3c9d5910ddbfcf9.webp) -> -> Prvo, izračunajte nagib `b`. Infografika autora [Jen Looper](https://twitter.com/jenlooper) -> -> Drugim riječima, i referirajući se na originalno pitanje naših podataka o bundevama: "predvidjeti cijenu bundeve po bushelu po mjesecu", `X` bi označavalo cijenu a `Y` mjesec prodaje. -> ->![dovršavanje jednadžbe](../../../../translated_images/hr/calculation.a209813050a1ddb1.webp) -> -> Izračunajte vrijednost Y. Ako plaćate oko 4 dolara, mora biti travanj! Infografika autora [Jen Looper](https://twitter.com/jenlooper) -> -> Matematika koja izračunava liniju mora pokazati nagib linije, koji također ovisi o presjeku, odnosno gdje se `Y` nalazi kada je `X = 0`. -> -> Metodu izračuna ovih vrijednosti možete proučiti na stranici [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Posjetite i [ovaj kalkulator najmanjih kvadrata](https://www.mathsisfun.com/data/least-squares-calculator.html) da vidite kako vrijednosti brojeva utječu na liniju. +> +> `X` je 'objašnjavajuća varijabla'. `Y` je 'ovisna varijabla'. Nagib linije je `b`, a `a` je presjek na y-osi, što označava vrijednost `Y` kada je `X = 0`. +> +>![izračun nagiba](../../../../translated_images/hr/slope.f3c9d5910ddbfcf9.webp) +> +> Prvo izračunajte nagib `b`. Infografika autora [Jen Looper](https://twitter.com/jenlooper) +> +> Drugim riječima, i imajući na umu naše izvorišno pitanje o podacima o bundevama: "predvidjeti cijenu bundeve po šokcu prema mjesecu", `X` bi označavalo cijenu, a `Y` mjesec prodaje. +> +>![dovrši jednadžbu](../../../../translated_images/hr/calculation.a209813050a1ddb1.webp) +> +> Izračunajte vrijednost Y. Ako plaćate oko 4 dolara, mora biti travanj! Infografika autora [Jen Looper](https://twitter.com/jenlooper) +> +> Matematika koja izračunava liniju mora prikazati nagib linije, koji ovisi i o presjeku, odnosno gdje se `Y` nalazi kada je `X = 0`. +> +> Metodu izračuna za ove vrijednosti možete vidjeti na [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Posjetite i [ovaj kalkulator najmanjih kvadrata](https://www.mathsisfun.com/data/least-squares-calculator.html) da vidite kako vrijednosti brojeva utječu na liniju. ## Korelacija -Još jedan pojam koji treba razumjeti je **koeficijent korelacije** između zadanih X i Y varijabli. Pomoću scatterplota možete brzo vizualizirati ovaj koeficijent. Grafikon s točkama razbacanim u lijepoj liniji ima visoku korelaciju, dok graf s točkama razbacanim posvuda između X i Y ima nisku korelaciju. +Još jedan pojam za razumjeti je **Koeficijent korelacije** između danih varijabli X i Y. Korištenjem scatterplota možete brzo vizualizirati ovaj koeficijent. Grafikon s točkama razbacanim duž pravilne linije ima visoku korelaciju, dok grafikon s točkama rasprostranjenim posvuda između X i Y ima nisku korelaciju. -Dobar linearni regresijski model će imati visok koeficijent korelacije (bliži 1 nego 0) koristeći metodu najmanjih kvadrata s regresijskom linijom. +Dobar linearni regresijski model bit će onaj koji ima visok (bliži 1 nego 0) Koeficijent korelacije koristeći metodu najmanjih kvadrata s regresijskom linijom. -✅ Pokrenite bilježnicu koja prati ovu lekciju i pogledajte scatterplot Mjeseca prema Cijeni. Ima li podataka koji povezuju Mjesec i Cijenu kod prodaje bundeva visoku ili nisku korelaciju prema vašoj vizualnoj interpretaciji scatterplota? Mijenja li se to ako koristite finiju mjeru umjesto `Month`, npr. *dan u godini* (tj. broj dana od početka godine)? +✅ Pokrenite bilježnicu koja prati ovu lekciju i pogledajte scatterplot Mjesec prema Cijeni. Čini li se da podaci koji povezuju Mjesec i Cijenu za prodaju bundeva imaju visoku ili nisku korelaciju prema vašoj vizualnoj interpretaciji scatterplota? Mijenja li to ako koristite detaljniju mjeru umjesto `Mjesec`, npr. *dan u godini* (tj. broj dana od početka godine)? U sljedećem kodu pretpostavit ćemo da smo očistili podatke i dobili DataFrame nazvan `new_pumpkins`, sličan sljedećem: -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 +ID | Mjesec | DaniUGodini | Vrsta | Grad | Pakiranje | Najniža cijena | Najviša cijena | Cijena +---|-------|-----------|---------|------|---------|-----------|------------|------- +70 | 9 | 267 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 15.0 | 15.0 | 13.636364 +71 | 9 | 267 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 18.0 | 18.0 | 16.363636 +72 | 10 | 274 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 18.0 | 18.0 | 16.363636 +73 | 10 | 274 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 17.0 | 17.0 | 15.454545 +74 | 10 | 281 | TIP ZA PITU | BALTIMORE | kutije od 1 1/9 šokca | 15.0 | 15.0 | 13.636364 -> Kod za čišćenje podataka dostupan je u [`notebook.ipynb`](notebook.ipynb). Izveli smo iste korake čišćenja kao u prethodnoj lekciji i izračunali stupac `DayOfYear` koristeći sljedeći izraz: +> Kod za čišćenje podataka dostupan je u [`notebook.ipynb`](notebook.ipynb). Proveli smo iste korake čišćenja kao u prethodnoj lekciji, a stupac `DaniUGodini` izračunat je sljedećim izrazom: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` - -Sada, kad imate razumijevanje matematike iza linearne regresije, stvorimo regresijski model da vidimo možemo li predvidjeti koja će pakiranja bundeva imati najbolje cijene. Netko tko kupuje bundeve za natjecanje ili ukrasnu parcelu možda želi ove informacije kako bi optimizirao svoje kupovine pakiranja bundeva. + +Sada kad imate razumijevanje matematike iza linearne regresije, kreirajmo regresijski model da vidimo možemo li predvidjeti koje pakiranje bundeva ima najbolje cijene. Netko tko kupuje bundeve za jesensku sadnju može htjeti te informacije kako bi optimizirao svoje kupnje pakiranja bundeva za sadnju. ## Traženje korelacije [![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") -> 🎥 Kliknite na sliku gore za kratak video pregled korelacije. +> 🎥 Kliknite na sliku iznad za kratak video pregled korelacije. -Iz prethodne lekcije vjerojatno ste vidjeli da prosječna cijena po mjesecima izgleda ovako: +Iz prethodne lekcije vjerojatno ste vidjeli da prosječna cijena za različite mjesece izgleda ovako: Average price by month -Ovo sugerira da bi trebala postojati neka korelacija, i možemo pokušati trenirati linearni regresijski model koji predviđa odnos između `Month` i `Price`, ili između `DayOfYear` i `Price`. Slijedi scatter plot koji prikazuje posljednji odnos: +To sugerira da postoje neke korelacije, i možemo pokušati trenirati linearan regresijski model da predvidi odnos između `Mjesec` i `Cijena`, ili između `DaniUGodini` i `Cijena`. Evo scatterplota koji prikazuje ovaj zadnji odnos: Scatter plot of Price vs. Day of Year -Pogledajmo je li korelacija prisutna uz pomoć funkcije `corr`: +Pogledajmo postoji li korelacija koristeći funkciju `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` - -Izgleda da je korelacija prilično mala, -0.15 po `Month` i -0.17 po `DayOfMonth`, ali može postojati još neki važan odnos. Izgleda da postoje različite skupine cijena koje odgovaraju različitim sortama bundeva. Da bismo potvrdili ovu hipotezu, prikažimo svaku kategoriju bundeva različitom bojom. Prosljeđivanjem parametra `ax` funkciji za crtanje `scatter` možemo nacrtati sve točke na istom grafikonu: + +Izgleda da je korelacija prilično mala, -0.15 po `Mjesec` i -0.17 po `DaniUGodini`, ali može postojati još neki važniji odnos. Izgleda da postoje različite skupine cijena koje odgovaraju različitim sortama bundeva. Za potvrdu ove hipoteze nacrtajmo svaku kategoriju bundeva u različitoj boji. Prosljeđivanjem parametra `ax` funkciji `scatter` možemo nacrtati sve točke na istom grafikonu: ```python ax=None @@ -139,18 +139,18 @@ 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) ``` - + Scatter plot of Price vs. Day of Year -Naša istraga pokazuje da sorta ima veći utjecaj na ukupnu cijenu nego stvarni datum prodaje. Ovo vidimo i na stupčastom grafikonu: +Naše istraživanje sugerira da vrsta bundeve ima veći utjecaj na ukupnu cijenu nego stvarni dan prodaje. To možemo vidjeti i na stupčastom grafikonu: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` - + Bar graph of price vs variety -Za sada se usredotočimo samo na jednu sortu bundeve, 'pie type', i pogledajmo kako datum utječe na cijenu: +Za sada se usredotočimo samo na jednu sortu bundeve, tip 'za pitu', i pogledajmo kakav utjecaj datum ima na cijenu: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] @@ -158,56 +158,56 @@ pie_pumpkins.plot.scatter('DayOfYear','Price') ``` Scatter plot of Price vs. Day of Year -Ako sada izračunamo korelaciju između `Price` i `DayOfYear` pomoću funkcije `corr`, dobit ćemo nešto poput `-0.27` - što znači da je treniranje prediktivnog modela smisleno. +Ako sada izračunamo korelaciju između `Cijene` i `DaniUGodini` koristeći `corr` funkciju, dobit ćemo vrijednost oko `-0.27` - što znači da ima smisla trenirati prediktivni model. -> Prije nego treniramo linearni regresijski model, važno je osigurati da su naši podaci čisti. Linearna regresija ne radi dobro s nedostajućim vrijednostima, stoga ima smisla ukloniti sve prazne ćelije: +> Prije treniranja linearnog regresijskog modela važan je uvjet da su podaci čisti. Linearna regresija ne radi dobro s nedostajućim vrijednostima, stoga ima smisla ukloniti sve prazne ćelije: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` - -Drugi pristup bi bio popuniti prazne vrijednosti prosječnim vrijednostima iz odgovarajućeg stupca. + +Drugi pristup bi bio popuniti te prazne vrijednosti srednjom vrijednosti odgovarajućeg stupca. ## Jednostavna linearna regresija [![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") -> 🎥 Kliknite na sliku gore za kratak video pregled linearne i polinomijalne regresije. +> 🎥 Kliknite na sliku iznad za kratak video pregled linearne i polinomne regresije. -Za treniranje našeg linearno regresijskog modela koristit ćemo biblioteku **Scikit-learn**. +Za treniranje našeg Linear Regression modela koristit ćemo **Scikit-learn** biblioteku. ```python from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` - -Počinjemo odvajajući ulazne vrijednosti (značajke) i očekivane izlazne vrijednosti (etikete) u zasebne numpy nizove: + +Počinjemo odvajanjem ulaznih vrijednosti (značajki) i očekivanog izlaza (oznake) u zasebne numpy nizove: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` - -> Primijetite da smo morali izvršiti `reshape` na ulaznim podacima da bi Linear Regression paket pravilno razumio ulaz. Linearna regresija očekuje 2D niz kao ulaz, gdje svaki redak niza predstavlja vektor ulaznih značajki. U našem slučaju, budući da imamo samo jednu ulaznu varijablu, treba nam niz oblika N×1, gdje je N veličina skupa podataka. -Zatim trebamo podijeliti podatke u skupove za treniranje i testiranje, kako bismo mogli validirati naš model nakon treninga: +> Primijetite da smo morali izvesti `reshape` na ulaznim podacima kako bi Linearna regresija ispravno razumjela podatke. Linearna regresija očekuje 2D-niz kao ulaz, gdje svaki redak niza predstavlja vektor ulaznih značajki. U našem slučaju, jer imamo samo jednu ulaznu značajku, trebamo niz oblika N×1, gdje je N veličina skupa podataka. + +Zatim trebamo podijeliti podatke u skupove za treniranje i testiranje, kako bismo mogli validirati model nakon treniranja: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` - -Na kraju, treniranje samog modela linearne regresije traje samo dvije linije koda. Definiramo objekt `LinearRegression` i prilagođavamo ga naša podacima pomoću metode `fit`: + +Na kraju, treniranje stvarnog linearnog regresijskog modela traje samo dvije linije koda. Definiramo objekt `LinearRegression` i prilagođavamo ga našim podacima pomoću metode `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objekt `LinearRegression` nakon treniranja (`fit`) sadrži sve koeficijente regresije, do kojih se može pristupiti putem svojstva `.coef_`. U našem slučaju postoji samo jedan koeficijent, koji bi trebao biti oko `-0.017`. To znači da cijene djeluju kao da nešto padaju s vremenom, ali ne previše, oko 2 centa dnevno. Također možemo pristupiti točki presjeka regresije s Y-osi koristeći `lin_reg.intercept_` - u našem slučaju bit će oko `21`, što označava cijenu na početku godine. +Objekt `LinearRegression` nakon treniranja (`fit`) sadrži sve koeficijente regresije, kojima se može pristupiti putem svojstva `.coef_`. U našem slučaju postoji samo jedan koeficijent, koji bi trebao biti oko `-0.017`. To znači da cijene nekako padaju s vremenom, ali ne previše, oko 2 centa dnevno. Također možemo pristupiti presjeku regresije s Y-osi koristeći `lin_reg.intercept_` - u našem slučaju bit će oko `21`, što označava cijenu na početku godine. -Da bismo vidjeli koliko je naš model točan, možemo predvidjeti cijene na testnom skupu podataka i zatim izmjeriti koliko su naša predviđanja bliska očekivanim vrijednostima. To se može napraviti koristeći metriku korijen srednje kvadratne pogreške (RMSE), što je korijen sredine svih kvadrata razlika između očekivane i predviđene vrijednosti. +Da bismo vidjeli koliko je naš model točan, možemo predvidjeti cijene na testnom skupu podataka, a zatim izmjeriti koliko su naša predviđanja bliska očekivanim vrijednostima. To se može napraviti korištenjem metrike korijenskog srednjeg kvadratnog odstupanja (RMSE), koja je korijen prosjeka svih kvadrata razlika između očekivane i predviđene vrijednosti. ```python pred = lin_reg.predict(X_test) @@ -216,16 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred)) print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)') ``` -Naša pogreška je otprilike oko 2 boda, što je ~17%. Nije baš dobro. Još jedan pokazatelj kvalitete modela je **koeficijent determinacije**, koji se može dobiti ovako: +Naša pogreška čini se da je oko 2 boda, što je ~17%. Nije baš dobro. Drugi pokazatelj kvalitete modela je **koeficijent determinacije**, koji se može dobiti ovako: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` +Ako je vrijednost 0, to znači da model ne uzima u obzir ulazne podatke i ponaša se kao *najgori linearni prediktor*, što je jednostavno srednja vrijednost rezultata. Vrijednost 1 znači da možemo savršeno predvidjeti sve očekivane izlaze. U našem slučaju, koeficijent je oko 0.06, što je prilično nisko. -Ako je vrijednost 0, to znači da model ne uzima u obzir ulazne podatke i djeluje kao *najgori linearni prediktor*, što je jednostavno srednja vrijednost rezultata. Vrijednost 1 znači da možemo savršeno predvidjeti sve očekivane izlaze. U našem slučaju koeficijent je oko 0.06, što je prilično nisko. - -Također možemo prikazati testne podatke zajedno s regresijskom linijom da bolje vidimo kako regresija funkcionira u našem slučaju: +Također možemo nacrtati testne podatke zajedno s regresijskom linijom da bolje vidimo kako regresija funkcionira u našem slučaju: ```python plt.scatter(X_test,y_test) @@ -234,19 +233,19 @@ plt.plot(X_test,pred) Linear regression -## Polinomijalna regresija +## Polinomska regresija -Još jedna vrsta linearne regresije je polinomijalna regresija. Iako ponekad postoji linearna veza između varijabli - što je veća bundeva po volumenu, to je veća cijena - ponekad te veze nije moguće prikazati kao ravninu ili pravu liniju. +Druga vrsta linearne regresije je polinomska regresija. Iako ponekad postoji linearna veza između varijabli - što je bundeva veća po volumenu, to je cijena viša - ponekad se te veze ne mogu prikazati kao ravnina ili prava linija. -✅ Evo [još nekoliko primjera](https://online.stat.psu.edu/stat501/lesson/9/9.8) podataka za koje bi se mogla koristiti polinomijalna regresija. +✅ Evo [nekoliko dodatnih primjera](https://online.stat.psu.edu/stat501/lesson/9/9.8) podataka za koje bi se mogla koristiti polinomska regresija. -Ponovno pogledajte odnos između Datuma i Cijene. Izgleda li ovaj scatterplot kao da bi ga nužno trebalo analizirati linijom? Zar cijene ne mogu varirati? U tom slučaju možete pokušati polinomijalnu regresiju. +Pogledajte ponovno odnos između datuma i cijene. Čini li vam se da ovaj scatterplot nužno treba analizirati pravom linijom? Zar cijene ne mogu varirati? U tom slučaju možete pokušati polinomsku regresiju. ✅ Polinomi su matematički izrazi koji mogu sadržavati jednu ili više varijabli i koeficijenata. -Polinomijalna regresija stvara zakrivljenu liniju kako bi bolje pristajala nelinearnim podacima. U našem slučaju, ako uključimo kvadratnu varijablu `DayOfYear` u ulazne podatke, trebali bismo biti u mogućnosti uklopiti podatke parabolom, koja će imati minimum u nekoj točki tijekom godine. +Polinomska regresija stvara zakrivljenu liniju koja bolje pristaje nelinearnim podacima. U našem slučaju, ako uključimo kvadratnu varijablu `DayOfYear` u ulazne podatke, trebali bismo moći prilagoditi podatke parabolnom krivuljom koja će imati minimum u nekoj točki unutar godine. -Scikit-learn uključuje korisni [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za spajanje različitih koraka obrade podataka zajedno. **Pipeline** je niz **estimatora**. U našem slučaju ćemo napraviti pipeline koji prvo dodaje polinomijalne značajke našem modelu, a zatim trenira regresiju: +Scikit-learn uključuje korisno [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za kombiniranje različitih koraka obrade podataka. **Pipeline** je lanac **procjenitelja (estimators)**. U našem slučaju, kreirat ćemo pipeline koji najprije dodaje polinomske značajke našem modelu, a zatim trenira regresiju: ```python from sklearn.preprocessing import PolynomialFeatures @@ -257,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Korištenjem `PolynomialFeatures(2)` znači da će se uključiti svi polinomi drugog stupnja iz ulaznih podataka. U našem slučaju to će biti samo `DayOfYear`2, ali ako imamo dvije ulazne varijable X i Y, to će uključiti X2, XY i Y2. Također možemo koristiti i polinome višeg stupnja ako želimo. +Korištenje `PolynomialFeatures(2)` znači da ćemo uključiti sve polinome drugog stupnja iz ulaznih podataka. U našem slučaju to znači samo `DayOfYear`2, ali za dvije ulazne varijable X i Y, to će dodati X2, XY i Y2. Možemo koristiti i polinome višeg stupnja ako želimo. + +Pipelines se mogu koristiti na isti način kao i originalni objekt `LinearRegression`, tj. možemo `fit`-ati pipeline, a zatim koristiti `predict` da dobijemo rezultate predikcije: + +```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) +``` + +Za crtanje glatke krivulje aproksimacije koristimo `np.linspace` da stvorimo ujednačenu raspodjelu ulaznih vrijednosti, umjesto crtanja izravno na neuređene test podatke (što bi proizvelo cik-cak liniju): + +```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-ovi se mogu koristiti na isti način kao i originalni objekt `LinearRegression`, tj. možemo `fit` pipeline, a zatim koristiti `predict` za dobivanje rezultata predviđanja. Evo grafa koji prikazuje testne podatke i aproksimacijsku krivulju: +Evo grafikona koji prikazuje testne podatke i krivulju aproksimacije: Polynomial regression -Upotrebom polinomijalne regresije možemo dobiti nešto niži MSE i viši koeficijent determinacije, ali ne značajno. Moramo uzeti u obzir i druge značajke! +Korištenjem polinomske regresije možemo dobiti nešto niži RMSE i viši koeficijent determinacije, ali ne značajno. Trebamo uzeti u obzir i druge značajke! -> Možete primijetiti da su minimalne cijene bundeva zabilježene negdje oko Noći vještica. Kako to možete objasniti? +> Možete primijetiti da se minimalne cijene bundeva javljaju negdje oko Noći vještica. Kako to možete objasniti? -🎃 Čestitamo, upravo ste kreirali model koji može pomoći u predviđanju cijene bundeva za pite. Vjerojatno možete ponoviti isti postupak za sve vrste bundeva, ali to bi bilo zamorno. Sada ćemo naučiti kako u našem modelu uzeti u obzir sortu bundeve! +🎃 Čestitamo, upravo ste stvorili model koji može pomoći u predviđanju cijene bundeva za pite. Vjerojatno možete ponoviti isti postupak za sve vrste bundeva, ali to bi bilo naporno. Sada naučimo kako uzeti u obzir sortu bundeve u našem modelu! ## Kategorizirane značajke -U idealnom svijetu želimo moći predvidjeti cijene za različite sorte bundeva koristeći isti model. Međutim, stupac `Variety` se donekle razlikuje od stupaca poput `Month`, jer sadrži nenumeričke vrijednosti. Takvi se stupci nazivaju **kategorizirani**. +U idealnom svijetu želimo moći predvidjeti cijene za različite sorte bundeva koristeći isti model. Međutim, stupac `Variety` je donekle drugačiji od stupaca poput `Month`, jer sadrži nenumeričke vrijednosti. Takvi stupci se nazivaju **kategorizirani**. -[![ML for beginners - Kategorizirano predviđanje s linearnom regresijom](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Kategorizirano predviđanje s linearnom regresijom") +[![ML za početnike - Predikcije kategoriziranih značajki s linearnom regresijom](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kliknite na sliku iznad za kratki video pregled korištenja kategoriziranih značajki. +> 🎥 Kliknite sliku za kratki video pregled korištenja kategoriziranih značajki. -Ovdje možete vidjeti kako se prosječna cijena razlikuje po sorti: +Ovdje možete vidjeti kako prosječna cijena ovisi o sorti: Average price by variety -Da bismo uzeli sortu u obzir, prvo je moramo pretvoriti u numerički oblik, odnosno **enkodirati**. Postoji nekoliko načina kako to možemo napraviti: +Da bismo uzeli sortu u obzir, prvo ju moramo pretvoriti u numerički oblik, tj. **kodirati**. Postoji nekoliko načina kako to možemo učiniti: -* Jednostavna **numerička enkodiranja** izgradi će tablicu različitih sorti, a zatim zamijeni ime sorte njezinim indeksom u toj tablici. To nije najbolja ideja za linearnu regresiju, jer linearna regresija uzima stvarnu numeričku vrijednost indeksa i dodaje je rezultatu, množeći koeficijentom. U našem slučaju odnos između broja indeksa i cijene je jasno nelinearan, čak i ako osiguramo da su indeksi sortirani na neki specifičan način. -* **One-hot enkodiranje** će zamijeniti stupac `Variety` sa 4 različita stupca, po jedan za svaku sortu. Svaki stupac će imati vrijednost `1` ako je odgovarajući redak te sorte, i `0` inače. To znači da će u linearnoj regresiji biti četiri koeficijenta, jedan za svaku sortu bundeve, koji su odgovorni za "početnu cijenu" (ili bolje rečeno "dodatnu cijenu") za tu sortu. +* Jednostavno **numeričko kodiranje** izgradi tablicu različitih sorti, a zatim zamijeni naziv sorte indeksom u toj tablici. Ovo nije najbolja ideja za linearnu regresiju, jer linearna regresija koristi stvarnu numeričku vrijednost indeksa i dodaje je u rezultat množeći s nekim koeficijentom. U našem slučaju, odnos između broja indeksa i cijene je jasno nelinearan, čak i ako se pobrinemo da indeksi budu poredani na određeni način. +* **One-hot kodiranje** zamijenit će stupac `Variety` s 4 različita stupca, po jednim za svaku sortu. Svaki stupac će sadržavati `1` ako je odgovarajući redak te sorte, a `0` inače. To znači da će u linearnoj regresiji biti četiri koeficijenta, po jedan za svaku sortu bundeve, odgovoran za "početnu cijenu" (ili bolje rečeno "dodatnu cijenu") za tu sortu. -Sljedeći kod pokazuje kako možemo napraviti one-hot enkodiranje sorte: +Kod ispod prikazuje kako možemo napraviti one-hot kodiranje sorte: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -303,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Za treniranje linearne regresije koristeći one-hot enkodiranu sortu kao ulaz, samo trebamo ispravno inicijalizirati podatke `X` i `y`: +Za treniranje linearne regresije koristeći one-hot kodiranu sortu kao ulaz, samo trebamo pravilno inicijalizirati podatke `X` i `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ostatak koda je isti kao onaj koji smo koristili gore za treniranje linearne regresije. Ako probate, vidjet ćete da je srednja kvadratna pogreška otprilike ista, ali koeficijent determinacije je znatno veći (~77%). Da bismo dobili još točnija predviđanja, možemo uzeti u obzir i više kategoriziranih značajki, kao i numeričke kao što su `Month` ili `DayOfYear`. Da bismo dobili jedan veliki niz značajki, možemo koristiti `join`: +Ostatak koda je isti kao onaj koji smo koristili gore za treniranje linearne regresije. Ako probate, vidjet ćete da je srednja kvadratna pogreška otprilike ista, ali dobivamo znatno viši koeficijent determinacije (~77%). Da bismo dobili još točnije predikcije, možemo uzeti u obzir i druge kategorizirane značajke, kao i numeričke, poput `Month` ili `DayOfYear`. Da bismo dobili jedan veliki niz značajki, možemo koristiti `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -320,14 +341,14 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Ovdje također uzimamo u obzir grad i tip pakiranja, što nam daje MSE 2.84 (10%) i determinaciju 0.94! +Ovdje također uzimamo u obzir `City` i vrstu `Package`, što nam daje RMSE 2.84 (10.5%) i determinaciju 0.94! ## Sve zajedno -Da bismo napravili najbolji model, možemo koristiti kombinirane (one-hot enkodirane kategorizirane + numeričke) podatke iz gornjeg primjera zajedno s polinomijalnom regresijom. Evo kompletnog koda radi vaše udobnosti: +Da bismo napravili najbolji model, možemo koristiti kombinirane (one-hot kodirane kategorizirane + numeričke) podatke iz gornjeg primjera zajedno s polinomskom regresijom. Evo kompletan kod radi vaše udobnosti: ```python -# postavi podatke za trening +# postavi podatke za treniranje X = pd.get_dummies(new_pumpkins['Variety']) \ .join(new_pumpkins['Month']) \ .join(pd.get_dummies(new_pumpkins['City'])) \ @@ -344,44 +365,44 @@ pipeline.fit(X_train,y_train) # predvidi rezultate za test podatke pred = pipeline.predict(X_test) -# izračunaj MSE i determinaciju -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# izračunaj RMSE i koeficijent determinacije +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) ``` -To bi nam trebalo dati najbolji koeficijent determinacije od gotovo 97% i MSE=2.23 (~8% pogreške u predviđanju). +Ovo bi nam trebalo dati najbolji koeficijent determinacije od gotovo 97%, i RMSE=2.23 (~8% pogreška predikcije). -| Model | MSE | Determinacija | +| Model | RMSE | Determination | |-------|-----|---------------| -| Linearni model na `DayOfYear` | 2.77 (17.2%) | 0.07 | -| Polinomijalni model na `DayOfYear` | 2.73 (17.0%) | 0.08 | -| Linearni model na `Variety` | 5.24 (19.7%) | 0.77 | -| Linearni model na svim značajkama | 2.84 (10.5%) | 0.94 | -| Polinomijalni model na svim značajkama | 2.23 (8.25%) | 0.97 | +| Linearni `DayOfYear` | 2.77 (17.2%) | 0.07 | +| Polinomski `DayOfYear` | 2.73 (17.0%) | 0.08 | +| Linearni `Variety` | 5.24 (19.7%) | 0.77 | +| Linearni svi feature-i | 2.84 (10.5%) | 0.94 | +| Polinomski svi feature-i | 2.23 (8.25%) | 0.97 | -🏆 Odlično! Kreirali ste četiri modela regresije u jednoj lekciji i poboljšali kvalitetu modela do 97%. U završnom dijelu o regresiji naučit ćete o logističkoj regresiji za određivanje kategorija. +🏆 Svaka čast! Stvorili ste četiri regresijska modela u jednoj lekciji, i poboljšali kvalitetu modela do 97%. U završnom dijelu o regresiji naučit ćete o logističkoj regresiji za određivanje kategorija. --- ## 🚀Izazov -Isprobajte nekoliko različitih varijabli u ovoj bilježnici kako biste vidjeli kako korelacija odgovara točnosti modela. +Testirajte nekoliko različitih varijabli u ovom bilježniku da vidite kako korelacija korespondira s točnošću modela. ## [Kviz nakon predavanja](https://ff-quizzes.netlify.app/en/ml/) -## Pregled i samostalno učenje +## Pregled & Samostalno učenje -U ovoj lekciji smo naučili o linearnoj regresiji. Postoje i druge važne vrste regresija. Pročitajte o tehnikama Stepwise, Ridge, Lasso i Elasticnet. Dobar tečaj koji vrijedi proučiti je [Stanford tečaj statističkog učenja](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) +U ovoj lekciji smo naučili o linearnoj regresiji. Postoje i drugi važni tipovi regresije. Pročitajte o tehnikama Stepwise, Ridge, Lasso i Elasticnet. Dobar tečaj za daljnje učenje je [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Zadatak -[Izgradi model](assignment.md) +[Izradite model](assignment.md) --- **Odricanje od odgovornosti**: -Ovaj dokument je preveden pomoću AI usluge prevođenja [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku trebao bi se smatrati službenim izvorom. Za ključne informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakve nesporazume ili kriva tumačenja proizašla iz korištenja ovog prijevoda. +Ovaj dokument je preveden pomoću AI usluge prevođenja [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakva nesporazumevanja ili kriva tumačenja proizašla iz korištenja ovog prijevoda. \ No newline at end of file diff --git a/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb index 732d4d8e3..e76094599 100644 --- a/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/hr/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linearna i Polinomna Regresija za Određivanje Cijene Bundeva - Lekcija 3\n", + "## Linearna i polinomijalna regresija za cijene bundeva - Lekcija 3\n", "\n", - "Učitaj potrebne biblioteke i skup podataka. Pretvori podatke u dataframe koji sadrži podskup podataka:\n", + "Učitajte potrebne biblioteke i skup podataka. Pretvorite podatke u dataframe koji sadrži podskup podataka:\n", "\n", - "- Uključi samo bundeve čija je cijena izražena po bušelu\n", - "- Pretvori datum u mjesec\n", - "- Izračunaj cijenu kao prosjek visokih i niskih cijena\n", - "- Pretvori cijenu tako da odražava cijenu po količini bušela\n" + "- Dohvatite samo bundeve koje su cijene po punoj mjeri (bushel)\n", + "- Pretvorite datum u mjesec\n", + "- Izračunajte cijenu kao prosjek visoke i niske cijene\n", + "- Pretvorite cijenu da odražava cijene po količini pune mjere (bushel)\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Raspršeni dijagram podsjeća nas da imamo podatke samo od kolovoza do prosinca. Vjerojatno nam treba više podataka kako bismo mogli donositi zaključke na linearan način.\n" + "Dijagram raspršenja podsjeća nas da imamo podatke samo od kolovoza do prosinca. Vjerojatno nam treba više podataka da bismo mogli izvući zaključke na linearan način.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Vidimo postoji li korelacija:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Čini se da je korelacija prilično mala, ali postoji neka druga važnija veza - jer se čini da točke cijena na gornjem grafikonu imaju nekoliko različitih klastera. Napravimo grafikon koji će prikazati različite vrste bundeva:\n" + "Izgleda da je korelacija prilično mala, ali postoji neki drugi važniji odnos - jer točke cijena na grafikonu iznad čine nekoliko različitih skupina. Napravimo grafikon koji će pokazati različite sorte bundeva:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Za sada se koncentrirajmo samo na jednu vrstu - **vrsta pite**.\n" + ] }, { "cell_type": "code", @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinomna regresija\n", + "### Polinomijalna regresija\n", "\n", - "Ponekad je odnos između značajki i rezultata inherentno nelinearan. Na primjer, cijene bundeva mogu biti visoke zimi (mjeseci=1,2), zatim pasti tijekom ljeta (mjeseci=5-7), a potom ponovno porasti. Linearna regresija ne može točno pronaći ovaj odnos.\n", + "Ponekad je veza između značajki i rezultata inherentno nelinearna. Na primjer, cijene bundeva mogu biti visoke zimi (mjeseци=1,2), zatim pasti preko ljeta (mjeseци=5-7), a potom ponovno rasti. Linearna regresija nije u stanju točno pronaći ovu vezu.\n", "\n", - "U tom slučaju možemo razmotriti dodavanje dodatnih značajki. Jednostavan način je korištenje polinoma iz ulaznih značajki, što bi rezultiralo **polinomnom regresijom**. U Scikit Learn-u možemo automatski unaprijed izračunati polinomne značajke koristeći pipelines:\n" + "U tom slučaju, možemo razmotriti dodavanje dodatnih značajki. Jednostavan način je korištenje polinoma iz ulaznih značajki, što bi rezultiralo **polinomijalnom regresijom**. U Scikit Learn možemo automatski unaprijed izračunati polinomijalne značajke pomoću pipelines: \n" ] }, { @@ -777,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": [ - "### Kodiranje sorti\n", + "### Varijante kodiranja\n", "\n", - "U idealnom svijetu želimo moći predvidjeti cijene za različite sorte bundeva koristeći isti model. Da bismo uzeli sortu u obzir, prvo je moramo pretvoriti u numerički oblik, odnosno **kodirati**. Postoji nekoliko načina kako to možemo učiniti:\n", + "U idealnom svijetu, želimo moći predvidjeti cijene za različite sorte bundeve koristeći isti model. Da bismo uzeli u obzir sortu, prvo je potrebno pretvoriti je u numerički oblik, odnosno **kodirati**. Postoji nekoliko načina na koje to možemo napraviti:\n", "\n", - "* Jednostavno numeričko kodiranje koje će izraditi tablicu različitih sorti, a zatim zamijeniti naziv sorte indeksom u toj tablici. Ovo nije najbolja ideja za linearnu regresiju, jer linearna regresija uzima u obzir numeričku vrijednost indeksa, a numerička vrijednost vjerojatno neće numerički korelirati s cijenom.\n", - "* One-hot kodiranje, koje će zamijeniti stupac `Variety` s 4 različita stupca, po jedan za svaku sortu, koji će sadržavati 1 ako odgovarajući redak pripada određenoj sorti, a 0 inače.\n", + "* Jednostavno numeričko kodiranje koje će izgraditi tablicu različitih sorti, a zatim zamijeniti naziv sorte indeksom u toj tablici. Ovo nije najbolja ideja za linearnu regresiju, jer linearna regresija uzima u obzir numeričku vrijednost indeksa, a numerička vrijednost vjerojatno neće numerički korelirati s cijenom.\n", + "* One-hot kodiranje, koje će zamijeniti stupac `Variety` s 4 različita stupca, po jedan za svaku sortu, koji će sadržavati 1 ako odgovarajući red pripada toj sorti, a 0 inače.\n", "\n", - "Kod ispod pokazuje kako možemo one-hot kodirati sortu:\n" + "Kod u nastavku pokazuje kako možemo napraviti one-hot kodiranje sorte:\n" ] }, { @@ -942,7 +949,7 @@ "source": [ "### Linearna regresija na sorti\n", "\n", - "Sada ćemo koristiti isti kod kao gore, ali umjesto `DayOfYear` koristit ćemo našu one-hot-enkodiranu sortu kao ulaz:\n" + "Sada ćemo koristiti isti kod kao gore, ali umjesto `DayOfYear` koristit ćemo naš one-hot-enkodirani sortni ulaz:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Polinomna regresija\n", + "### Polinomska regresija\n", "\n", - "Polinomna regresija također se može koristiti s kategorijalnim značajkama koje su kodirane metodom one-hot-encoding. Kod za treniranje polinomne regresije u osnovi bi bio isti kao što smo vidjeli gore.\n" + "Polinomska regresija može se koristiti i s kategoriziranim značajkama koje su kodirane tehnikom one-hot. Kod za treniranje polinomske regresije bio bi u osnovi isti kao što smo vidjeli gore.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Odricanje od odgovornosti**: \nOvaj dokument je preveden pomoću AI usluge za prevođenje [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo osigurati točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za ključne informacije preporučuje se profesionalni prijevod od strane čovjeka. Ne preuzimamo odgovornost za nesporazume ili pogrešna tumačenja koja mogu proizaći iz korištenja ovog prijevoda.\n" + "---\n\n\n**Odricanje od odgovornosti**:\nOvaj je dokument preveden pomoću AI usluge za prijevod [Co-op Translator](https://github.com/Azure/co-op-translator). Iako nastojimo postići točnost, imajte na umu da automatski prijevodi mogu sadržavati pogreške ili netočnosti. Izvorni dokument na izvornom jeziku treba smatrati autoritativnim izvorom. Za kritične informacije preporučuje se profesionalni ljudski prijevod. Ne snosimo odgovornost za bilo kakva nesporazuma ili pogrešna tumačenja koja proizlaze iz korištenja ovog prijevoda.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-04T06:21:14+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "hr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sl/.co-op-translator.json b/translations/sl/.co-op-translator.json index 35f830599..b065adad0 100644 --- a/translations/sl/.co-op-translator.json +++ b/translations/sl/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sl" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:43:57+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:49:30+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sl" }, @@ -90,8 +90,8 @@ "language_code": "sl" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:18:31+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:48:57+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sl" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sl" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:45:12+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sl" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:35:35+00:00", diff --git a/translations/sl/1-Introduction/4-techniques-of-ML/README.md b/translations/sl/1-Introduction/4-techniques-of-ML/README.md index 5e2dbdbb8..a975b82cd 100644 --- a/translations/sl/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sl/1-Introduction/4-techniques-of-ML/README.md @@ -1,35 +1,35 @@ # Tehnike strojnega učenja -Proces gradnje, uporabe in vzdrževanja modelov strojnega učenja ter podatkov, ki jih uporabljajo, se močno razlikuje od mnogih drugih razvojnih delovnih tokov. V tej lekciji bomo razjasnili ta proces in predstavili glavne tehnike, ki jih morate poznati. Naučili se boste: +Postopek gradnje, uporabe in vzdrževanja modelov strojnega učenja ter podatkov, ki jih uporabljajo, je zelo drugačen od mnogih drugih razvojnih delovnih tokov. V tej lekciji bomo razjasnili proces in opisali glavne tehnike, ki jih morate poznati. Naučili se boste: -- Razumeti procese, ki so osnova strojnega učenja na visoki ravni. -- Raziskati osnovne koncepte, kot so 'modeli', 'napovedi' in 'podatki za učenje'. +- Razumeti procese, ki stojijo za strojnim učenjem na visoki ravni. +- Raziskati osnovne pojme, kot so 'modeli', 'napovedi' in 'učni podatki'. -## [Predhodni kviz](https://ff-quizzes.netlify.app/en/ml/) +## [Predpredavanje kviz](https://ff-quizzes.netlify.app/en/ml/) -[![ML za začetnike - Tehnike strojnega učenja](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML za začetnike - Tehnike strojnega učenja") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Kliknite zgornjo sliko za kratek video, ki obravnava to lekcijo. +> 🎥 Kliknite na sliko zgoraj za kratek video, ki pokriva to lekcijo. ## Uvod -Na visoki ravni je proces ustvarjanja strojnega učenja (ML) sestavljen iz več korakov: +Na visoki ravni je obrt ustvarjanja procesov strojnega učenja (ML) sestavljena iz več korakov: -1. **Odločite se za vprašanje**. Večina procesov ML se začne z vprašanjem, na katerega ni mogoče odgovoriti z enostavnim pogojnim programom ali sistemom, ki temelji na pravilih. Ta vprašanja se pogosto vrtijo okoli napovedi na podlagi zbirke podatkov. -2. **Zberite in pripravite podatke**. Da bi lahko odgovorili na svoje vprašanje, potrebujete podatke. Kakovost in včasih količina vaših podatkov bosta določili, kako dobro lahko odgovorite na začetno vprašanje. Vizualizacija podatkov je pomemben vidik te faze. Ta faza vključuje tudi razdelitev podatkov na skupino za učenje in testiranje za gradnjo modela. -3. **Izberite metodo učenja**. Glede na vaše vprašanje in naravo podatkov morate izbrati način, kako želite model naučiti, da bo najbolje odražal vaše podatke in podajal natančne napovedi. Ta del procesa ML zahteva specifično strokovno znanje in pogosto veliko eksperimentiranja. -4. **Naučite model**. Z uporabo podatkov za učenje boste uporabili različne algoritme za učenje modela, da prepozna vzorce v podatkih. Model lahko uporablja notranje uteži, ki jih je mogoče prilagoditi, da daje prednost določenim delom podatkov pred drugimi, da zgradi boljši model. -5. **Ocenite model**. Uporabite podatke, ki jih model še ni videl (vaše testne podatke), da preverite, kako se model obnese. -6. **Prilagodite parametre**. Na podlagi uspešnosti modela lahko proces ponovite z različnimi parametri ali spremenljivkami, ki nadzorujejo vedenje algoritmov, uporabljenih za učenje modela. -7. **Napovedujte**. Uporabite nove vnose za testiranje natančnosti vašega modela. +1. **Odločite se za vprašanje**. Večina procesov ML se začne z zastavljanjem vprašanja, na katerega ni mogoče odgovoriti z enostavnim pogojnim programom ali motorjem, ki temelji na pravilih. Ta vprašanja se pogosto nanašajo na napovedi na podlagi zbirke podatkov. +2. **Zberite in pripravite podatke**. Da bi lahko odgovorili na svoje vprašanje, potrebujete podatke. Kvaliteta in včasih tudi količina podatkov določata, kako dobro lahko odgovorite na začetno vprašanje. Vizualizacija podatkov je pomemben del te faze. Ta faza vključuje tudi razdelitev podatkov na učno in testno skupino za izdelavo modela. +3. **Izberite metodo učenja**. Glede na vaše vprašanje in naravo vaših podatkov morate izbrati, kako boste trenirali model, da bo najbolje odražal vaše podatke in omogočal natančne napovedi. To je del vašega ML procesa, ki zahteva posebno strokovno znanje in pogosto precej eksperimentiranja. +4. **Naučite model**. Z uporabo učnih podatkov boste uporabili različne algoritme za učenje modela, da prepozna vzorce v podatkih. Model lahko uporablja notranje uteži, ki jih je mogoče prilagoditi, da nekaterim delom podatkov dajejo prednost pred drugimi za boljši model. +5. **Ocenite model**. Uporabite nikoli prej nevidene podatke (testne podatke) iz zbranega nabora, da preverite, kako model deluje. +6. **Nastavitev parametrov**. Glede na uspešnost modela lahko postopek ponovite z drugačnimi parametri ali spremenljivkami, ki nadzorujejo vedenje algoritmov za učenje modela. +7. **Napovedovanje**. Uporabite nove vhodne podatke za testiranje natančnosti modela. -## Kakšno vprašanje zastaviti +## Katero vprašanje zastaviti -Računalniki so še posebej spretni pri odkrivanju skritih vzorcev v podatkih. Ta uporabnost je zelo koristna za raziskovalce, ki imajo vprašanja o določenem področju, na katera ni mogoče enostavno odgovoriti z ustvarjanjem sistema, ki temelji na pogojnih pravilih. Pri aktuarskih nalogah, na primer, bi lahko podatkovni znanstvenik oblikoval ročno izdelana pravila o smrtnosti kadilcev v primerjavi z nekadilci. +Računalniki so še posebej vešči odkrivanja skritih vzorcev v podatkih. Ta uporabnost je zelo koristna za raziskovalce, ki imajo vprašanja o določenem področju, na katera ni enostavno odgovoriti z ustvarjanjem pogojnega motorja pravil. Na primer, pri aktuarijskih nalogah bi lahko podatkovni znanstvenik izdelal ročno izdelana pravila o smrtnosti kadilcev in nekadilcev. -Ko pa v enačbo vključimo veliko drugih spremenljivk, se lahko model ML izkaže za bolj učinkovitega pri napovedovanju prihodnjih stopenj smrtnosti na podlagi pretekle zdravstvene zgodovine. Bolj vesel primer bi lahko bila napoved vremena za mesec april na določenem območju na podlagi podatkov, ki vključujejo zemljepisno širino, dolžino, podnebne spremembe, bližino oceana, vzorce zračnih tokov in še več. +Ko pa v enačbo vključimo še številne druge spremenljivke, se lahko izkaže, da je model ML učinkovitejši za napovedovanje prihodnjih stopenj smrtnosti na podlagi pretekle zdravstvene zgodovine. Bolj vesel primer je lahko izdelava vremenskih napovedi za mesec april v določeni lokaciji na podlagi podatkov, ki vključujejo geografsko širino, dolžino, podnebne spremembe, bližino oceana, vzorce jetnih tokov in še več. -✅ Ta [predstavitev](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskih modelih ponuja zgodovinski pogled na uporabo ML pri analizi vremena. +✅ Ta [predstavitev](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) o vremenskih modelih ponuja zgodovinski pogled na uporabo ML pri analizi vremena. ## Naloge pred gradnjo @@ -37,87 +37,89 @@ Preden začnete graditi svoj model, morate opraviti več nalog. Da bi preizkusil ### Podatki -Da bi lahko odgovorili na svoje vprašanje z določeno stopnjo gotovosti, potrebujete zadostno količino podatkov ustrezne vrste. Na tej točki morate storiti dve stvari: +Da lahko z gotovostjo odgovorite na svoje vprašanje, potrebujete dovolj podatkov ustrezne vrste. Na tej točki morate narediti dve stvari: -- **Zberite podatke**. Ob upoštevanju prejšnje lekcije o pravičnosti pri analizi podatkov zbirajte podatke skrbno. Bodite pozorni na vire teh podatkov, morebitne inherentne pristranskosti in dokumentirajte njihov izvor. -- **Pripravite podatke**. Obstaja več korakov v procesu priprave podatkov. Morda boste morali združiti podatke in jih normalizirati, če prihajajo iz različnih virov. Kakovost in količino podatkov lahko izboljšate z različnimi metodami, kot je pretvorba nizov v številke (kot to počnemo pri [Gručenju](../../5-Clustering/1-Visualize/README.md)). Morda boste ustvarili nove podatke na podlagi izvirnih (kot to počnemo pri [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Podatke lahko očistite in uredite (kot bomo storili pred lekcijo o [Spletni aplikaciji](../../3-Web-App/README.md)). Na koncu jih boste morda morali naključno razporediti in premešati, odvisno od vaših tehnik učenja. +- **Zbirajte podatke**. Glede na prejšnjo lekcijo o pravičnosti pri analizi podatkov zbirajte podatke previdno. Zavedajte se virov teh podatkov, morebitnih pristranskosti, ki jih vsebujejo, in dokumentirajte njihov izvor. +- **Pripravite podatke**. Priprava podatkov vključuje več korakov. Morda boste morali podatke združiti in jih normalizirati, če prihajajo iz različnih virov. Izboljšate lahko kakovost in količino podatkov na različne načine, na primer s pretvarjanjem nizov v številke (kot smo naredili v [Gropljenju](../../5-Clustering/1-Visualize/README.md)). Lahko tudi ustvarite nove podatke na podlagi izvirnih (kot delamo v [Klasifikaciji](../../4-Classification/1-Introduction/README.md)). Podatke lahko tudi počistite in uredite (kot bomo naredili pred lekcijo [Web App](../../3-Web-App/README.md)). Nazadnje jih boste morda morali naključno premešati glede na vaše učne tehnike. -✅ Po zbiranju in obdelavi podatkov si vzemite trenutek, da preverite, ali njihova oblika omogoča obravnavo zastavljenega vprašanja. Morda se izkaže, da podatki ne bodo dobro delovali pri vaši nalogi, kot odkrijemo v naših lekcijah o [Gručenju](../../5-Clustering/1-Visualize/README.md)! +✅ Po zbiranju in obdelavi podatkov si vzemite trenutek in preverite, ali vam njihova oblika omogoča nasloviti zastavljeno vprašanje. Lahko se zgodi, da podatki za vaš podani nalog ne bodo delovali najbolje, kar bomo odkrili v lekcijah [Gropljenja](../../5-Clustering/1-Visualize/README.md)! ### Značilnosti in cilj -[Značilnost](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je merljiva lastnost vaših podatkov. V mnogih podatkovnih nizih je izražena kot naslov stolpca, kot so 'datum', 'velikost' ali 'barva'. Vaša spremenljivka značilnosti, običajno predstavljena kot `X` v kodi, predstavlja vhodno spremenljivko, ki bo uporabljena za učenje modela. +[Značilnost](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) je merljiva lastnost vaših podatkov. V mnogih zbirkah podatkov je izražena kot naslov stolpca, kot sta 'datum', 'velikost' ali 'barva'. Vaša spremenljivka značilnosti, običajno označena kot `X` v kodi, predstavlja vhodno spremenljivko, ki jo bomo uporabili za učenje modela. -Cilj je stvar, ki jo poskušate napovedati. Cilj, običajno predstavljen kot `y` v kodi, predstavlja odgovor na vprašanje, ki ga poskušate zastaviti svojim podatkom: v decembru, kakšne **barve** bodo najcenejše buče? v San Franciscu, katera soseska bo imela najboljšo ceno **nepremičnin**? Včasih se cilj imenuje tudi atribut oznake. +Cilj je stvar, ki jo poskušate napovedati. Cilj, običajno označen kot `y` v kodi, predstavlja odgovor na vprašanje, ki ga želite zastaviti podatkom: v decembru, katere **barve** bodo buče najcenejše? v San Franciscu, kateri predeli bodo imeli najboljšo **ceno** nepremičnin? Cilj se včasih imenuje tudi atribut oznake. -### Izbor spremenljivke značilnosti +### Izbira spremenljivke značilnosti -🎓 **Izbor značilnosti in ekstrakcija značilnosti** Kako veste, katero spremenljivko izbrati pri gradnji modela? Verjetno boste šli skozi proces izbora značilnosti ali ekstrakcije značilnosti, da izberete prave spremenljivke za najbolj zmogljiv model. Vendar pa to ni isto: "Ekstrakcija značilnosti ustvarja nove značilnosti iz funkcij izvirnih značilnosti, medtem ko izbor značilnosti vrne podmnožico značilnosti." ([vir](https://wikipedia.org/wiki/Feature_selection)) +🎓 **Izbor značilnosti in ekstrakcija značilnosti** Kako veste, katero spremenljivko izbrati pri gradnji modela? Verjetno boste opravili postopek izbire značilnosti ali ekstrakcije značilnosti, da boste izbrali prave spremenljivke za najbolj zmogljiv model. Vendar to ni isto: "Ekstrakcija značilnosti ustvari nove značilnosti iz funkcij izvirnih značilnosti, medtem ko izbor značilnosti vrne podmnožico značilnosti." ([vir](https://wikipedia.org/wiki/Feature_selection)) -### Vizualizirajte svoje podatke +### Vizualizirajte podatke -Pomemben vidik orodij podatkovnega znanstvenika je moč vizualizacije podatkov z uporabo več odličnih knjižnic, kot sta Seaborn ali MatPlotLib. Vizualizacija podatkov vam lahko omogoči odkrivanje skritih korelacij, ki jih lahko izkoristite. Vaše vizualizacije vam lahko pomagajo tudi pri odkrivanju pristranskosti ali neuravnoteženih podatkov (kot odkrijemo pri [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). +Pomemben del orodjarne podatkovnega znanstvenika je moč vizualizirati podatke z uporabo več odličnih knjižnic, kot sta Seaborn ali MatPlotLib. Vizualna predstavitev podatkov vam lahko pomaga odkriti skrite korelacije, ki jih lahko uporabite. Vizualizacije vam lahko pomagajo tudi odkriti pristranskost ali neuravnotežene podatke (kot bomo videli v [Klasifikaciji](../../4-Classification/2-Classifiers-1/README.md)). -### Razdelite svoj podatkovni niz +### Razdelite svojo podatkovno zbirko -Pred učenjem morate razdeliti svoj podatkovni niz na dva ali več delov neenake velikosti, ki še vedno dobro predstavljajo podatke. +Pred učenjem morate podatke razdeliti na dva ali več delov neenake velikosti, ki pa še vedno dobro predstavljajo podatke. -- **Učenje**. Ta del podatkovnega niza se prilega vašemu modelu, da ga nauči. Ta niz predstavlja večino izvirnega podatkovnega niza. -- **Testiranje**. Testni podatkovni niz je neodvisna skupina podatkov, pogosto pridobljena iz izvirnih podatkov, ki jo uporabite za potrditev uspešnosti zgrajenega modela. -- **Validacija**. Validacijski niz je manjša neodvisna skupina primerov, ki jo uporabite za prilagoditev hiperparametrov ali arhitekture modela, da izboljšate model. Glede na velikost vaših podatkov in vprašanje, ki ga zastavljate, morda ne boste potrebovali gradnje tega tretjega niza (kot ugotavljamo pri [Napovedovanju časovnih vrst](../../7-TimeSeries/1-Introduction/README.md)). +- **Učenje**. Ta del podatkovnega nabora je namenjen treningu vašega modela. Ta nabor predstavlja večino izvirnega podatkovnega nabora. +- **Testiranje**. Testni podatkovni nabor je neodvisna skupina podatkov, pogosto zbranih iz izvirnih podatkov, ki jih uporabite za potrditev uspešnosti zgrajenega modela. +- **Validacija**. Validacijski nabor je manjša neodvisna skupina primerov, ki jo uporabite za nastavitev hiperparametrov ali arhitekture modela za izboljšanje le-tega. Glede na velikost vaših podatkov in zastavljeno vprašanje morda ta tretji nabor ne bo potreben (kot ugotavljamo v [Napovedovanju časovnih vrst](../../7-TimeSeries/1-Introduction/README.md)). ## Gradnja modela -Z uporabo podatkov za učenje je vaš cilj zgraditi model ali statistično predstavitev vaših podatkov z uporabo različnih algoritmov za **učenje**. Učenje modela ga izpostavi podatkom in mu omogoči, da naredi predpostavke o zaznanih vzorcih, ki jih odkrije, potrdi in sprejme ali zavrne. +Z uporabo učnih podatkov je vaš cilj zgraditi model ali statistični prikaz vaših podatkov z uporabo različnih algoritmov za **učenje**. Učenje modela ga izpostavi podatkom in mu omogoča, da naredi domneve o zaznanih vzorcih, ki jih odkrije, potrdi ter sprejme ali zavrne. ### Odločite se za metodo učenja -Glede na vaše vprašanje in naravo podatkov boste izbrali metodo za učenje. Če preučite [dokumentacijo Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - ki jo uporabljamo v tem tečaju - lahko raziščete številne načine za učenje modela. Glede na vaše izkušnje boste morda morali preizkusiti več različnih metod, da zgradite najboljši model. Verjetno boste šli skozi proces, pri katerem podatkovni znanstveniki ocenjujejo uspešnost modela z uporabo podatkov, ki jih model še ni videl, preverjajo natančnost, pristranskost in druge težave, ki zmanjšujejo kakovost, ter izbirajo najbolj primerno metodo učenja za obravnavano nalogo. +Glede na vaše vprašanje in naravo podatkov boste izbrali metodo za učenje modela. Pregled [dokumentacije Scikit-learn](https://scikit-learn.org/stable/user_guide.html) – ki jo uporabljamo v tem kurzu – vam omogoča raziskati mnogo načinov treniranja modela. Glede na vaše izkušnje boste morda morali preizkusiti več različnih metod, da boste zgradili najboljši model. Verjetno boste šli skozi postopek, kjer podatkovni znanstveniki ocenjujejo učinkovitost modela z uporabo neznanih podatkov, preverjajo natančnost, pristranskosti in druge težave, ki zmanjšujejo kakovost, ter izberejo najbolj primerno metodo učenja za dano nalogo. ### Naučite model -Oboroženi s podatki za učenje ste pripravljeni, da jih 'prilagodite' za ustvarjanje modela. Opazili boste, da v mnogih knjižnicah ML najdete kodo 'model.fit' - to je trenutek, ko pošljete svojo spremenljivko značilnosti kot niz vrednosti (običajno 'X') in ciljno spremenljivko (običajno 'y'). +Z učnimi podatki ste pripravljeni, da jih 'prilagodite' za ustvarjanje modela. Opazili boste, da v mnogih ML knjižnicah najdete ukaz 'model.fit' – prav v tem trenutku pošljete svojo spremenljivko značilnosti kot polje vrednosti (običajno 'X') in ciljno spremenljivko (običajno 'y'). ### Ocenite model -Ko je proces učenja zaključen (za učenje velikega modela lahko traja veliko iteracij ali 'epoh'), boste lahko ocenili kakovost modela z uporabo testnih podatkov za oceno njegove uspešnosti. Ti podatki so podmnožica izvirnih podatkov, ki jih model še ni analiziral. Lahko natisnete tabelo metrik o kakovosti vašega modela. +Ko je postopek učenja zaključen (lahko traja več ponovitev ali 'epoh', da se nauči velik model), boste lahko ocenili kakovost modela z uporabo testnih podatkov za merjenje njegove zmogljivosti. Ti podatki so podmnožica izvirnih podatkov, ki jih model prej ni analiziral. Lahko si izpišete tabelo metrik kakovosti modela. 🎓 **Prilagajanje modela** -V kontekstu strojnega učenja prilagajanje modela pomeni natančnost osnovne funkcije modela, ko poskuša analizirati podatke, s katerimi ni seznanjen. +V kontekstu strojnega učenja se prilagajanje modela nanaša na natančnost funkcije modela, ki skuša analizirati podatke, s katerimi ni seznanjen. -🎓 **Premalo prilagajanje** in **prekomerno prilagajanje** sta pogosti težavi, ki zmanjšujeta kakovost modela, saj se model prilagodi bodisi premalo bodisi preveč. To povzroči, da model podaja napovedi bodisi preveč usklajene bodisi premalo usklajene s podatki za učenje. Prekomerno prilagojen model preveč dobro napoveduje podatke za učenje, ker se je preveč naučil podrobnosti in šuma podatkov. Premalo prilagojen model ni natančen, saj ne more natančno analizirati niti podatkov za učenje niti podatkov, ki jih še ni 'videl'. +🎓 **Podučenje** in **preučenje** sta pogosti težavi, ki zmanjšujeta kakovost modela, saj se model ali ni dovolj dobro prilagodi ali pa se preveč prilega. To povzroči, da model naredi napovedi, ki so preveč natančne ali preveč ohlapne glede na učne podatke. Preučen model preveč dobro napoveduje učne podatke, ker je preveč dobro naučil podrobnosti in šum podatkov. Podučen model ni natančen, saj ne more natančno analizirati ne učnih ne še nevidenih podatkov. -![prekomerno prilagajanje modela](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/sl/overfitting.1c132d92bfd93cb6.webp) > Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) -## Prilagoditev parametrov +## Nastavitev parametrov -Ko je vaše začetno učenje zaključeno, opazujte kakovost modela in razmislite o izboljšanju z nastavitvijo njegovih 'hiperparametrov'. Več o procesu preberite [v dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). +Ko je začetno učenje končano, opazujte kakovost modela in razmislite o izboljšavah z nastavitvijo njegovih 'hiperparametrov'. Več o tem procesu preberite [v dokumentaciji](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott). ## Napovedovanje -To je trenutek, ko lahko uporabite popolnoma nove podatke za testiranje natančnosti vašega modela. V 'aplikativnem' okolju ML, kjer gradite spletne aplikacije za uporabo modela v produkciji, lahko ta proces vključuje zbiranje uporabniških vnosov (na primer pritisk na gumb), da nastavite spremenljivko in jo pošljete modelu za sklepanje ali oceno. +To je trenutek, ko lahko uporabite popolnoma nove podatke za testiranje natančnosti modela. V 'uporabnem' okolju ML, kjer gradite spletne aplikacije za uporabo modela v produkciji, ta proces lahko vključuje zbiranje uporabniškega vnosa (na primer pritisk na gumb) za nastavitev spremenljivke in pošiljanje modelu v namen sklepanja ali ocene. -V teh lekcijah boste odkrili, kako uporabiti te korake za pripravo, gradnjo, testiranje, ocenjevanje in napovedovanje - vse korake podatkovnega znanstvenika in še več, ko napredujete na svoji poti, da postanete 'full stack' inženir strojnega učenja. +V teh lekcijah boste odkrili, kako uporabljati te korake za pripravo, gradnjo, testiranje, ocenjevanje in napovedovanje – vse geste podatkovnega znanstvenika in še več, ko boste napredovali v svoji poti, da postanete 'full stack' ML inženir. --- ## 🚀Izziv -Narišite diagram poteka, ki odraža korake strokovnjaka za strojno učenje. Kje se trenutno vidite v procesu? Kje predvidevate, da boste imeli težave? Kaj se vam zdi enostavno? +Narišite potek postopka, ki prikazuje korake praktikanta ML. Kje vidite sebe zdaj v procesu? Kje pričakujete težave? Kaj vam zdi lahko? -## [Kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/) +## [Po-predavanje kviz](https://ff-quizzes.netlify.app/en/ml/) ## Pregled in samostojno učenje -Poiščite spletne intervjuje s podatkovnimi znanstveniki, ki razpravljajo o svojem vsakdanjem delu. Tukaj je [eden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). +Poiščite na spletu intervjuje s podatkovnimi znanstveniki, ki opisujejo svoje vsakdanje delo. Tukaj je [eden](https://www.youtube.com/watch?v=Z3IjgbbCEfs). -## Naloga +## Domača naloga -[Intervjuirajte podatkovnega znanstvenika](assignment.md) +[Intervju s podatkovnim znanstvenikom](assignment.md) --- + **Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda. \ No newline at end of file +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko samodejni prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem matičnem jeziku je treba obravnavati kot avtoritativni vir. Za kritične informacije priporočamo profesionalni človeški prevod. Za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda, ne odgovarjamo. + \ No newline at end of file diff --git a/translations/sl/2-Regression/3-Linear/README.md b/translations/sl/2-Regression/3-Linear/README.md index e455a2f95..8b56dbff5 100644 --- a/translations/sl/2-Regression/3-Linear/README.md +++ b/translations/sl/2-Regression/3-Linear/README.md @@ -1,97 +1,97 @@ -# Zgradite regresijski model s Scikit-learn: regresija na štiri načine +# Izgradnja regresijskega modela s Scikit-learn: štiri načini regresije ## Opomba za začetnike -Linearna regresija se uporablja, kadar želimo napovedati **numerično vrednost** (na primer cena hiše, temperatura ali prodaja). -Deluje tako, da najde najboljšo ravno črto, ki predstavlja povezavo med vhodnimi značilnostmi in izhodom. +Linearna regresija se uporablja, ko želimo napovedati **številsko vrednost** (na primer cena hiše, temperatura ali prodaja). +Deluje tako, da najde premico, ki najbolje prikazuje odnos med vhodnimi značilnostmi in izhodom. V tej lekciji se osredotočamo na razumevanje koncepta, preden raziščemo bolj napredne regresijske tehnike. -![Linear vs polynomial regression infographic](../../../../translated_images/sl/linear-polynomial.5523c7cb6576ccab.webp) +![Infografika linearne in polinomske regresije](../../../../translated_images/sl/linear-polynomial.5523c7cb6576ccab.webp) > Infografika avtorja [Dasani Madipalli](https://twitter.com/dasani_decoded) -## [Kviz pred predavanjem](https://ff-quizzes.netlify.app/en/ml/) +## [Pre-razpredavalni kviz](https://ff-quizzes.netlify.app/en/ml/) -> ### [Ta lekcija je na voljo tudi v R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) +> ### [Ta lekcija je na voljo tudi v R-ju!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html) ### Uvod -Do zdaj ste raziskovali, kaj je regresija, z vzorčnimi podatki, zbranimi iz podatkovnega nabora za cene buč, ki jih bomo uporabljali v tej lekciji. Prav tako ste ju vizualizirali z uporabo Matplotlib. +Do zdaj ste raziskali, kaj je regresija, na vzorčnih podatkih iz nabora podatkov o cenah buč, ki jih bomo uporabili skozi to lekcijo. Prav tako ste jih vizualizirali z uporabo Matplotlib. -Zdaj ste pripravljeni poglobljeno raziskati regresijo za ML. Medtem ko vizualizacija omogoča razumevanje podatkov, prava moč strojnega učenja izvira iz _usposabljanja modelov_. Modeli se usposabljajo na zgodovinskih podatkih, da samodejno zajamejo odvisnosti med podatki in omogočajo napovedovanje izidov za nove podatke, ki jih model še ni videl. +Zdaj ste pripravljeni, da se poglobite v regresijo za strojno učenje (ML). Medtem ko vizualizacija omogoča razumevanje podatkov, prava moč strojnega učenja prihaja iz _učenja modelov_. Modele se trenira na zgodovinskih podatkih, da samodejno zajamejo odvisnosti podatkov, in omogočajo napovedovanje rezultatov za nove podatke, ki jih model še ni videl. -V tej lekciji boste spoznali dve vrsti regresije: _osnovno linearno regresijo_ in _polinomsko regresijo_, skupaj z nekaj matematike, ki je podlaga za ti tehniki. Ti modeli nam bodo omogočili napovedovanje cen buč glede na različne vhodne podatke. +V tej lekciji boste izvedeli več o dveh vrstah regresije: _osnovna linearna regresija_ in _polinomska regresija_, skupaj z nekaj matematike, ki leži za tema tehnikama. Ti modeli nam bodo omogočili napovedati cene buč glede na različne vhodne podatke. -[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression") +[![ML za začetnike - Razumevanje linearne regresije](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML za začetnike - Razumevanje linearne regresije") > 🎥 Kliknite na zgornjo sliko za kratek video pregled linearne regresije. -> V celotnem tematskem sklopu predvidevamo minimalno matematično znanje in želimo, da bo dostopno študentom iz drugih področij, zato bodite pozorni na opombe, 🧮 oznake, diagrame in druge učne pripomočke za lažje razumevanje. +> V celotnem temeljitem programu predpostavljamo minimalno znanje matematike in si prizadevamo, da bi bilo dostopno študentom iz drugih področij, zato bodite pozorni na opombe, 🧮 izpostavitve, diagrame in druga učna orodja, ki pomagajo pri razumevanju. ### Predpogoj -Zdaj morate biti seznanjeni s strukturo podatkov o bučah, ki jih preučujemo. Te podatke najdete prednaložene in očiščene v datoteki _notebook.ipynb_ te lekcije. V tej datoteki je cena buče prikazana na merico (bushel) v novem podatkovnem okviru. Poskrbite, da lahko te zvezke zaženete v jedrih (kernels) v Visual Studio Code. +Do zdaj bi morali biti seznanjeni s strukturo podatkov o bučah, ki jih pregledujemo. Naloženi in očiščeni so v datoteki _notebook.ipynb_ te lekcije. V datoteki je prikazana cena buče na bushel v novem podatkovnem okviru. Prepričajte se, da lahko zaženete te zvezke v jederih v Visual Studio Code. ### Priprava -Kot opomnik, te podatke nalagate, da bi lahko postavili vprašanja. +Za opomnik, te podatke nalagate, da zastavite vprašanja z njimi. - Kdaj je najboljši čas za nakup buč? -- Kakšno ceno lahko pričakujem za škatlo miniaturnih buč? -- Naj jih kupim v košarah za pol bushela ali v škatlah za 1 1/9 bushela? -Poglobimo se še naprej v te podatke. +- Kakšno ceno lahko pričakujem za paket mini buč? +- Ali naj jih kupim v košarah s polovičnim bushelom ali v škatlah 1 1/9 bushel? +Poglejmo še naprej v te podatke. -V prejšnji lekciji ste ustvarili Pandas podatkovni okvir in vanj vnesli del originalnega nabora podatkov, kjer ste standardizirali cene glede na bushel. S tem ste lahko zajeli približno 400 podatkovnih točk in le za jesenske mesece. +V prejšnji lekciji ste ustvarili Pandas podatkovni okvir in vanj naložili del izvornega nabora podatkov ter standardizirali cene na bushel. S tem ste zbrali približno 400 podatkovnih točk in to le za jesenske mesece. -Oglejte si podatke, ki smo jih prednaložili v pripadajočem zvezku te lekcije. Podatki so prednaloženi in kaže se začetni razpršeni diagram (scatterplot), ki prikazuje mesečne podatke. Morda lahko pridobimo več podrobnosti o naravi podatkov z dodatnim čiščenjem. +Oglejte si podatke, ki smo jih naložili v spremnem zvezku te lekcije. Podatki so naloženi in prikazan je začetni raztreseni diagram, ki kaže mesečne podatke. Morda lahko z dodatnim čiščenjem podatkov pridobimo več podrobnosti o naravi podatkov. -## Linearna regresijska črta +## Premica linearne regresije -Kot ste se naučili v lekciji 1, je cilj linearne regresije sposobnost narisati črto, ki: +Kot ste se naučili v Lekciji 1, je cilj linearne regresije lahko narisan premico, ki: -- **Prikazuje razmerja med spremenljivkami.** Prikaže odnos med spremenljivkami. -- **Omogoča napovedi.** Natančno napoveduje, kje bi nova podatkovna točka padla v odnosu do te črte. +- **Prikaže odnos med spremenljivkami**. Prikaže povezavo med spremenljivkami +- **Omogoči napovedi**. Naredi natančne napovedi, kje se bo nova podatkovna točka uvrstila glede na to premico. -Tipično za **regresijo z najmanjšimi kvadrati** je, da se nariše takšna črta. Izraz "najmanjši kvadrati" se nanaša na postopek minimiziranja skupne napake v našem modelu. Za vsako podatkovno točko merimo navpično razdaljo (imenuje se ostanek) med dejansko točko in regresijsko črto. +Tipična za **metodo najmanjših kvadratov** je risanje take premice. Izraz "metoda najmanjših kvadratov" se nanaša na postopek minimizacije skupne napake v našem modelu. Za vsako podatkovno točko izmerimo vertikalno razdaljo (imenovano residuum) med dejansko točko in našo regresijsko premico. -Te razdalje kvadriramo iz dveh glavnih razlogov: +Te razdalje kvadriramo z dvema glavnima razlogoma: -1. **Velikost pred smerjo:** Želimo, da se napaka -5 in +5 obravnavata enako. Kvadriranje naredi vse vrednosti pozitivne. +1. **Velikost pred smerjo:** Želimo enako obravnavati napako -5 kot napako +5. Kvadriranje naredi vse vrednosti pozitivne. -2. **Kaznovanje odstopanj:** Kvadriranje daje večjo težo večjim napakam in sili črto, da ostane bližje točk, ki so bolj oddaljene. +2. **Kaznovanje odstopanj:** Kvadriranje daje večjo težo večjim napakam, kar sili premico, da ostane bližje daleč oddaljenim točkam. -Nato seštejemo vse te kvadrirane vrednosti. Naš cilj je poiskati črto, kjer je ta vsota najmanjša (najnižja možna vrednost) — od tod ime "najmanjši kvadrati". +Nato vse te kvadrirane vrednosti seštejemo. Naš cilj je najti specifično premico, kjer je ta končni vsota najmanjša (najmanjša možna vrednost)—od tod tudi ime "najmanjših kvadratov". -> **🧮 Pokaži mi formulo** +> **🧮 Pokaži mi matematiko** > -> Ta črta, imenovana _črta najboljšega prileganja_, je izražena z [enačbo](https://en.wikipedia.org/wiki/Simple_linear_regression): +> Ta premica, imenovana _premica najboljšega prileganja_, je izražena z [enačbo](https://en.wikipedia.org/wiki/Simple_linear_regression): > > ``` > Y = a + bX > ``` > -> `X` je 'razložilna spremenljivka'. `Y` je 'odvisna spremenljivka'. Naklon črte je `b`, `a` pa je y-presečišče, kar pomeni vrednost `Y`, ko je `X = 0`. +> `X` je 'razlagateljska spremenljivka'. `Y` je 'odvisna spremenljivka'. Naklon premice je `b`, `a` pa je y-presečišče, kar pomeni vrednost `Y`, kadar je `X = 0`. > ->![izrračunaj naklon](../../../../translated_images/sl/slope.f3c9d5910ddbfcf9.webp) +>![izračun naklona](../../../../translated_images/sl/slope.f3c9d5910ddbfcf9.webp) > > Najprej izračunajte naklon `b`. Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) > -> Z drugimi besedami in glede na vprašanje iz podatkov o bučah: "napovedati ceno buče na bushel glede na mesec", `X` bi se nanašal na ceno, `Y` pa na mesec prodaje. +> Z drugimi besedami, pri originalnem vprašanju naših podatkov o bučah: "napovedovati ceno buče na bushel po mesecih", `X` bi pomenil mesec, `Y` pa ceno. > ->![dopovej enačbo](../../../../translated_images/sl/calculation.a209813050a1ddb1.webp) +>![dopolni enačbo](../../../../translated_images/sl/calculation.a209813050a1ddb1.webp) > -> Izračunajte vrednost Y. Če plačujete okoli 4 dolarje, mora biti april! Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) +> Izračunajte vrednost Y. Če plačujete okoli 4 $, mora biti april! Infografika avtorice [Jen Looper](https://twitter.com/jenlooper) > -> Matematika, ki izračuna črto, mora prikazati naklon črte, ki je tudi odvisen od presečišča, oziroma kje se `Y` nahaja, ko je `X = 0`. +> Matematika, ki izračuna premico, mora pokazati naklon premice, ki je odvisen tudi od presečišča, torej kjer je `Y`, ko je `X = 0`. > -> Metode za izračun teh vrednosti lahko opazujete na spletni strani [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Obiščite tudi [ta kalkulator najmanjših kvadratov](https://www.mathsisfun.com/data/least-squares-calculator.html), da vidite, kako vrednosti vplivajo na črto. +> Metode izračuna teh vrednosti si lahko ogledate na spletni strani [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Prav tako obiščite [ta kalkulator najmanjših kvadratov](https://www.mathsisfun.com/data/least-squares-calculator.html), da vidite, kako vrednosti števil vplivajo na premico. ## Korelacija -Še en izraz za razumevanje je **korelacijski koeficient** med danima spremenljivkama X in Y. Z uporabo scatterplota lahko hitro vizualizirate ta koeficient. Diagram, kjer so podatkovne točke razvrščene v lepo črto, ima visoko korelacijo, medtem ko ima diagram z razpršenimi točkami po celotnem območju X in Y nizko korelacijo. +Še en izraz, ki ga je treba razumeti, je **korelacijski koeficient** med danima spremenljivkama X in Y. Z uporabo raztresenega diagrama lahko hitro vizualizirate ta koeficient. Graf z raztresenimi točkami, ki tvorijo urejeno premico, ima visoko korelacijo, medtem ko graf z raztresenimi točkami povsod med X in Y ima nizko korelacijo. -Dober linearni regresijski model bo tisti, ki ima visok (bližje 1 kot 0) korelacijski koeficient z metodo najmanjših kvadratov in regresijsko črto. +Dober model linearne regresije bo tisti, ki ima visoko (bližje 1 kot 0) korelacijski koeficient po metodi najmanjših kvadratov z regresijsko premico. -✅ Zaženite zvezek, ki spremlja to lekcijo, in si oglejte scatterplot Medijec glede na Ceno. Ali se podatki povezani z mesecem in ceno za prodajo buč zdijo imeti visoko ali nizko korelacijo glede na vašo vizualno interpretacijo scatterplota? Se to spremeni, če uporabite bolj natančno mero namesto `Month`, npr. *dan v letu* (tj. število dni od začetka leta)? +✅ Zaženite zvezek, ki spremlja to lekcijo, in poglejte scatterplot med mesecem in ceno. Ali se zdi, da podatki o povezanosti meseca in cene buč kažejo visoko ali nizko korelacijo, glede na vašo vizualno interpretacijo scatterplot-a? Se to spremeni, če uporabite natančnejšo meritev namesto `Month`, npr. *dan v letu* (tj. število dni od začetka leta)? -V spodnji kodi bomo predpostavili, da smo podatke očistili in dobili podatkovni okvir z imenom `new_pumpkins`, podoben naslednjemu: +V spodnji kodi predpostavljamo, da smo podatke očistili in dobili podatkovni okvir z imenom `new_pumpkins`, podoben naslednjemu: ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price ---|-------|-----------|---------|------|---------|-----------|------------|------- @@ -101,36 +101,36 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri 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 -> Koda za čiščenje podatkov je na voljo v [`notebook.ipynb`](notebook.ipynb). Izvedli smo enake korake čiščenja kot v prejšnji lekciji in izračunali stolpec `DayOfYear` z naslednjim izrazom: +> Koda za čiščenje podatkov je na voljo v [`notebook.ipynb`](notebook.ipynb). Opravili smo enake korake čiščenja kot v prejšnji lekciji in izračunali stolpec `DayOfYear` z naslednjim izrazom: ```python day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days) ``` -Zdaj, ko imamo razumevanje matematike za linearno regresijo, ustvarimo regresijski model, da vidimo, ali lahko napovemo, kateri paket buč bo imel najboljše cene. Nekdo, ki kupuje buče za praznično bučno okrasje, bi morda želel to informacijo, da bi lahko optimiziral nakupe paketov. +Zdaj, ko imate razumevanje matematike za linearno regresijo, ustvarimo regresijski model, da preverimo, ali lahko napovemo, kateri paket buč bo imel najboljše cene. Nekdo, ki kupuje buče za praznično bučno njivo, bi morda želel te informacije, da bi optimiziral nakup paketov buč za njivo. ## Iskanje korelacije -[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression") +[![ML za začetnike - Iskanje korelacije: ključ do linearne regresije](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML za začetnike - Iskanje korelacije: ključ do linearne regresije") > 🎥 Kliknite na zgornjo sliko za kratek video pregled korelacije. -Iz prejšnje lekcije ste verjetno videli, da povprečna cena za različne mesece izgleda takole: +Iz prejšnje lekcije ste verjetno videli, da povprečna cena po mesecih izgleda takole: -Average price by month +Povprečna cena po mesecih -To nakazuje, da bi morala obstajati neka korelacija, in lahko poskusimo usposobiti linearni regresijski model, ki napoveduje odnos med `Month` in `Price` ali med `DayOfYear` in `Price`. Tukaj je scatterplot, ki prikazuje slednji odnos: +To nakazuje, da bi morala biti nekakšna korelacija, in lahko poskusimo s treniranjem linearnega regresijskega modela, ki napoveduje zvezo med `Month` in `Price` ali med `DayOfYear` in `Price`. Tukaj je scatterplot, ki kaže drugo zvezo: -Scatter plot of Price vs. Day of Year +Raztreseni diagram cena proti dnevu v letu -Poglejmo, ali je korelacija ob uporabi funkcije `corr`: +Poglejmo, ali obstaja korelacija z uporabo funkcije `corr`: ```python print(new_pumpkins['Month'].corr(new_pumpkins['Price'])) print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price'])) ``` -Zdi se, da je korelacija precej majhna, -0,15 glede na `Month` in -0,17 glede na `DayOfMonth`, vendar je lahko še kakšen drug pomemben odnos. Zdi se, da obstajajo različni grozdi cen, ki ustrezajo različnim sortam buč. Za potrditev te hipoteze prikažimo vsak razred buč z drugo barvo. Z uporabo parametra `ax` funkciji `scatter` lahko narišemo vse točke na istem diagramu: +Zdi se, da je korelacija dokaj majhna, -0,15 za `Month` in -0,17 za `DayOfYear`, a obstaja lahko še ena pomembna zveza. Videti je, da obstajajo različni skupki cen, povezani z različnimi vrstami buč. Da potrdimo to hipotezo, narišimo vsako kategorijo buč z drugačno barvo. Z uporabo parametra `ax` v funkciji `scatter` lahko narišemo vse točke na isti graf: ```python ax=None @@ -140,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot of Price vs. Day of Year +Raztreseni diagram cena proti dnevu v letu z barvami -Naša preiskava nakazuje, da ima sorta večji vpliv na ceno kot dejanski datum prodaje. To lahko vidimo s stolpčnim diagramom: +Naše raziskovanje nakazuje, da ima sorta večji vpliv na skupno ceno kot dejanski datum prodaje. To lahko vidiš tudi z stolpčnim diagramom: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Bar graph of price vs variety +Stolpčni graf cene glede na vrsto -Za trenutek se osredotočimo samo na eno sorto buč, 'tip pite', in si oglejmo, kakšen vpliv ima datum na ceno: +Za zdaj se osredotočimo samo na eno sorto buč, na 'pie type', in poglejmo, kakšen vpliv ima datum na ceno: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot of Price vs. Day of Year +Raztreseni diagram cena proti dnevu v letu za pie type buče -Če zdaj izračunamo korelacijo med `Price` in `DayOfYear` z uporabo funkcije `corr`, bomo dobili nekaj okoli `-0,27` - kar pomeni, da ima smisel usposabljanje napovednega modela. +Če zdaj izračunamo korelacijo med `Price` in `DayOfYear` z uporabo funkcije `corr`, dobimo nekaj takega kot `-0,27` - kar pomeni, da ima smisel trenirati napovedni model. -> Pred usposabljanjem linearnega regresijskega modela je pomembno, da podatki niso nepopolni. Linearna regresija ne deluje dobro z manjkajočimi vrednostmi, zato je smiselno odstraniti vse prazne celice: +> Pred treniranjem linearnega regresijskega modela je pomembno poskrbeti, da so naši podatki čisti. Linearna regresija ne deluje dobro z manjkajočimi vrednostmi, zato je smiselno odstraniti vse prazne celice: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Drugi pristop bi bil, da prazne vrednosti zapolnimo s povprečnimi vrednostmi iz ustreznega stolpca. +Drugi pristop bi bil zapolniti te prazne vrednosti s povprečnimi vrednostmi iz pripadajočega stolpca. ## Preprosta linearna regresija -[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn") +[![ML za začetnike - Linearna in polinomska regresija s Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML za začetnike - Linearna in polinomska regresija s Scikit-learn") > 🎥 Kliknite na zgornjo sliko za kratek video pregled linearne in polinomske regresije. -Za usposabljanje našega modela linearne regresije bomo uporabili knjižnico **Scikit-learn**. +Za treniranje našega linearnega regresijskega modela bomo uporabili knjižnico **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -183,31 +183,31 @@ from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split ``` -Najprej ločimo vhodne vrednosti (značilnosti) in pričakovani izhod (oznake) v ločene numpy tabele: +Začnemo s ločevanjem vhodnih vrednosti (značilnosti) in pričakovanih izhodov (oznaka) v ločene numpy matrike: ```python X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1) y = pie_pumpkins['Price'] ``` -> Upoštevajte, da smo morali vhodne podatke preoblikovati z uporabo `reshape`, da jih paket Linear Regression pravilno razume. Linearna regresija pričakuje 2D-tabelo kot vhod, kjer vsak vrstica predstavlja vektor vhodnih značilnosti. V našem primeru, ker imamo samo eno vhodno vrednost, potrebujemo tabelo oblike N×1, kjer je N velikost nabora podatkov. +> Upoštevajte, da smo morali na vhodne podatke uporabiti `reshape`, da jih paket Linearne regresije pravilno razume. Linearna regresija pričakuje 2D-matriko kot vhod, kjer vsak vrstica predstavlja vektor vhodnih značilnosti. V našem primeru, ker imamo le en vhod, potrebujemo matriko oblike N×1, kjer je N velikost nabora podatkov. -Nato moramo podatke razdeliti na učni in testni nabor, da lahko preverimo model po usposabljanju: +Nato moramo podatke razdeliti na učni in testni nabor, da lahko preverimo naš model po učenju: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` -Nazadnje usposabljanje samega linearnega regresijskega modela vzame le dve vrstici kode. Definiramo objekt `LinearRegression` in ga prilagodimo našim podatkom z metodo `fit`: +Na koncu učenje samega linearnega regresijskega modela traja zgolj dve vrstici kode. Definiramo objekt `LinearRegression` in ga prilegamo na naše podatke z metodo `fit`: ```python lin_reg = LinearRegression() lin_reg.fit(X_train,y_train) ``` -Objekt `LinearRegression` po `fit`-anju vsebuje vse koeficiente regresije, do katerih lahko dostopamo z lastnostjo `.coef_`. V našem primeru je le en koeficient, ki naj bi bil okoli `-0.017`. To pomeni, da se cene zdi, da rahlo upadajo sčasoma, vendar ne preveč, približno 2 centa na dan. Dostopamo lahko tudi do presečišča regresije z Y-osjo z uporabo `lin_reg.intercept_` - v našem primeru bo to okoli `21`, kar nakazuje ceno na začetku leta. +Objekt `LinearRegression` po izvedbi `fit` vsebuje vse koeficiente regresije, do katerih lahko dostopamo z lastnostjo `.coef_`. V našem primeru imamo le en koeficient, ki bi moral biti približno `-0.017`. To pomeni, da cene sčasoma nekoliko upadajo, vendar ne preveč, približno 2 centa na dan. Do presečišča regresije z Y-osjo lahko dostopamo z `lin_reg.intercept_` - v našem primeru bo to približno `21`, kar kaže na ceno na začetku leta. -Da vidimo, kako natančen je naš model, lahko napovemo cene na testnem naboru podatkov in nato izmerimo, kako blizu so naše napovedi pričakovanim vrednostim. To lahko storimo z uporabo metrike korenskega povprečnega kvadratnega odklona (RMSE), ki je koren povprečja vseh kvadratnih razlik med pričakovano in napovedano vrednostjo. +Da vidimo, kako točen je naš model, lahko napovemo cene na testnem naboru podatkov in nato izmerimo, kako blizu so naše napovedi pričakovanim vrednostim. To lahko storimo z metrično napako srednje kvadratne napake (RMSE), ki je koren povprečja vseh kvadratov razlik med pričakovano in napovedano vrednostjo. ```python pred = lin_reg.predict(X_test) @@ -216,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}%)') ``` -Naša napaka je približno 2 točki, kar je ~17%. Ni prav dobro. Drugi pokazatelj kakovosti modela je **koeficient determinacije**, ki ga lahko dobimo tako: +Naša napaka je približno 2 točki, kar je ~17 %. Ni prav dobro. Drugi pokazatelj kakovosti modela je **koeficient determinacije**, ki ga lahko pridobimo tako: ```python score = lin_reg.score(X_train,y_train) print('Model determination: ', score) ``` -Če je vrednost 0, to pomeni, da model ne upošteva vhodnih podatkov in deluje kot *najslabši linearni napovedovalec*, ki je preprosto povprečna vrednost rezultata. Vrednost 1 pomeni, da lahko dokončno napovemo vse pričakovane izhode. V našem primeru je koeficient okoli 0,06, kar je precej nizko. +Če je vrednost 0, pomeni, da model ne upošteva vhodnih podatkov in deluje kot *najslabši linearen napovedovalec*, kar je preprosto povprečna vrednost rezultata. Vrednost 1 pomeni, da lahko popolnoma napovemo vse pričakovane izhode. V našem primeru je koeficient okoli 0,06, kar je dokaj nizko. -Lahko tudi narišemo testne podatke skupaj z regresijsko premico, da lažje vidimo, kako regresija deluje v našem primeru: +Testne podatke lahko tudi narišemo skupaj z regresijsko linijo, da bolje vidimo, kako regresija deluje v našem primeru: ```python plt.scatter(X_test,y_test) @@ -235,17 +235,17 @@ plt.plot(X_test,pred) ## Polinomska regresija -Druga vrsta linearne regresije je polinomska regresija. Medtem ko je včasih linearni odnos med spremenljivkami - večja kot je buča po volumnu, višja je cena - so včasih ti odnosi takšni, da jih ne moremo prikazati kot ravnino ali ravno črto. +Druga vrsta linearne regresije je polinomska regresija. Medtem ko včasih obstaja linearna povezava med spremenljivkami – večja kot je buča v volumenu, višja je cena – včasih takšnih povezav ni mogoče opisati z ravnino ali ravno črto. -✅ Tukaj je [še nekaj primerov](https://online.stat.psu.edu/stat501/lesson/9/9.8) podatkov, ki bi lahko uporabili polinomsko regresijo. +✅ Tukaj je [nekaj dodatnih primerov](https://online.stat.psu.edu/stat501/lesson/9/9.8) podatkov, ki bi jih lahko obravnavali s polinomsko regresijo. -Poglejmo še enkrat odnos med datumom in ceno. Ali se vam ta raščrtani graf zdi, da bi ga bilo treba nujno analizirati z ravno črto? Se cene ne morejo spreminjati? V tem primeru lahko poskusite polinomsko regresijo. +Poglejmo še enkrat razmerje med datumom in ceno. Ali ta razpršeni graf nujno zahteva analizo z ravno črto? Se cene ne morejo spreminjati? V takem primeru lahko poskusite polinomsko regresijo. ✅ Polinomi so matematični izrazi, ki lahko vsebujejo eno ali več spremenljivk in koeficientov. -Polinomska regresija ustvari ukrivljeno črto, da bolje prilepi nelinearne podatke. V našem primeru, če vključimo spremenljivko z kvadratom `DayOfYear` v vhodne podatke, bi morali biti sposobni prilegati naše podatke s parabolično krivuljo, ki bo imela minimum na določeni točki v letu. +Polinomska regresija ustvari ukrivljeno linijo, da bolje prilega nelinearne podatke. V našem primeru, če vključimo spremenljivko \( \text{DayOfYear}^2 \) v vhodne podatke, bi morali z ukrivljeno parabolo dobro prilagoditi naše podatke, parabola bo imela minimum nekje v letu. -Scikit-learn vključuje uporaben [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za združevanje različnih korakov obdelave podatkov. **Pipeline** je veriga **estimatorjev**. V našem primeru bomo ustvarili pipeline, ki najprej doda polinomske značilnosti k našemu modelu, nato pa izvede učenje regresije: +Scikit-learn vključuje uporaben [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) za kombiniranje različnih korakov obdelave podatkov. **Pipeline** je veriga **ocenjevalcev**. V našem primeru bomo ustvarili pipeline, ki najprej doda polinomske značilnosti v naš model, nato pa izvede regresijo: ```python from sklearn.preprocessing import PolynomialFeatures @@ -256,36 +256,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) ``` -Uporaba `PolynomialFeatures(2)` pomeni, da bomo vključili vse polinome druge stopnje iz vhodnih podatkov. V našem primeru bo to samo pomenilo `DayOfYear`2, vendar pa pri dveh vhodnih spremenljivkah X in Y doda X2, XY in Y2. Lahko uporabimo tudi višje stopnje polinomov, če želimo. +Uporaba `PolynomialFeatures(2)` pomeni, da bomo vključili vse polinome druge stopnje iz vhodnih podatkov. V našem primeru bo to zgolj \( \text{DayOfYear}^2 \), medtem ko bi pri dveh vhodnih spremenljivkah X in Y to dodalo \( X^2 \), XY in \( Y^2 \). Po želji lahko uporabimo tudi višje stopnje polinomov. -Pipeline lahko uporabljamo na enak način kot izvorni objekt `LinearRegression`, tj. lahko uporabimo `fit` na pipelineu in nato uporabimo `predict` za pridobitev rezultatov napovedi. Tukaj je graf, ki prikazuje testne podatke in približno krivuljo: +Pipeline se lahko uporablja enako kot izvirni objekt `LinearRegression`, torej lahko izvedemo `fit` na pipeline in nato uporabimo `predict` za napoved rezultatov: + +```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) +``` + +Za risanje gladke aproksimacijske krivulje uporabimo `np.linspace` za ustvarjanje enakomerno razporejenih vhodnih vrednosti, namesto da bi risali neposredno na neurejenih testnih podatkih (kar bi dalo cikelasto črto): + +```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) +``` + +Tukaj je graf, ki prikazuje testne podatke in aproksimacijsko krivuljo: Polynomial regression -Z uporabo polinomske regresije lahko dosežemo nekoliko nižjo MSE in višji koeficient determinacije, vendar ne bistveno. Upoštevati moramo še druge značilnosti! +Z uporabo polinomske regresije lahko pridobimo nekoliko nižji RMSE in višji koeficient determinacije, vendar ne občutno. Treba je upoštevati še druge značilnosti! -> Vidite, da so minimalne cene buč opažene nekje okoli noči čarovnic. Kako to pojasnite? +> Vidite lahko, da so minimalne cene buč nekje okoli noči čarovnic. Kako to razložite? -🎃 Čestitamo, ravnokar ste ustvarili model, ki lahko pomaga napovedati ceno buč za pito. Verjetno lahko isto proceduro ponovite za vse vrste buč, vendar bi bilo to zamudno. Naučimo se zdaj, kako upoštevati različico buče v našem modelu! +🎃 Čestitamo, pravkar ste ustvarili model, ki lahko napove ceno buč za pito. Najverjetneje lahko isto proceduro ponovite za vse vrste buč, vendar bi bilo to zamudno. Naučimo se zdaj, kako upoštevati sorto buč v našem modelu! -## Kategorijske značilnosti +## Kategorne značilnosti -V idealnem svetu želimo z istim modelom napovedovati cene za različne vrste buč. Vendar je stolpec `Variety` nekoliko drugačen od stolpcev, kot je `Month`, saj vsebuje neničelne vrednosti. Takšni stolpci se imenujejo **kategorijski**. +V idealnem svetu želimo lahko napovedovati cene za različne sorte buč z istim modelom. Stolpec `Variety` pa je nekoliko drugačen od stolpcev, kot je `Month`, saj vsebuje nenumerične vrednosti. Takšni stolpci se imenujejo **kategorni**. [![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression") -> 🎥 Kliknite na sliko zgoraj za kratek video pregled uporabe kategorijskih značilnosti. +> 🎥 Kliknite na zgornjo sliko za kratek video pregled uporabe kategornih značilnosti. -Tukaj lahko vidite, kako povprečna cena zaleži od različice: +Tukaj lahko vidite, kako povprečna cena zavisi od sorte: Average price by variety -Da bi upoštevali različico, jo moramo najprej pretvoriti v številčno obliko ali jo **kodirati**. Obstaja več načinov, kako to storiti: +Da upoštevamo sorto, jo moramo najprej pretvoriti v numerično obliko, torej jo **kodirati**. Obstaja več načinov, kako to lahko naredimo: -* Preprosta **numerična kodiranja** zgradi tabelo različnih različic in nato nadomesti ime različice z indeksom v tej tabeli. To ni najboljša ideja za linearno regresijo, ker linearna regresija upošteva dejansko številčno vrednost indeksa in ga prišteje rezultatu, množi z nekim koeficientom. V našem primeru je razmerje med številko indeksa in ceno očitno nelinearno, tudi če zagotovimo, da so indeksi urejeni na določen način. -* **One-hot kodiranje** nadomesti stolpec `Variety` s 4 različnimi stolpci, po enim za vsako različico. Vsak stolpec bo vseboval `1`, če je ustrezni vrstici dodeljena dana različica, in `0` sicer. To pomeni, da bo v linearni regresiji štiri koeficiente, po enega za vsako vrsto buč, odgovornega za "začetno ceno" (ali bolje "dopolnilno ceno") za to določeno vrsto. +* Preprosta **numerična kodiranja** ustvari tabelo različnih sort in nato ime sorte zamenja z indeksom v tej tabeli. To ni najboljši pristop za linearno regresijo, ker linearna regresija dejansko vzame numerično vrednost indeksa in jo pomnoži z nekim koeficientom. V našem primeru je razmerje med številom indeksa in ceno očitno nelinearno, tudi če indekse uredimo na nek specifičen način. +* **One-hot kodiranje** nadomesti stolpec `Variety` s štirimi različnimi stolpci, po enim za vsako sorto. Vsak stolpec vsebuje `1`, če je vrstica določene sorte, in `0` sicer. To pomeni, da bodo štirje koeficienti v linearni regresiji, po en za vsako sorto buč, ki predstavljajo "začetno ceno" (oz. natančneje "dodatno ceno") za prav to sorto. -Spodnja koda prikazuje, kako lahko one-hot kodiramo vrsto: +Spodnja koda prikaže, kako lahko izvedemo one-hot kodiranje sorte: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety']) 1741 | 0 | 1 | 0 | 0 1742 | 0 | 1 | 0 | 0 -Za učenje linearne regresije z uporabo one-hot kodirane različice kot vhodnih podatkov moramo le pravilno inicializirati podatke `X` in `y`: +Za učenje linearne regresije z one-hot kodirano sorto kot vhodom, moramo samo pravilno inicializirati podatke `X` in `y`: ```python X = pd.get_dummies(new_pumpkins['Variety']) y = new_pumpkins['Price'] ``` -Ostali del kode je enak kot tisti, ki smo ga uporabili zgoraj za učenje linearne regresije. Če to poskusite, boste videli, da je povprečni kvadratni odklon približno enak, vendar dobimo veliko višji koeficient determinacije (~77%). Za še natančnejše napovedi lahko upoštevamo več kategorijskih spremenljivk, kot tudi številčne značilnosti, kot so `Month` ali `DayOfYear`. Za pridobitev ene velike tabele značilnosti lahko uporabimo `join`: +Preostali del kode je enak kot tisti, ki smo ga uporabili za učenje linearne regresije zgoraj. Če poskusite, boste videli, da je napaka srednjega kvadrata približno enaka, a dobimo veliko višji koeficient determinacije (~77 %). Za še natančnejše napovedi lahko upoštevamo več kategornih značilnosti, pa tudi numerične, kot sta `Month` ali `DayOfYear`. Za združitev vseh značilnosti uporabimo `join`: ```python X = pd.get_dummies(new_pumpkins['Variety']) \ @@ -319,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Tukaj upoštevamo tudi `City` in tip `Package`, kar nam da MSE 2,84 (10%) in koeficient determinacije 0,94! +Tukaj upoštevamo tudi `City` in vrsto embalaže `Package`, kar nam da RMSE 2.84 (10.5 %) in determinacijo 0.94! -## Združevanje vsega skupaj +## Vse skupaj -Da ustvarimo najboljši model, lahko uporabimo kombinirane podatke (one-hot kodirane kategorijske + številčne) iz zgornjega primera skupaj s polinomsko regresijo. Tukaj je za vašo udobje celotna koda: +Za najboljši model lahko kombiniramo (one-hot kodirane kategorne + numerične) podatke iz zgornjega primera skupaj s polinomsko regresijo. Tukaj je celotna koda za vašo udobnost: ```python -# nastavite podatke za usposabljanje +# nastavi podatke za učenje 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'] -# naredite razdelitev treninga in testa +# naredi delitev na učno in testno množico X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) -# nastavite in usposobite cevovod +# nastavi in nauči cevovod pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression()) pipeline.fit(X_train,y_train) -# napovejte rezultate za testne podatke +# napovej rezultate za testne podatke pred = pipeline.predict(X_test) -# izračunajte MSE in koeficient determinacije -mse = np.sqrt(mean_squared_error(y_test,pred)) -print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)') +# izračunaj RMSE in koeficient determinacije +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) ``` -To bi nam moralo dati najboljši koeficient determinacije skoraj 97% in MSE=2,23 (~8% napaka napovedi). +To nam naj bi dalo najboljši koeficient determinacije – skoraj 97 % in RMSE=2.23 (~8 % napaka napovedi). -| Model | MSE | Koeficient determinacije | -|-------|-----|--------------------------| -| Linearni `DayOfYear` | 2,77 (17,2%) | 0,07 | -| Polinomski `DayOfYear` | 2,73 (17,0%) | 0,08 | -| Linearni `Variety` | 5,24 (19,7%) | 0,77 | -| Linearni z vsemi značilnostmi | 2,84 (10,5%) | 0,94 | -| Polinomski z vsemi značilnostmi | 2,23 (8,25%) | 0,97 | +| Model | RMSE | Determinacija | +|-------|-----|---------------| +| Linearno z `DayOfYear` | 2.77 (17.2 %) | 0.07 | +| Polinomsko z `DayOfYear` | 2.73 (17.0 %) | 0.08 | +| Linearno z `Variety` | 5.24 (19.7 %) | 0.77 | +| Linearno z vsemi značilnostmi | 2.84 (10.5 %) | 0.94 | +| Polinomsko z vsemi značilnostmi | 2.23 (8.25 %) | 0.97 | -🏆 Odlično! Ustvarili ste štiri regresijske modele v eni lekciji in izboljšali kakovost modela na 97%. V zadnjem razdelku o regresiji se boste naučili o logistični regresiji za določanje kategorij. +🏆 Odlično! V eni lekciji ste ustvarili štiri modele regresije in izboljšali kvaliteto modela na 97 %. V zaključnem delu o regresiji se boste naučili o logistični regresiji za določanje kategorij. --- ## 🚀Izziv -Preizkusite več spremenljivk v tem zvezku, da vidite, kako korelacija ustreza natančnosti modela. +Testirajte več različnih spremenljivk v tem zvezku in preverite, kako korelacija vpliva na natančnost modela. -## [Kviz po predavanju](https://ff-quizzes.netlify.app/en/ml/) +## [Kvizi po predavanju](https://ff-quizzes.netlify.app/en/ml/) -## Pregled & Samostojno učenje +## Pregled in samostojno učenje -V tej lekciji smo se naučili o linearni regresiji. Obstajajo še druge pomembne vrste regresije. Preberite o tehnikah Stepwise, Ridge, Lasso in Elasticnet. Dobro je tudi študirati tečaj [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning), da se naučite več. +V tej lekciji smo se naučili o linearni regresiji. Obstajajo še druge pomembne vrste regresije. Preberite o tehnikah korak-po-korak (stepwise), Ridge, Lasso in Elasticnet. Dobro učno gradivo je [Stanfordov tečaj o statističnem učenju](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Naloga -[Izdelajte model](assignment.md) +[Ustvarite model](assignment.md) --- **Omejitev odgovornosti**: -Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, upoštevajte, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v svojem izvirnem jeziku naj velja kot avtoritativni vir. Za ključne informacije priporočamo strokovni človeški prevod. Nismo odgovorni za kakršne koli napačne razlage ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. +Ta dokument je bil preveden z uporabo AI prevajalske storitve [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba šteti za avtoritativni vir. Za kritične informacije priporočamo strokovni človeški prevod. Ne odgovarjamo za morebitna nesporazume ali napačne interpretacije, ki izhajajo iz uporabe tega prevoda. \ No newline at end of file diff --git a/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb index c9f3ac327..f8675e3b3 100644 --- a/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sl/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Linearna in polinomska regresija za določanje cen buč - Lekcija 3\n", + "## Linearna in polinomska regresija za ceno buč - Lekcija 3\n", "\n", - "Naložite potrebne knjižnice in podatkovni niz. Podatke pretvorite v podatkovni okvir, ki vsebuje podmnožico podatkov:\n", + "Naložite zahtevane knjižnice in podatkovni niz. Podatke pretvorite v dataframe, ki vsebuje podnabor podatkov:\n", "\n", - "- Uporabite samo buče, katerih cena je določena na sod\n", + "- Vzemite le buče, ki so ocenjene po košari\n", "- Datum pretvorite v mesec\n", - "- Ceno izračunajte kot povprečje najvišje in najnižje cene\n", - "- Ceno pretvorite tako, da odraža določanje cen glede na količino v sodih\n" + "- Izračunajte ceno kot povprečje visokih in nizkih cen\n", + "- Ceno pretvorite tako, da odraža ceno na količino bušljev\n" ] }, { @@ -377,7 +377,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Raztreseni diagram nas opominja, da imamo podatke le od avgusta do decembra. Verjetno potrebujemo več podatkov, da bi lahko sklepali na linearen način.\n" + "Razpršeni diagram nas spomni, da imamo podatke samo za mesece od avgusta do decembra. Verjetno potrebujemo več podatkov, da bomo lahko v linearnem smislu potegnili zaključke.\n" ] }, { @@ -447,7 +447,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Poglejmo, ali obstaja korelacija:\n" + ] }, { "cell_type": "code", @@ -472,7 +474,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Zdi se, da je korelacija precej majhna, vendar obstaja neka druga, bolj pomembna povezava - ker se zdi, da imajo cenovne točke na zgornjem grafu več ločenih grozdov. Naredimo graf, ki bo prikazal različne sorte buč:\n" + "Zdi se, da je korelacija precej majhna, vendar obstaja neka druga, bolj pomembna povezava - saj se zdi, da imajo cenovne točke na zgornjem grafu več različnih grozdov. Naredimo graf, ki bo prikazal različne sorte buč:\n" ] }, { @@ -535,7 +537,9 @@ { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "Zaenkrat se osredotočimo samo na eno sorto - **vrsto pite**.\n" + ] }, { "cell_type": "code", @@ -584,7 +588,7 @@ "source": [ "### Linearna regresija\n", "\n", - "Za učenje modela linearne regresije bomo uporabili Scikit Learn:\n" + "Uporabili bomo Scikit Learn za učenje modela linearne regresije:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Usposobljen model lahko uporabimo za napovedovanje cene:\n" + "Model, ki smo ga usposobili, lahko uporabimo za napoved cene:\n" ] }, { @@ -720,9 +724,9 @@ "source": [ "### Polinomska regresija\n", "\n", - "Včasih je razmerje med značilnostmi in rezultati po naravi nelinearno. Na primer, cene buč so lahko visoke pozimi (meseci=1,2), nato padejo poleti (meseci=5-7) in nato ponovno narastejo. Linearna regresija tega razmerja ne more natančno zajeti.\n", + "Včasih je razmerje med značilnostmi in rezultati po naravi nelinearno. Na primer, cena buč je lahko visoka pozimi (meseci=1,2), nato pade poleti (meseci=5-7) in potem spet naraste. Linearna regresija tega razmerja ne zna natančno zajeti.\n", "\n", - "V tem primeru lahko razmislimo o dodajanju dodatnih značilnosti. Preprost način je uporaba polinomov iz vhodnih značilnosti, kar vodi do **polinomske regresije**. V Scikit Learn lahko avtomatsko predračunamo polinomske značilnosti z uporabo cevovodov:\n" + "V takem primeru lahko razmislimo o dodajanju dodatnih značilnosti. Enostaven način je uporaba polinomov vhodnih značilnosti, kar pomeni **polinomsko regresijo**. V Scikit Learnu lahko samodejno predizračunamo polinomske značilnosti s pomočjo pipelinov: \n" ] }, { @@ -777,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": [ - "### Kodiranje sort\n", + "### Različice kodiranja\n", "\n", - "V idealnem svetu bi želeli napovedati cene za različne sorte buč z uporabo istega modela. Da upoštevamo sorto, jo moramo najprej pretvoriti v številčno obliko, oziroma **kodirati**. Obstaja več načinov, kako to storiti:\n", + "V idealnem svetu želimo cene različnih sort buč napovedovati z uporabo istega modela. Da upoštevamo sorto, jo moramo najprej pretvoriti v numerično obliko oziroma **kodirati**. Obstaja več načinov, kako to lahko storimo:\n", "\n", - "* Preprosto številčno kodiranje, ki ustvari tabelo različnih sort in nato ime sorte zamenja z indeksom v tej tabeli. To ni najboljša ideja za linearno regresijo, saj linearna regresija upošteva številčno vrednost indeksa, ta pa verjetno ne bo numerično korelirala s ceno.\n", - "* Kodiranje s tehniko \"one-hot\", ki stolpec `Variety` zamenja s 4 različnimi stolpci, po enim za vsako sorto, ki vsebujejo 1, če ustrezna vrstica pripada določeni sorti, in 0 sicer.\n", + "* Enostavno numerično kodiranje, ki bo zgradilo tabelo različnih sort, nato pa zamenjalo ime sorte z indeksom v tej tabeli. To ni najboljša ideja za linearno regresijo, ker linearna regresija upošteva numerično vrednost indeksa, numerična vrednost pa verjetno ne bo numerično korelirala s ceno.\n", + "* One-hot kodiranje, ki bo stolpec `Variety` zamenjalo s 4 različnimi stolpci, po enim za vsako sorto, ki bo vseboval 1, če vrstica ustreza določeni sorti, in 0 sicer.\n", "\n", - "Spodnja koda prikazuje, kako lahko kodiramo sorto s tehniko \"one-hot\":\n" + "Spodnja koda prikazuje, kako lahko enosko kodiramo sorto:\n" ] }, { @@ -940,9 +947,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Linearna regresija na sorti\n", + "### Linearna regresija za sorto\n", "\n", - "Zdaj bomo uporabili isto kodo kot zgoraj, vendar bomo namesto `DayOfYear` uporabili našo eno-vroče kodirano sorto kot vhod:\n" + "Zdaj bomo uporabili isto kodo kot zgoraj, vendar namesto `DayOfYear` kot vhod uporabili našo enokodirano sorto:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Prav tako lahko poskusimo uporabiti druge značilnosti na enak način in jih združiti s številskimi značilnostmi, kot sta `Month` ali `DayOfYear`:\n" + "Lahko poskusimo tudi uporabljati druge značilnosti na enak način in jih kombiniramo z numeričnimi značilnostmi, kot sta `Month` ali `DayOfYear`:\n" ] }, { @@ -1023,7 +1030,7 @@ "source": [ "### Polinomska regresija\n", "\n", - "Polinomska regresija se lahko uporablja tudi s kategorialnimi značilnostmi, ki so enovročno kodirane (one-hot-encoded). Koda za učenje polinomske regresije bi bila v bistvu enaka kot tista, ki smo jo videli zgoraj.\n" + "Polinomsko regresijo lahko uporabimo tudi s kategorijskimi značilnostmi, ki so one-hot kodirane. Koda za učenje polinomske regresije bi bila v bistvu enaka kot smo jo videli zgoraj.\n" ] }, { @@ -1070,7 +1077,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "\n---\n\n**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da se zavedate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem izvirnem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo strokovno človeško prevajanje. Ne prevzemamo odgovornosti za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.\n" + "---\n\n\n**Omejitev odgovornosti**: \nTa dokument je bil preveden z uporabo avtomatske prevajalske storitve AI [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, upoštevajte, da avtomatizirani prevodi lahko vsebujejo napake ali netočnosti. Izvirni dokument v njegovem matičnem jeziku velja za avtoritativni vir. Za kritične informacije je priporočljiv strokovni human prevod. Nismo odgovorni za morebitna nesporazumevanja ali napačne razlage, ki izhajajo iz uporabe tega prevoda.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:10:10+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sl" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2 diff --git a/translations/sr/.co-op-translator.json b/translations/sr/.co-op-translator.json index 600cef9f9..e2df9d0fe 100644 --- a/translations/sr/.co-op-translator.json +++ b/translations/sr/.co-op-translator.json @@ -36,8 +36,8 @@ "language_code": "sr" }, "1-Introduction/4-techniques-of-ML/README.md": { - "original_hash": "9d91f3af3758fdd4569fb410575995ef", - "translation_date": "2025-09-05T12:42:28+00:00", + "original_hash": "84b1715a6be62ef1697351dcc5d7b567", + "translation_date": "2026-04-26T18:46:41+00:00", "source_file": "1-Introduction/4-techniques-of-ML/README.md", "language_code": "sr" }, @@ -90,8 +90,8 @@ "language_code": "sr" }, "2-Regression/3-Linear/README.md": { - "original_hash": "26c53a922f1f1e8542b0ea41ff52221a", - "translation_date": "2026-04-20T19:09:28+00:00", + "original_hash": "8b776e731c35b171d316d01d0e7b1369", + "translation_date": "2026-04-26T18:46:09+00:00", "source_file": "2-Regression/3-Linear/README.md", "language_code": "sr" }, @@ -107,6 +107,12 @@ "source_file": "2-Regression/3-Linear/solution/Julia/README.md", "language_code": "sr" }, + "2-Regression/3-Linear/solution/notebook.ipynb": { + "original_hash": "6781223ffbe8cfdaa38d0200f08e1288", + "translation_date": "2026-04-26T18:44:14+00:00", + "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", + "language_code": "sr" + }, "2-Regression/4-Logistic/README.md": { "original_hash": "abf86d845c84330bce205a46b382ec88", "translation_date": "2025-09-05T11:33:09+00:00", diff --git a/translations/sr/1-Introduction/4-techniques-of-ML/README.md b/translations/sr/1-Introduction/4-techniques-of-ML/README.md index 4311a5308..4edc3a3e4 100644 --- a/translations/sr/1-Introduction/4-techniques-of-ML/README.md +++ b/translations/sr/1-Introduction/4-techniques-of-ML/README.md @@ -1,117 +1,117 @@ # Технике машинског учења -Процес креирања, коришћења и одржавања модела машинског учења и података које они користе веома се разликује од многих других развојних токова рада. У овом лекцији, разјаснићемо процес и представити главне технике које треба да знате. Ви ћете: +Процес изградње, коришћења и одржавања модела машинског учења и података које они користе је веома другачији процес у односу на многе друге развојне радне токове. У овој лекцији ћемо разјаснити процес и представити главне технике које треба да знате. Ви ћете: -- Разумети процесе који подупиру машинско учење на високом нивоу. -- Истражити основне концепте као што су „модели“, „предвиђања“ и „тренинг подаци“. +- Разумети процесе који стоје иза машинског учења на високом нивоу. +- Истражити основне појмове као што су 'модели', 'предвиђања' и 'подаци за тренирање'. -## [Квиз пре предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Преквизни тест](https://ff-quizzes.netlify.app/en/ml/) -[![Машинско учење за почетнике - Технике машинског учења](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "Машинско учење за почетнике - Технике машинског учења") +[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning") -> 🎥 Кликните на слику изнад за кратак видео који обрађује ову лекцију. +> 🎥 Кликните на слику изнад за кратак видео који објашњава ову лекцију. ## Увод -На високом нивоу, вештина креирања процеса машинског учења (ML) састоји се од неколико корака: +На високом нивоу, занат стварања процеса машинског учења (ML) састоји се из низа корака: -1. **Одлучите о питању**. Већина процеса машинског учења почиње постављањем питања које не може бити одговорено једноставним условним програмом или системом заснованим на правилима. Ова питања често се односе на предвиђања заснована на збирци података. -2. **Сакупите и припремите податке**. Да бисте могли да одговорите на своје питање, потребни су вам подаци. Квалитет и, понекад, количина ваших података одредиће колико добро можете одговорити на почетно питање. Визуализација података је важан аспект ове фазе. Ова фаза такође укључује поделу података на групу за тренинг и тестирање ради изградње модела. -3. **Изаберите метод тренинга**. У зависности од вашег питања и природе ваших података, потребно је да изаберете како желите да обучите модел да најбоље одражава ваше податке и прави тачна предвиђања. Ово је део вашег процеса машинског учења који захтева специфичну експертизу и, често, значајну количину експериментисања. -4. **Тренирајте модел**. Користећи ваше тренинг податке, користићете различите алгоритме да обучите модел да препозна обрасце у подацима. Модел може користити унутрашње тежине које се могу прилагодити да би се одређени делови података привилеговали у односу на друге ради изградње бољег модела. -5. **Оцените модел**. Користите податке које модел никада раније није видео (ваше тест податке) из ваше сакупљене збирке да бисте видели како модел функционише. -6. **Подешавање параметара**. На основу перформанси вашег модела, можете поново урадити процес користећи различите параметре или променљиве које контролишу понашање алгоритама коришћених за тренинг модела. -7. **Предвиђање**. Користите нове уносе да бисте тестирали тачност вашег модела. +1. **Одлучите о питању**. Већина ML процеса почиње постављањем питања на које није могуће одговорити једноставним условним програмом или мотором заснованим на правилима. Ова питања често се односе на предвиђања заснована на скупу података. +2. **Прикупите и припремите податке**. Да бисте могли да одговорите на своје питање, потребни су вам подаци. Квалитет и понекад количина ваших података одредиће колико добро можете одговорити на почетно питање. Визуализација података је важан аспект ове фазе. Ова фаза такође укључује дељење података на групу за тренирање и тестирање како би се изградио модел. +3. **Изаберите методу тренирања**. У зависности од вашег питања и природе ваших података, требало би да одаберете како желите да тренирате модел да би најбоље одразио ваше податке и направио тачна предвиђања. Ово је део ML процеса који захтева специфично знање и често знатну количину експериментисања. +4. **Тренирајте модел**. Користећи податке за тренирање, употребићете различите алгоритме да обучите модел да препозна образце у подацима. Модел може користити унутрашње тежине којима је могуће управљати како би се одређени делови података фаворизовали у односу на друге за израду бољег модела. +5. **Оцените модел**. Користите податке које модел раније није видео (ваши тест подаци) из прикупљеног скупа да проверите како модел функционише. +6. **Подешавање параметара**. На основу перформанси вашег модела, можете поново покренути процес користећи различите параметре или променљиве које контролишу понашање алгоритама коришћених за тренирање модела. +7. **Предвиђање**. Користите нови унос за испитивање тачности вашег модела. ## Које питање поставити -Рачунари су посебно вешти у откривању скривених образаца у подацима. Ова корисност је веома корисна за истраживаче који имају питања о одређеној области која се не могу лако одговорити креирањем система заснованог на условима. На пример, у актуарском задатку, научник података може бити у стању да конструише ручно израђена правила о смртности пушача у односу на непушаче. +Рачунари су посебно вешти у откривању сакривених образаца у подацима. Ова корисност је веома помоћна истраживачима који имају питања о одређеној области на која није лако одговорити креирањем мотора правила заснованог на условима. На пример, имајући актуарски задатак, научник података може конструисати ручно направљена правила о смртности пушача у односу на непушаче. -Међутим, када се у једначину укључи много других променљивих, модел машинског учења може се показати ефикаснијим за предвиђање будућих стопа смртности на основу историје здравља из прошлости. Веселији пример може бити прављење временских предвиђања за месец април на одређеној локацији на основу података који укључују географску ширину, дужину, климатске промене, близину океана, обрасце млазног струјања и још много тога. +Међутим, када се у једначину уведу многе друге променљиве, ML модел може бити ефикаснији у предвиђању будућих стопа смртности заснованих на претходној здравственој историји. Веселији пример може бити прављење прогноза времена за април у одређеној локацији, узимајући у обзир податке који обухватају географску ширину, дужину, климатске промене, близину океана, шеме ваздушних струја и друге факторе. -✅ Ова [презентација](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) о временским моделима нуди историјску перспективу коришћења машинског учења у анализи времена. +✅ Ова [презентација](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)). Можете очистити и уредити податке (што ћемо урадити пре лекције о [Веб апликацији](../../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) - коју користимо у овом курсу - можете испитати многе начине тренирања модела. У зависности од искуства, можда ћете морати испробати неколико различитих метода како бисте изградили најбољи модел. Вероватно ћете проћи процес у коме научници података процењују перформансе модела тако што му дају непознате податке, проверавају тачност, пристрасност и друге проблеме који умањују квалитет, и бирају најприкладнију методу тренирања за дати задатак. ### Тренирајте модел -Наоружани вашим тренинг подацима, спремни сте да их „уклопите“ да бисте креирали модел. Приметићете да у многим библиотекама машинског учења налазите код „model.fit“ - у то време шаљете своју променљиву карактеристику као низ вредности (обично „X“) и циљну променљиву (обично „y“). +Опремљени својим тренинг подацима, спремни сте да их 'прилагодите' за израду модела. Примијетићете да ћете у многим библиотекама машинског учења наћи код 'model.fit' - то је тренутак када уносите вашу променљиву карактеристику као низ вредности (обично 'X') и циљну променљиву (обично 'y'). ### Оцените модел -Када је процес тренинга завршен (може бити потребно много итерација, или „епоха“, да се обучи велики модел), моћи ћете да процените квалитет модела користећи тест податке да бисте измерили његове перформансе. Ови подаци су подскуп оригиналних података које модел раније није анализирао. Можете одштампати табелу метрика о квалитету вашег модела. +Када се процес тренирања заврши (може потрајати много итерација или 'епоха' за тренирање великог модела), моћи ћете да процените квалитет модела користећи тест податке да измерите његову успешност. То су подаци из оригиналног скупа које модел раније није анализирао. Можете одштампати табелу метрика о квалитету вашег модела. -🎓 **Уклапање модела** +🎓 **Фитовање модела** -У контексту машинског учења, уклапање модела односи се на тачност основне функције модела док покушава да анализира податке са којима није упознат. +У контексту машинског учења, фитовање модела односи се на тачност основне функције модела док покушава да анализира непознате податке. -🎓 **Недовољно уклапање** и **претерано уклапање** су уобичајени проблеми који умањују квалитет модела, јер модел или није довољно добро уклопљен или је превише добро уклопљен. Ово узрокује да модел прави предвиђања која су или превише блиско или превише лабаво повезана са његовим тренинг подацима. Претерано уклопљен модел предвиђа тренинг податке превише добро јер је превише добро научио детаље и шум података. Недовољно уклопљен модел није тачан јер не може ни тачно анализирати своје тренинг податке ни податке које још није „видео“. +🎓 **Мањак уклапања (underfitting)** и **прекомеран уклапање (overfitting)** су уобичајени проблеми који умањују квалитет модела, јер модел није нити довољно нити преглупо прилагођен. Ово узрокује да модел прави предвиђања која су или превише блиска или пренаглашена у односу на податке за тренирање. Прекомеран модел предвиђа податке за тренирање прецизно зато што је превише научио детаље и шум података. Мањак уклапања значи да модел није тачан јер не може ни прецизно анализирати податке за тренирање ни оне које раније није 'видео'. -![модел претераног уклапања](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png) +![overfitting model](../../../../translated_images/sr/overfitting.1c132d92bfd93cb6.webp) > Инфографика од [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 практичара. Где себе видите у овом процесу? Где сматрате да ћете имати потешкоћа? Шта вам делује једноставно? -## [Квиз после предавања](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). ## Задатак @@ -119,5 +119,7 @@ --- -**Одрицање од одговорности**: -Овај документ је преведен коришћењем услуге за превођење помоћу вештачке интелигенције [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/sr/2-Regression/3-Linear/README.md b/translations/sr/2-Regression/3-Linear/README.md index 681487c8c..cb76cda99 100644 --- a/translations/sr/2-Regression/3-Linear/README.md +++ b/translations/sr/2-Regression/3-Linear/README.md @@ -2,134 +2,135 @@ ## Напомена за почетнике -Линеарна регресија се користи када желимо да предвидимо **намерну вредност** (на пример, цену куће, температуру или продају). Ради тако што пронађе праву линију која најбоље представља зависност између улазних карактеристика и излаза. +Линеарна регресија се користи када желимо да предвидимо **нумеричку вредност** (на пример, цену куће, температуру или продају). +Ради тако што налази најбољу праву линију која представља везу између улазних карактеристика и излаза. -У овој лекцији се фокусирамо на разумевање концепта пре него што истражимо напредније регресионе технике. -![Линеарна насупрот полиномијалној регресији инфографика](../../../../translated_images/sr/linear-polynomial.5523c7cb6576ccab.webp) -> Инфографика од [Дасани Мадипали](https://twitter.com/dasani_decoded) +У овој лекцији се фокусирамо на разумевање концепта пре него што истражимо напредније технике регресије. +![Линеарна регресија у односу на полиномну регресију инфографик](../../../../translated_images/sr/linear-polynomial.5523c7cb6576ccab.webp) +> Инфографик од [Dasani Madipalli](https://twitter.com/dasani_decoded) ## [Квиз пре предавања](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. -Сада сте спремни да дубље зароните у регресију за машинско учење. Док визуализација омогућава да разумете податке, права моћ машинског учења долази из _тренинга модела_. Модели се обучавају на историјским подацима да аутоматски ухвате зависности у подацима и омогућавају вам да предвидите резултате за нове податке које модел раније није видео. +Сада сте спремни да дубље зароните у регресију за машинско учење. Док визуелизација омогућава разумевање података, права снага машинског учења долази из _тренинга модела_. Модели се тренирају на историјским подацима како би аутоматски ухватили зависности у подацима и омогућили предвиђање исхода за нове податке које модел до тада није видео. -У овој лекцији научићете више о две врсте регресије: _основна линеарна регресија_ и _полиномијална регресија_, заједно са неком математиком која стоји иза ових техника. Ови модели ће нам омогућити да предвидимо цене бундева у зависности од различитих улазних података. +У овој лекцији научићете више о две врсте регресије: _основна линеарна регресија_ и _полиномна регресија_, заједно са неким математичким основама ових техника. Ови модели ће нам омогућити да предвидимо цене бундеве зависно од различитих улазних података. -[![Машинско учење за почетнике - Разумевање линеарне регресије](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "Машинско учење за почетнике - Разумевање линеарне регресије") +[![ML за почетнике - Разумевање линеарне регресије](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML за почетнике - Разумевање линеарне регресије") -> 🎥 Кликните слику изнад за кратак видео преглед линеарне регресије. +> 🎥 Кликните на слику изнад за кратак видео преглед линеарне регресије. -> Током целог овог курикулума претпостављамо минимално знање из математике, и настојимо да буде приступачно студентима који долазе из других области, па обратите пажњу на напомене, 🧮 илустрације, дијаграме и друге алате за учење који помажу у разумевању. +> Током овог курикулума претпостављамо минимално познавање математике и трудимо се да буде приступачна студентима из других области, па обратите пажњу на напомене, 🧮 илустрације, дијаграме и друге алате за учење који помажу у разумевању. -### Предуслов +### Претпоставка -Сада би требало да сте упознати са структуром података о бундевама које посматрамо. Можете их пронаћи претходно учитане и очишћене у фајлу _notebook.ipynb_ који прати ову лекцију. У том фајлу, цена бундеве је приказана по бушелу у новом дате фрејму. Обавезно проверите да можете покренути ове нотебоок-ове у Visual Studio Code окружењу. +До сада бисте требали бити упознати са структуром података о бундевама које прегледамо. Они су унапред учитани и очишћени у датотеци _notebook.ipynb_ ове лекције. У датотеци је цена бундеве приказана по бушелу у новом DataFrame-у. Уверите се да можете покренути ове нотебуке у Visual Studio Code окружењу. ### Припрема -Као подсетник, учитавате ове податке да бисте могли да поставите питања у вези са њима. +Као подсетник, учитавате ове податке како бисте могли да им постављате питања. -- Када је најбоље време за куповину бундева? -- Коју цену могу очекивати за кутију минијатурних бундева? -- Да ли треба да их купим у корпама за пола бушела или у кутијама од 1 1/9 бушела? -Хајде да наставимо да прегледамо ове податке. +- Када је најбоље време за куповину бундеве? +- Коју цену могу очекивати за кутију минијатурних бундевa? +- Да ли треба да их купим у корпама од пола бушела или у кутијама од 1 1/9 бушела? +Хајде да наставимо да истражујемо ове податке. -У претходној лекцији, направили сте Pandas дате фрејм и попунили га делом оригиналног скупа података, стандардујући цене по бушелу. Међутим, тиме сте успели да сакупите око 400 тачака података и само за јесење месеце. +У претходној лекцији креирали сте Pandas DataFrame и употпунили га делом оригиналног скупа података, стандардизујући цене по бушелу. Међутим, тад сте могли скупити око 400 тачака података и само за јесење месеце. -Погледајте податке које смо претходно учитали у приложеном нотебоок-у ове лекције. Податак је претходно учитан и направљен је почетни scatterplot (распршени графикон) који приказује месец. Можда можемо добити више детаља о природи података ажурирањем и додатним чишћењем. +Погледајте податке које смо учитали у нотебук ове лекције. Податак је учитан унапред и приказан је почетни scatterplot који показује податке по месецу. Можда можемо добити детаљније информације о природи података ако их додатно очистимо. -## Линеарна регресиона линија +## Линеарна линија регресије -Као што сте научили у Лекцији 1, циљ линеарне регресије је да буде могуће нацртати линију која: +Као што сте научили у Лекцији 1, циљ линеарне регресије је да се прикаже линија која: -- **Приказује везе између променљивих**. Прикажи однос између променљивих -- **Прави предвиђања**. Тачно предвиђа где ће нова тачка података пасти у односу на ту линију. +- **Показује релације између варијабли**. Приказује однос између варијабли +- **Прави предвиђања**. Прецизно предвиђа где би нова тачка могла пасти у односу на ту линију. -Типично је за **регресију најмањих квадрата** да повуче ову врсту линије. Термин "најмањи квадрати" се односи на процес минимизирања укупне грешке у нашем моделу. За сваку тачку података меримо вертикалну удаљеност (која се назива резидуал) између стварне тачке и наше регресионе линије. +Типично је за **Линијску регресију најмањих квадрата** да се црта оваква линија. Појам „најмањих квадрата“ односи се на процес минимизације укупне грешке у моделу. За сваку тачку мере се вертикална удаљеност (названа резидуала) између стварне тачке и наше регресионе линије. -Ове удаљености квадратимо из два главна разлога: +Ове удаљености квадратујемо из два главна разлога: -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`. +> `X` је 'објашњавајућа варијабла'. `Y` је 'зависна варијабла'. Нагиб линије је `b` а `a` је y-пресек, што означава вредност `Y` када је `X = 0`. > >![израчун нагиба](../../../../translated_images/sr/slope.f3c9d5910ddbfcf9.webp) > -> Прво израчунај нагиб `b`. Инфографика од [Џен Лупер](https://twitter.com/jenlooper) +> Прво израчунати нагиб `b`. Инфографик од [Jen Looper](https://twitter.com/jenlooper) > -> Другим речима, и осврћући се на наше оригинално питање у вези цена бундеве: "предвидети цену бундеве по бушелу по месецу", `X` би се односило на цену, а `Y` на месец продаје. +> Другим речима, и у вези са питањем о ценама бундеве: „предвидети цену бундеве по бушелу по месецу“, `X` би се односило на цену а `Y` на месец продаје. > ->![заврши једначину](../../../../translated_images/sr/calculation.a209813050a1ddb1.webp) +>![комплетирање једначине](../../../../translated_images/sr/calculation.a209813050a1ddb1.webp) > -> Израчунај вредност `Y`. Ако плаћате око $4, мора да је април! Инфографика од [Џен Лупер](https://twitter.com/jenlooper) +> Израчунајте вредност Y. Ако плаћате око 4 долара, мора да је април! Инфографик од [Jen Looper](https://twitter.com/jenlooper) > -> Математика која израчунава линију мора показати нагиб линије, који такође зависи од пресека, односно где се `Y` налази када је `X = 0`. +> Математика која израчунава линију мора да прикаже нагиб линије, који такође зависи од пресека, односно где се `Y` налази када је `X = 0`. > -> Метод рачунања ових вредности можете видети на [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) сајту. Посетите и [овај калкулатор најмањих квадрата](https://www.mathsisfun.com/data/least-squares-calculator.html) да бисте приметили како вредности бројева утичу на линију. +> Метод за израчунавање ових вредности можете погледати на веб сајту [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Такође посетите [овај калкулатор најмањих квадрата](https://www.mathsisfun.com/data/least-squares-calculator.html) да видите како вредности утичу на линију. ## Корелација -Још један термин који треба разумети је **коефицијент корелације** између датих X и Y променљивих. Коришћењем scatterplot-а, можете брзо визуализовати овај коефицијент. На графикону са тачкама распршеним у прелепој линији корелација је висока, док је на графикону са тачкама распршеним на све стране између X и Y корелација ниска. +Један још термин који треба разумети је **коефицијент корелације** између датоих X и Y варијабли. Коришћењем scatterplot-а можете брзо визуелизовати овај коефицијент. График са тачкама распоређеним у лепој линији има високу корелацију, али график са тачкама распрсканим свуда између X и Y има ниску корелацију. -Добар модел линеарне регресије ће имати висок (ближе 1 него 0) коефицијент корелације користећи метод најмањих квадрата с линијом регресије. +Добар линеарни регресиони модел имаће висок (ближи 1 него 0) коефицијент корелације користећи методу линијске регресије најмањих квадрата. -✅ Покрените нотебоок који прати ову лекцију и погледајте scatterplot Месец у односу на цену. Да ли подаци који повезују месец и цену за продају бундеве изгледају као да имају високу или ниску корелацију, према вашој визуелној интерпретацији scatterplot-а? Да ли се то мења ако користите прецизнију меру уместо `Month`, на пример *дан у години* (број дана од почетка године)? +✅ Покрените нотебук који иде уз ову лекцију и погледајте scatterplot везе између Месеца и Цене. Да ли вам подаци који повезују Месец и Цену продаје бундеве делују као да имају високу или ниску корелацију, према вашем визуелном тумачењу графика? Да ли се то мења ако користите прецизнију меру уместо `Month`, нпр. *дан у години* (тј. број дана од почетка године)? -У доњем коду претпоставићемо да смо очистили податке и добили дате фрејм назван `new_pumpkins`, сличан следећем: +У дољем коду претпоставићемо да смо очистили податке и добили 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 +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` користећи следећи израз: +> Код за очишћавање података доступан је у [`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://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "Машинско учење за почетнике - Тражење корелације: Кључ линеарне регресије") +[![ML за почетнике - Тражење корелације: Кључ линеарне регресије](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML за почетнике - Тражење корелације: Кључ линеарне регресије") -> 🎥 Кликните слику изнад за кратак видео преглед корелације. +> 🎥 Кликните на слику изнад за кратак видео преглед корелације. -Из претходне лекције сте вероватно видели да просечна цена за различите месеце изгледа овако: +Из претходне лекције вероватно сте видели да просечна цена за различите месеце изгледа овако: Просечна цена по месецу -Ово указује да би требало да постоји нека корелација, и да можемо покушати обуку модела линеарне регресије да предвидимо однос између `Month` и `Price` или између `DayOfYear` и `Price`. Ево scatter plot-а који показује овај други однос: +Ово указује да постоји нека корелација, и можемо покушати да обучимо линеарни регресиони модел да предвиди везу између `Month` и `Price` или између `DayOfYear` и `Price`. Ево scatterplot који показује ову другу везу: -Scatter plot цена у односу на дан у години +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 @@ -139,42 +140,42 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()): ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var) ``` -Scatter plot цена у односу на дан у години, са бојама +Scatter plot цена у односу на дан у години по бојама -Наша истрага сугерише да врста има већег утицаја на цену од стварног датума продаје. Ово можемо видети уз помоћ графикона: +Наша истрага указује да врста има већи утицај на укупну цену од самог датума продаје. Ово можемо искусити на графикону: ```python new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar') ``` -Графикон цена по врсти +Стап графикон цена по врсти -Хајде сад да се фокусирамо само на једну врсту бундеве, 'тип за пите', и видимо каквог утицаја има датум на цену: +Фокусирајмо се за сада само на једну врсту бундеве, 'pie type', и видимо каквог утицаја датум има на цену: ```python pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE'] pie_pumpkins.plot.scatter('DayOfYear','Price') ``` -Scatter plot цена у односу на дан у години за тип за пите +Scatter plot цена у односу на дан у години за pie тип -Ако сада израчунамо корелацију између `Price` и `DayOfYear` користећи `corr` функцију, добићемо нешто као `-0.27` - што значи да има смисла тренирати предиктивни модел. +Ако сада израчунамо корелацију између `Price` и `DayOfYear` користећи функцију `corr`, добићемо нешто као `-0.27` - што значи да има смисла тренирати предиктивни модел. -> Пре тренирања линеарног регресионог модела, важно је осигурати да су наши подаци чисти. Линеарна регресија не ради добро са недостајућим вредностима, па има смисла уклонити све празне ћелије: +> Пре тренинга линеарног регресионог модела, важно је уверити се да су наши подаци чисти. Линеарна регресија не ради добро са недостајућим вредностима, па има смисла уклонити све празне ћелије: ```python pie_pumpkins.dropna(inplace=True) pie_pumpkins.info() ``` -Други приступ би био да се празне вредности попуне просечним вредностима из одговарајуће колоне. +Друга опција би била да се празне вредности попуне просечним вредностима из одговарајуће колоне. ## Једноставна линеарна регресија -[![Машинско учење за почетнике - Линеарна и полиномијална регресија користећи Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "Машинско учење за почетнике - Линеарна и полиномијална регресија користећи Scikit-learn") +[![ML за почетнике - Линеарна и полиномна регресија користећи Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML за почетнике - Линеарна и полиномна регресија користећи Scikit-learn") -> 🎥 Кликните слику изнад за кратак видео преглед линеарне и полиномијалне регресије. +> 🎥 Кликните на слику изнад за кратак видео преглед линеарне и полиномне регресије. -За обуку нашег модела линеарне регресије користићемо библиотеку **Scikit-learn**. +За тренирање нашег линеарног регресионог модела користићемо библиотеку **Scikit-learn**. ```python from sklearn.linear_model import LinearRegression @@ -182,31 +183,31 @@ 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` улазних података да би Linear Regression пакет исправно разумео. Линеарна регресија очекује 2Д низ као улаз, где сваки ред одговара вектору улазних карактеристика. У нашем случају, пошто имамо само један улаз, потребан нам је низ са обликом N×1, где је N величина скупа података. +> Имајте на уму да смо морали користити `reshape` на улазним подацима како би пакет Линеарне регресије правилно разумео унос. Линеарна регресија очекује 2D низ као улаз, где сваки ред одговара вектору улазних карактеристика. У нашем случају, јер имамо само један улаз, треба нам низ облика 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`, што указује на цену на почетку године. +Објекат `LinearRegression` након `fit` метода садржи све коефицијенте регресије, којима се може приступити помоћу својства `.coef_`. У нашем случају постоји само један коефицијент, који би требало да буде око `-0.017`. То значи да цене изгледа да мало падају са временом, али не превише, око 2 цента дневно. Можемо такође приступити пресеку регресије са Y-осом помоћу `lin_reg.intercept_` - он ће у нашем случају бити око `21`, што указује на цену на почетку године. -Да видимо колико је наш модел прецизан, можемо предвидети цене на тест скупу података, а затим мерити колико су наша предвиђања блиска очекиваним вредностима. Ово се може урадити коришћењем метрике корен средње квадратичне грешке (RMSE), која је корен средине свих квадратних разлика између очекиване и предвиђене вредности. +Да видимо колико је наш модел прецизан, можемо предвидети цене на тест сету, а затим измерити колико су наше предвиђања близу очекиваних вредности. Ово се може урадити коришћењем метрике корена средње квадратне грешке (RMSE), која представља корен из средње вредности свих квадратних разлика између очекиване и предвиђене вредности. ```python pred = lin_reg.predict(X_test) @@ -215,36 +216,36 @@ 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) plt.plot(X_test,pred) ``` -Linear regression +Линеарна регресија ## Полиномијална регресија -Још један тип линеарне регресије је полиномијална регресија. Иако понекад постоји линеарна веза између променљивих - што је тиква већа у обиму, то је цена виша - понекад се те везе не могу приказати као раван или права линија. +Још један тип линеарне регресије је полиномијална регресија. Иако повремено постоји линеарна веза између променљивих – што већа запремина бундеве, то је цена виша – понекад се ове везе не могу приказати као раван или права линија. -✅ Ево [неколико додатних примера](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** је ланац **estimatora**. У нашем случају, направићемо pipeline који прво додаје полиномијалне особине нашем моделу, а затим тренира регресију: +Scikit-learn укључује корисни [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) за комбиновање различитих корака обраде података. **Pipeline** је ланац **ентиматора (estimators)**. У нашем случају ћемо направити pipeline који прво додаје полиномијалне карактеристике нашем моделу, а затим тренира регресију: ```python from sklearn.preprocessing import PolynomialFeatures @@ -255,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. Такође можемо користити полиноме виших степени ако желимо. + +Pipeline-ови се могу користити на исти начин као и оригинални `LinearRegression` објекат, односно можемо `fit`-овати pipeline, а затим користити `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` за добијање резултата предвиђања. Ево графикона који показује тест податке и криву апроксимације: +Ево графика који приказује тест податке и апроксимациону криву: -Polynomial regression +Полиномијална регресија -Коришћењем полиномијалне регресије можемо добити мало мању МСЕ и већи коефицијент детерминације, али не значајно. Потребно је узети у обзир и друге карактеристике! +Коришћењем полиномијалне регресије можемо добити благо нижу RMSE и виши коефицијент детерминације, али не значајно. Морамо узети у обзир и друге карактеристике! -> Можете приметити да се минималне цене тиквића појављују негде око Ноћи вештица. Како бисте то објаснили? +> Можете видети да се минималне цене бундеве посматрају негде око Ноћи вештица. Како то објашњавате? -🎃 Честитамо, управо сте направили модел који може помоћи у предвиђању цене пит тиквица. Вероватно можете поновити исти поступак за све типове тиквица, али то би било заморно. Сада ћемо научити како да узмемо у обзир сорту тикве у нашем моделу! +🎃 Честитамо, управо сте креирали модел који може помоћи у предвиђању цене пумпкин пита. Вероватно можете поновити исти поступак за све врсте бундеве, али то би било заморно. Хајде сада да сазнамо како да рачунамо са разним врстама бундеве у нашем моделу! ## Категоријалне карактеристике -У идеалном свету, желимо да можемо предвидети цене за различите сорте тикви користећи исти модел. Међутим, колона `Variety` је нешто другачија од колона као што је `Month`, јер садржи не-нумеричке вредности. Такве колоне се зову **категоријалне**. +У идеалном свету желимо бити у могућности да предвидимо цене за различите врсте бундеве користећи исти модел. Међутим, колона `Variety` је нешто другачија од колона као што је `Month`, јер садржи нумерички неприхватљиве вредности. Такве колоне се зову **категоријалне**. -[![ML за почетнике - предвиђања категоријалних особина са линеарном регресијом](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML за почетнике - предвиђања категоријалних особина са линеарном регресијом") +[![ML за почетнике - предвиђања категоријалних карактеристика помоћу линеарне регресије](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML за почетнике - предвиђања категоријалних карактеристика помоћу линеарне регресије") -> 🎥 Кликните на слику изнад за кратак видео преглед коришћења категоријалних особина. +> 🎥 Кликните на слику изнад за кратак видео преглед коришћења категоријалних карактеристика. -Овде можете видети како просечна цена зависи од сорте: +Овде можете видети како просечна цена зависи од врсте: -Average price by variety +Просечна цена по врсти -Да бисмо узели у обзир сорту, прво морамо да је претворимо у нумерички облик, односно да је **енкодирају**. Постоји неколико начина како то можемо урадити: +Да бисмо узели у обзир врсту, прво морамо да је конвертујемо у нумерички облик, односно да је **енкодујемо**. Постоји неколико начина да то урадимо: -* Једноставно **нумеричко кодирање** ће направити табелу различитих сорти, а затим заменити име сорте индексом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима стварну нумеричку вредност индекса и додаје је резултату помноженом неким коефицијентом. У нашем случају, веза између броја индекса и цене је јасно нелинеарна, чак и ако осигурамо да су индекси уређени на одређени начин. -* **One-hot кодирање** ће заменити колону `Variety` четири различите колоне, по једну за сваки тип. Свака колона ће садржати `1` ако је одговарајући ред тог типа, и `0` у супротном. Ово значи да ће у линеарној регресији постојати четири коефицијента, по један за сваку сортутіквице, који ће бити одговорни за „почетну цену“ (или боље речено „додатну цену“) за ту одређену сорту. +* Једноставна **нумеричка енкодација** ће направити табелу различитих врста, а затим заменити име врсте индексом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима стварну нумеричку вредност индекса и додаје је у резултат, множећи неким коефицијентом. У нашем случају, однос између броја индекса и цене је очигледно нелинеаран, чак и ако бисмо осигурали да су индекси поређани на неки специфичан начин. +* **One-hot енкодација** ће заменити колону `Variety` са 4 различите колоне, по једна за сваку врсту. Свака колона ће садржати `1` ако је одговарајући ред дате врсте, а `0` у супротном. То значи да ће у линеарној регресији постојати четири коефицијента, по један за сваку врсту бундеве, одговорни за „почетну цену“ (или боље речено „додатну цену“) за ту конкретну врсту. -Код у наставку показује како можемо да извршимо one-hot кодирање сорте: +Код у наставку показује како можемо обавити one-hot енкодацију врсте: ```python pd.get_dummies(new_pumpkins['Variety']) @@ -301,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']) \ @@ -318,68 +341,68 @@ X = pd.get_dummies(new_pumpkins['Variety']) \ y = new_pumpkins['Price'] ``` -Овде такође узимамо у обзир `City` и тип `Package`, што нам даје МСЕ 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 и коефицијент детерминације -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%, и МСЕ=2.23 (~8% грешке предвиђања). +Ово би нам требало дати најбољи коефицијент детерминације од скоро 97% и RMSE = 2.23 (~8% грешке предвиђања). -| Модел | МСЕ | Детерминација | +| Модел | 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 | +| Линеарни `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%. У завршном делу о регресији научићете о логистичкој регресији за одређивање категорија. --- -## 🚀 Изазов +## 🚀Изазов -Испробајте неколико различитих променљивих у овом notebook-у да видите како корелација одговара тачности модела. +Тестирајте неколико различитих променљивих у овом нотебоок-у да видите како корелација одговара тачности модела. -## [Квиз након предавања](https://ff-quizzes.netlify.app/en/ml/) +## [Квиз после предавања](https://ff-quizzes.netlify.app/en/ml/) -## Преглед и Самосталан рад +## Ревизија и самостални рад У овом часу смо научили о линеарној регресији. Постоје и други важни типови регресије. Прочитајте о Stepwise, Ridge, Lasso и Elasticnet техникама. Добар курс за учење више је [Stanford Statistical Learning курс](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning) ## Задатак -[Направи модел](assignment.md) +[Направите модел](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/sr/2-Regression/3-Linear/solution/notebook.ipynb b/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb index 8ccddf415..7c5a5651f 100644 --- a/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb +++ b/translations/sr/2-Regression/3-Linear/solution/notebook.ipynb @@ -4,14 +4,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Линеарна и полиномијална регресија за одређивање цене бундева - Лекција 3\n", + "## Линеарна и полиномијална регресија за цену тикве - Лекција 3\n", "\n", - "Учитајте потребне библиотеке и скуп података. Претворите податке у датафрејм који садржи подскуп података:\n", + "Учитајте потребне библиотеке и скуп података. Конвертујте податке у dataframe који садржи подскуп података:\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", @@ -584,7 +588,7 @@ "source": [ "### Линеарна регресија\n", "\n", - "Користићемо Scikit Learn за тренирање модела линеарне регресије:\n" + "Уз помоћ Scikit Learn ћемо обучити модел линеарне регресије:\n" ] }, { @@ -689,7 +693,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Можемо користити обучени модел да предвидимо цену:\n" + "Можемо користити обучени модел за предвиђање цене:\n" ] }, { @@ -718,11 +722,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Полиномна регресија\n", + "### Полиномијска регресија\n", "\n", - "Понекад је однос између карактеристика и резултата природно нелинеаран. На пример, цене бундева могу бити високе током зиме (месеци=1,2), затим падати током лета (месеци=5-7), а потом поново расти. Линеарна регресија није у стању да тачно ухвати овај однос.\n", + "Понекад је веза између карактеристика и резултата у основи нелинеарна. На пример, цене бундеве могу бити високе зими (месеци=1,2), затим опасти током лета (месеци=5-7), а потом поново порасти. Линеарна регресија није у стању да прецизно пронађе ову везу.\n", "\n", - "У овом случају можемо размотрити додавање додатних карактеристика. Једноставан начин је коришћење полинома из улазних карактеристика, што би довело до **полиномне регресије**. У Scikit Learn-у, можемо аутоматски претходно израчунати полиномне карактеристике користећи пайплайне:\n" + "У овом случају, можемо размотрити додавање додатних карактеристика. Једноставан начин је коришћење полинома из улазних карактеристика, што би довело до **полиномијске регресије**. У Scikit Learn-у, можемо аутоматски претходно израчунати полиномијалне карактеристике користећи pipeline-ове: \n" ] }, { @@ -777,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 кодирање, које ће заменити колону `Variety` са 4 различите колоне, по једну за сваку сорту, које ће садржати 1 ако одговарајући ред припада датој сорти, а 0 у супротном.\n", + "* Једноставно нумеричко кодирање које ће направити табелу различитих сорти, а затим заменити име сорте индекосом у тој табели. Ово није најбоља идеја за линеарну регресију, јер линеарна регресија узима у обзир нумеричку вредност индекса, а нумеричка вредност вероватно неће корелирати нумерички са ценом.\n", + "* One-hot кодирање, које ће заменити колону `Variety` са 4 различите колоне, по једна за сваку сорту, која ће садржати 1 ако одговарајући ред припада тој сорти, и 0 у противном.\n", "\n", - "Код испод показује како можемо да применимо one-hot кодирање на сорту:\n" + "Код у наставку показује како можемо применити one-hot кодирање на сорту:\n" ] }, { @@ -942,7 +949,7 @@ "source": [ "### Линеарна регресија на сорти\n", "\n", - "Сада ћемо користити исти код као горе, али уместо `DayOfYear` користићемо нашу једнохот-енкодовану сорту као улаз:\n" + "Сада ћемо користити исти код као горе, али уместо `DayOfYear` користићемо нашу варанту сорте кодиране помоћу one-hot:\n" ] }, { @@ -990,7 +997,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Можемо такође покушати да користимо друге функције на исти начин и комбинујемо их са нумеричким функцијама, као што су `Month` или `DayOfYear`:\n" + "Такође можемо покушати да користимо друге карактеристике на исти начин, и да их комбинујемо са нумеричким карактеристикама, као што су `Month` или `DayOfYear`:\n" ] }, { @@ -1021,9 +1028,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Полиномна регресија\n", + "### Полиномијална регресија\n", "\n", - "Полиномна регресија може се користити и са категоријалним карактеристикама које су једнохот-кодиране. Код за тренирање полиномне регресије би у суштини био исти као што смо видели горе.\n" + "Полиномијална регресија се такође може користити са категоријским карактеристикама које су једно-вруће-кодиране. Код за тренирање полиномијалне регресије би у суштини био исти као што смо горе видели.\n" ] }, { @@ -1070,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Овај документ је преведен коришћењем AI преводилачке услуге [Co-op Translator](https://github.com/Azure/co-op-translator). Док тежимо тачности, молимо имајте у виду да аутоматски преводи могу садржати грешке или нетачности. Изворни документ на његовом оригиналном језику треба сматрати ауторитативним извором. За критичне информације препоручује се професионални људски превод. Нисмо одговорни за било каква неспоразумевања или погрешна тумачења која произилазе из коришћења овог превода.\n\n" ] } ], @@ -1100,13 +1107,7 @@ "hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d" } }, - "orig_nbformat": 2, - "coopTranslator": { - "original_hash": "d77bd89ae7e79780c68c58bab91f13f8", - "translation_date": "2025-09-06T13:10:36+00:00", - "source_file": "2-Regression/3-Linear/solution/notebook.ipynb", - "language_code": "sr" - } + "orig_nbformat": 2 }, "nbformat": 4, "nbformat_minor": 2