V případě regression (oproti classification) má za úkol algoritmus predikovat ‘real-value’ hodnotu. Linear regression je jednoduchý přístup k supervised machine learning. Linear regression je používána na predikci hodnoty Y na základě hodnoty X, předpokládáme, že mezi těmito hodnotami je lineární závislost. I přes jeho jednoduchost je tento přístup ve světe machine learning stále používán.
In statistics, linear regression is a linear approach to modelling the relationship between a scalar response (or dependent variable) and one or more explanatory variables (or independent variables).
V ukázkách níže, jsou využity knihovny numpy a matplotlib. Knihovna numpy je nejrozšířenější knihovna pro matematické operace s vektory a maticemi, knihovna uvnitř spolupracuje s C++/Fortran kódem. Knihovna matplotlib pak slouží k vykreslování grafů.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
importnumpyasnpimportmatplotlib.pyplotaspltimportmatplotlib%matplotlibinlinedefplot_regression_function(theta0,theta1):line_x=np.linspace(3,25,100)line_y=theta0+theta1*line_xplt.plot(line_x,line_y,zorder=1,color='red')defplot_data(X,Y,color='black'):plt.scatter(X,Y,zorder=2,color=color,s=4)data=np.loadtxt('data.txt',delimiter=',')# first column of dataset
X=data[:,0]# second column of dataset
Y=data[:,1]
1
2
plot_data(X,Y)plt.show()
1
2
3
4
# plot y = 0 + 1 * x
plot_regression_function(0,1)plot_data(X,Y)plt.show()
1
2
3
4
# plot y = 10 + 1 * x
plot_regression_function(10,1)plot_data(X,Y)plt.show()
1
2
3
4
# plot y = -10 + 2 * x
plot_regression_function(-10,2)plot_data(X,Y)plt.show()
defhypothesis(X,theta):returnnp.transpose(theta).dot(X).flatten()defgradient_descent(theta,max_iter):foriinrange(max_iter):theta=np.subtract(theta,np.transpose((np.multiply(np.subtract(hypothesis(X,theta),Y),X)*(1/m)*alpha).sum(axis=1).reshape([1,number_of_features])))returnthetanumber_of_features=2alpha=0.01m=len(data)# add ones as first column of X, needed for calculation of hypothesis
X=np.vstack((np.ones(m),data[:,0]))Y=data[:,1]theta=np.zeros((number_of_features,1))theta=gradient_descent(theta,1500)# --plotting--
plot_regression_function(theta[0][0],theta[1][0])plot_data(X[1],Y)plt.show()# ------------
plt.show()
Predikce na základě získaných hodnot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# plot training data
plot_data(X[1],Y)# data for regression
regression=np.array([6,10,15,20])# add ones as first column of X, needed for calculation of hypothesis
regression_set_X=np.vstack((np.ones(len(predict)),predict))# calculate values
regression_set_Y=hypothesis(regression_set_X,theta)# plot results of regression
plt.scatter(precict_set_X[1],regression_set_Y,zorder=2,color='red')plt.show()