U zadnje vrijeme sve se više spominje pojam umjetna inteligencija i posljedično pojam strojnog učenja.
Uslijed sve večeg razvoja procesorske snage, veličine radne memorije i dostupnosti podataka, te pada cijene tih hardverskih komponenti, povečala se mogućnost i isplativnost komercijalnog korištenja umjetne inteligencije.
Trenutno je prisutan veliki jaz u razumijevanju mogućnosti i rada umjetne inteligencije izmedju onih koji se njome aktivno bave i ostalih u društvu.
Postoji i velika zainteresiranost mnogih da uđu u to područja, ali kao i uvijek često najteži korak je od kuda započeti. Stoga da bi sebi, ali i drugima to olakšao odlučio sam prikazati jedan jednostavan proces stojnog učenja provučen kroz primjer predikcije putem jednostavne linearne regresije.
Uz napomenu da kako bi se što jednostavnije zaokružio proces stojnog učenja neće se ulaziti u stručnost i dubinu ni statistike ni korištenog programskog jezika Pythona.
Korištena je Anaconda i Jupyter Notebook za pisanje koda (više o tome u nekom narednom članku)
1. Učitavanje potrebnih modula
Na samom početku potrebno je učitati / importirati u memoriju Python “module” koje ćemo koristit pri stojnom učenju.

U ovom konkretnom slučaju korišten je numpy za rad na izračunima sa podacima, zatim pandas za manipuliranje podacima, te matplotlib i seaborn za graficki prikaz i vizualizaciju podataka.
2. Učitavanje i upoznavanje sa podacima
Sljedeći korak je učitavanje podataka (dataseta). Za lakšu manipulaciju (i upoznavanje) sa podacima, učitavaju se u dataframe-ove (što je slično excel tablicama).

Može se vidjeti strukturu dataframe-a:

odnosno dataframe od 40 redova sa 2 stupaca.
Prikaz prvih 5 redova sa zaglavljem:

Mogu se izračunati glavni statistički pokazatelji:

U gornjem primjeru vidimo da stupac “Kvadratura” ima 40 redova (podataka), da je prosjek vrijednosti stupca “Kvadratura” 106,375 metara kvadratnih, da je najmanja “Kvadratura” 30 m kvadratnih, standardna devijacija 46,328641, maksimalna kvadratura je 200 metara kvadratnih…
Poželjno je ispitati da li za neko obilježje nema podatka, tj. koliko ima ne non-null vrijednosti:

U primjeru se vidi da su svih 40 vrijednosti non-null.
Preporučljivo je prikazati podatke pomoću grafikona, jer vizualizacijom podataka možemo naučiti ponešto o podacima. U ovom slučaju možemo uvidjeti linearnost među podacima, te zaključiti da bi za treniranje modela bilo optimalno koristiti algoritam jednostavne linearne regresije.

3. Prilagodba podataka za učenje modela
Sljedeći korak je prilagodba podataka za učenje modela koja može uključivati normalizaciju podataka (ako postoje više promatranih obilježja sa različitim skalama vrijednosti), stvaranje listi za zavisnu varijablu i nezavisnu/e varijable, te podjela podataka u training set i validation set odnosno na skup podataka na kojima ćemo učiti model i skup podatka koji će služiti za validaciju modela odnosno ocijenu koliko dobro model opisuje podatke.


Te u dataframe “y” vrijednosti stupca “Cijena (€)”.
Izvršena je pretvorba dataframe u array (liste) i konverzija oblika liste da se može trenirati model:



4. Treniranje i vrednovanje modela
Vizualizacijom podataka ustanovljeno je da se podaci ponašaju linearno odnosno da povećanje kvadrature dovodi do povećanja cijene po nekom ravnom pravcu.
U Pythonu imamo 2 modula/library koji se koriste za modeliranje pomoću jednostavne linearne regresije.


Intercept iznosi 11.622,98, a slope iliti nagib funkcije iznosi 1.832,67. To bi ako uvrstimo u jednadžbu linearne regresije izgledalo => y=a+bx odnosno y=11.622,98 + 1.832,67x.


Model (gledajući općenito proces strojnog učenja) je poželjno vrednovati pomoću onih 25% podataka koje smo izdvojili iz inicijalnog dataseta i kojima se model nije trenirao.


Dobivene podatke iz modela možemo prikazati i usporediti ih tablično sa onima izvornim iz dataseta (pritom liste pretvaramo u dataframe):

Možemo ih prikazati i grafički gdje je usporedba puno indikativnija:

5. Predikcija novih vrijednosti putem istreniranog modela
Slično kao i kod validacije samo je ovdje unos potpuno novih podataka za kojih nemamo još izmjerene rezultate.

U ovom konkretnom primjeru cilj je dobiti predviđenu cijenu za stan veličine 100 metara kvadratnih. Model je izračunao da ona iznosi 194.889,79 €.
Rekapitulacija:
1) Import modula; 2) Import podataka i analiziranje podataka; 3) Priprema podataka za treniranje; 4) Treniranje i valorizacija modela; 5) Predikcija putem istreniranog modela.