%autosave 10 %matplotlib inline from matplotlib import pyplot import numpy import csv data = [] with open('data/ex1data1.txt', 'r') as f: data_reader = csv.reader(f, delimiter=',') for row in data_reader: data.append((float(row[0]), float(row[1]))) data = numpy.asarray(data) data[:5] pyplot.scatter(data[:,0], data[:,1]) theta = numpy.zeros(shape=(2,)) alpha = 0.001 m = len(data[:,0]) h = lambda theta, x: numpy.add(theta[0], theta[1]*x) J = lambda theta: (1./(2.*m))*numpy.sum(numpy.power(h(theta,data[:,0])-data[:,1], 2)) feature_vector = numpy.column_stack((numpy.ones(shape=(m,)), data[:,0])) nabla_J = lambda theta: (1./m)*numpy.sum(numpy.column_stack((h(theta,data[:,0])-data[:,1],h(theta,data[:,0])-data[:,1]))*feature_vector) feature_vector[:5] print('Before GD, J = %g' % J(theta)) for i in range(10000): theta = theta - alpha*nabla_J(theta) print('After GD, J = %g' % J(theta)) theta