Advertisement
Guest User

Ajuste de curva

a guest
Mar 28th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.92 KB | None | 0 0
  1. #Tarea Graficas Error vs Numero de puntos segun el grado de polinomio
  2.  
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5.  
  6. num_points_train = 10
  7.  
  8. #Generamos un vector que va de 0 a 1, asi funciona random
  9. x = np.random.random(num_points_train)
  10.  
  11. y = np.sin(2*np.pi*x)
  12.  
  13. # El 0.5 la normal, y el 0.1 desviacion estandar
  14. noise = np.random.normal(0.5,0.1, num_points_train)
  15. noise = noise - 0.5 #Es para regresar el noise al origen
  16.  
  17. y_noisy = y + noise
  18. pol_degree = 3
  19. pos=0
  20. errores=[]
  21. for j in range(3):
  22.     pos=pos+1
  23.     poly = np.polyfit(x, y_noisy, pol_degree) #Genrea un vector con los parametros de mi polinomio
  24.     f = np.poly1d(poly)
  25.  
  26.     #Grafica del error vs puntos
  27.     num_points_test = 0
  28.     puntos = []
  29.     error2 = []
  30.  
  31.     for i in range(10):
  32.         num_points_test = num_points_test+10
  33.         puntos.append(num_points_test)
  34.         x_test = np.linspace(0, 1, num_points_test)
  35.         y_test = np.sin(2*np.pi*x_test)
  36.  
  37.         y_new = f(x_test)
  38.  
  39.         #Calculo del error
  40.         error = (y_test-y_new)**2
  41.         error1 = np.mean(error)
  42.         error_RMS = np.sqrt(error1/num_points_test)
  43.         error2.append(error_RMS)
  44.  
  45.     tam=len(error2) #Llenamos un vector con todos los errores
  46.     for k in range(0,tam):
  47.         errores.append(error2[k])
  48.  
  49.  
  50.     plt.figure(1) #Mantiene las 3 graficas en una sola figura
  51.     plt.subplot(1,3,pos) #La posición va aumentando en el for y genera el numero de graficas
  52.     plt.plot (puntos, error2, 'ro')
  53.     plt.ylabel ('Error')
  54.     plt.xlabel ('Numero de Puntos')  
  55.     pol_degree =  pol_degree + 3 #El grado del polinomio aumenta de 3 en 3
  56.  
  57. plt.show ()
  58. merror=min(errores)
  59. for i in range(0,len(errores)):
  60.         if(errores[i] == merror):
  61.             pos=i
  62.  
  63.  
  64. print(merror)
  65. print(pos)
  66. if pos < 10:
  67.     print ("El menor error se obtiene con un polinomio grado %d" % (3))
  68.    
  69. elif (pos > 10) and (pos <20):
  70.     print ("El menor error se obtiene con un polinomio grado %d" % (6))
  71.  
  72. else:
  73.     print ("El menor error se obtiene con un polinomio grado %d" % (9))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement