Skip to content

Instantly share code, notes, and snippets.

@felipessalvatore
Created October 25, 2016 12:59
Show Gist options
  • Save felipessalvatore/ca694885b2408a222318737ca1d4745e to your computer and use it in GitHub Desktop.
Save felipessalvatore/ca694885b2408a222318737ca1d4745e to your computer and use it in GitHub Desktop.
linear regression algorithm in python
import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
%matplotlib inline
features = np.array([0.8,0.9,1.0,1.1,1.4,\
1.4,1.5,1.6,1.8,2.0,2.4,2.5,2.7,3.2,3.5])
target = np.array([70,83,74,93,89,58,85,114,95,100,138,111,124,161,172])
plt.plot(features,target,'o', markersize=10)
plt.show()
def cost(t0,t1):
return (np.sum(((features*t1 +t0)- target)**2))/(2*len(features))
def cost_del_t0(t0,t1):
return np.sum(((features*t1 +t0)- target))/len(features)
def cost_del_t1(t0,t1):
return np.sum((features*t0) + (features**2)*t1\
- features*target)/len(features)
#gradient Descent fixed alpha
def gra_de1(alpha, times, inicial0, inicial1):
i0 = inicial0
i1 = inicial1
for i in range(times):
temp0 = i0 - alpha*cost_del_t0(i0,i1)
temp1 = i1 - alpha*cost_del_t1(i0,i1)
i0 = temp0
i1 = temp1
return i0,i1
#gradient Descent decreasing alpha
def gra_de2(alpha, times, inicial0, inicial1):
i0 = inicial0
i1 = inicial1
for i in range(times):
alpha = alpha - alpha*(i/(times-1))
temp0 = i0 - alpha*cost_del_t0(i0,i1)
temp1 = i1 - alpha*cost_del_t1(i0,i1)
i0 = temp0
i1 = temp1
return i0,i1
test1 = gra_de1(0.3, 500,0,0)
test2 = gra_de2(0.6, 500,0,0)
def hypothesis1(x):
return test1[0] + test1[1]*x
def hypothesis2(x):
return test2[0] + test2[1]*x
plt.plot(features, hypothesis1(features),\
features,hypothesis2(features),features,target,'o', markersize=10)
plt.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment