Python ima metode za pronalaženje odnosa između tačaka podataka i za crtanje linije linearne regresije. Ispod će kroz primer biti objašnjeno kako koristiti ove metode bez objašnjenja matematičkih formula tj. kako se matematičkim putem dolazi do koeficijenata a i b u linearnoj regresiji.
Započećemo sa crtanjem raštrkanih tačka na ravni, koje su definisane listom x koordinata i listom y koordinata.
import numpy as np
import matplotlib.pyplot as plt
x = np.array(range(1,14))
y = np.array([2,8,8,18,25,21,32,44,32,48,61,45,62])
plt.scatter (x,y)
plt.show()
Sada ćemo odrediti liniju linearne regresije koja je najbolje uklopljena i koja se približno poklapa sa određenim tačkama podataka.
Sigurno ste već primetili da u ovom primeru koristimo NumPy nizove koji su korisniji od Python listi jer se mogu tretirati kao vektori nad kojima se mogu izvršiti operacije (npr. sabiranje vektora, množenje vektora i skalara itd.) koje će značajno da pojednostave izračunavanja.
import numpy as np
import matplotlib.pyplot as plt
x = np.array(range(1,14))
y = np.array([2,8,8,18,25,21,32,44,32,48,61,45,62])
[a,b]=np.polyfit(x,y,1)
print(a)
print(b)
plt.scatter (x,y)
plt.plot ([0,15],[b,a*15+b])
plt.show()
Određivanje koeficijenta determinacije $\ R^2 $
$\ R^2 $ - je vrednost u rasponu od 0 do 1, što je bliže 1 to je vaš model linearne regresije tačniji.
# Koliko se moji podaci uklapaju u linearnu regresiju?
from sklearn.metrics import r2_score
import numpy as np
from numpy import mean
x = np.array(range(1,14))
y = np.array([2,8,8,18,25,21,32,44,32,48,61,45,62])
[a,b]=np.polyfit(x,y,1)
r2_score(y, a*x+b)
import matplotlib.pyplot as plt
plt.scatter (x,y)
plt.scatter (20, a*20+b, color ='red')
plt.plot ([0,25],[b,25*a+b])
plt.title('Grafik prikazuje predviđenu vrednost upotrebom linearne regresije')
plt.show ()
print (a*20+b)