Beispiel #1
0
def LADDescent(Y, phi, lambd):
    # print "size of phi: {}".format(phi.shape)
    # print "size of Y: {}".format(Y.shape)
    theta_guess = np.zeros(phi.shape[1]).reshape(phi.shape[1],1) 
    step = 0.01
    threshold = 0
    LAD = lambda x: LADFn(Y, phi, lambd, x)
    return gD.gradMinimize(threshold, theta_guess, step, LAD, gD.approxGradient(LAD, 0.16))
def main():
  #print gradMinimize(0, np.array([[1]]), .02, SSE, SSEgrad, 0)
  #print gradMinimize(0, np.array([[1],[2]]), .01, SSE, SSEgrad, 1)
  #print gradMinimize(0.1, np.array([[1],[2],[2],[2]]), .01, SSE, SSEgrad, 3)
  #print gradMinimize(0.1, np.array([[1],[2],[2],[2],[2],[2],[2],[2],[2],[2]]), .01, SSE, SSEgrad, 9)
  
  #actual = max_likelihood_weight(X, Y, _phi(X, 0, basis_function_poly))

  basis_function_poly = lambda x, y: math.pow(x,y)
  '''
  for i in range(-10, 10, 1):
    actual = max_likelihood_weight(X, Y, _phi(X, 0, basis_function_poly))
    soln = gradMinimize(0.00001, i*np.ones((1, 1)), .05, SSE, SSEgrad, 0)
    #print "M=0, i={}, soln={}".format(i, soln)
    print "M=0, i={}, error={}".format(i, np.dot((soln -actual).T, (soln -actual)))

  for i in range(-10, 10, 1):
    actual = max_likelihood_weight(X, Y, _phi(X, 1, basis_function_poly))
    soln = gradMinimize(0.00001, i*np.ones((2, 1)), .07, SSE, SSEgrad, 1)
    #print "M=1, i={}, soln={}".format(i, soln)
    print "M=1, i={}, error={}".format(i, np.dot((soln -actual).T, (soln -actual)))
  for i in range(-10, 10, 1):
    actual = max_likelihood_weight(X, Y, _phi(X, 3, basis_function_poly))
    soln = gradMinimize(0.00001, i*np.ones((4, 1)), .07, SSE, SSEgrad, 3)
    #print "M=3, i={}, soln={}".format(i, soln)
    print "M=3, i={}, error={}".format(i, np.dot((soln -actual).T, (soln -actual)))
  for i in range(-10, 10, 1):
    actual = max_likelihood_weight(X, Y, _phi(X, 9, basis_function_poly))
    soln = gradMinimize(0.00001, i*np.ones((10, 1)), .04, SSE, SSEgrad, 9)
    #print "M=9, i={}, soln={}".format(i, soln)
    print "M=9, i={}, error={}".format(i, np.dot((soln -actual).T, (soln -actual)))
  
  
  regressionPlot(X, Y, 0, gradMinimize(0.00001, 0.1*np.ones((1, 1)), .05, SSE, SSEgrad, 0), basis_function)
  regressionPlot(X, Y, 1, gradMinimize(0.00001, 0.1*np.ones((2, 1)), .07, SSE, SSEgrad, 1), basis_function)
  regressionPlot(X, Y, 3, gradMinimize(0.00001, 0.1*np.ones((4, 1)), .07, SSE, SSEgrad, 3), basis_function)
  regressionPlot(X, Y, 9, gradMinimize(0.00001, 0.1*np.ones((10, 1)), .04, SSE, SSEgrad, 9), basis_function)
  '''
  print gradMinimize(0.00001, 0.1*np.ones((1, 1)), .05, SSE, SSEgrad, 0)
  print gradMinimize(0.00001, 0.1*np.ones((2, 1)), .07, SSE, SSEgrad, 1)
  print gradMinimize(0.00001, 0.1*np.ones((4, 1)), .07, SSE, SSEgrad, 3)
  print gradMinimize(0.00001, 0.1*np.ones((10, 1)), .04, SSE, SSEgrad, 9)
  


  for i in [0,1,3,9]:
    print fmin_bfgs(SSEfcn(X, Y, i, basis_function), .1*np.ones((i+1, 1)))
  '''