Esempio n. 1
0
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)