Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. def regularized_least_squares(x_train, y_train, M, regularization_lambda):
  2. '''
  3. :param x_train: ciag treningowy wejscia Nx1
  4. :param y_train: ciag treningowy wyjscia Nx1
  5. :param M: rzad wielomianu
  6. :param regularization_lambda: parametr regularyzacji
  7. :return: funkcja zwraca krotke (w,err), gdzie w sa parametrami dopasowanego wielomianu zgodnie z kryterium z regularyzacja l2,
  8. a err blad sredniokwadratowy dopasowania
  9. '''
  10. dm = design_matrix(x_train, M)
  11. w = dm.transpose()@dm
  12. w = w + regularization_lambda*np.eye(w.shape[0])
  13. w = w**-1 //daaj tutej to inv czy cos
  14. w = w@dm.transpose()@y_train
  15. return(w, mean_squared_error(x_train, y_train, w))
  16.  
  17.  
  18. def model_selection(x_train, y_train, x_val, y_val, M_values):
  19. '''
  20. :param x_train: ciag treningowy wejscia Nx1
  21. :param y_train: ciag treningowy wyjscia Nx1
  22. :param x_val: ciag walidacyjny wejscia Nx1
  23. :param y_val: ciag walidacyjny wyjscia Nx1
  24. :param M_values: tablica stopni wielomianu, ktore maja byc sprawdzone
  25. :return: funkcja zwraca krotke (w,train_err,val_err), gdzie w sa parametrami modelu, ktory najlepiej generalizuje dane,
  26. tj. daje najmniejszy blad na ciagu walidacyjnym, train_err i val_err to bledy na sredniokwadratowe na ciagach treningowym
  27. i walidacyjnym
  28. '''
  29. train_err = np.inf
  30. val_err = np.inf
  31.  
  32. for i in M_values:
  33. (wW, Ttrain_err) = least_squares(x_train, y_train, i)
  34. tvErr = mean_squared_error(x_val, y_val, wW)
  35. if tvErr<val_err:
  36. val_err = tvErr
  37. w = wW
  38. train_err = Ttrain_err
  39.  
  40. return (w, train_err, val_err)
  41.  
  42.  
  43. def regularized_model_selection(x_train, y_train, x_val, y_val, M, lambda_values):
  44. '''
  45. :param x_train: ciag treningowy wejscia Nx1
  46. :param y_train: ciag treningowy wyjscia Nx1
  47. :param x_val: ciag walidacyjny wejscia Nx1
  48. :param y_val: ciag walidacyjny wyjscia Nx1
  49. :param M: stopien wielomianu
  50. :param lambda_values: lista ze wartosciami roznych parametrow regularyzacji
  51. :return: funkcja zwraca krotke (w,train_err,val_err,regularization_lambda), gdzie w sa parametrami modelu, ktory najlepiej generalizuje dane,
  52. tj. daje najmniejszy blad na ciagu walidacyjnym. Wielomian dopasowany jest wg kryterium z regularyzacja. train_err i val_err to
  53. bledy na sredniokwadratowe na ciagach treningowym i walidacyjnym. regularization_lambda to najlepsza wartosc parametru regularyzacji
  54. '''
  55. train_err = np.inf
  56. val_err = np.inf
  57. lam = 0
  58.  
  59. for i in lambda_values:
  60. (wW, Ttrain_err) = regularized_least_squares(x_train, y_train, M, i)
  61. tvErr = mean_squared_error(x_val, y_val, wW)
  62. if tvErr < val_err:
  63. val_err = tvErr
  64. w = wW
  65. train_err = Ttrain_err
  66. lam = i
  67.  
  68. return (w, train_err, val_err, lam)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement