def preceptron_learning(): line = Line() line.random_line() sample = line.generate_sample(100) # print sample p = Preceptron([.01,0]) p.learn(sample) sample = line.generate_sample(100000) incorrect = p.fng(sample) #print p.weight #print p.count return p.count, incorrect
w = [99, 99] error = [0, 0] c = 0 while(scalar([W[0]-w[0], W[1]-w[1]]) > 0.01): c += 1 for sample in samples: x = sample[0] X = [1, x] y = sample[1] e = [(float(y)/(1+math.pow(math.e,y*(W[0]*X[0]+W[1]*X[1])))) * i for i in X] error[0] += e[0] error[1] += e[1] delta_error = [-(1.0/N)*i for i in error] w = W W[0] = W[0] - lr*delta_error[0] W[1] = W[1] - lr*delta_error[1] print "C",c return W if __name__ == "__main__": l = Line() n = 100000 runs = 1 eout = 0 for i in xrange(0,runs): l.random_line() weight = learn() print weight eout += Eout(weight, n) print eout, float(eout)/(n*runs)