Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def regularized_least_squares(x_train, y_train, M, regularization_lambda):
- '''
- :param x_train: ciag treningowy wejscia Nx1
- :param y_train: ciag treningowy wyjscia Nx1
- :param M: rzad wielomianu
- :param regularization_lambda: parametr regularyzacji
- :return: funkcja zwraca krotke (w,err), gdzie w sa parametrami dopasowanego wielomianu zgodnie z kryterium z regularyzacja l2,
- a err blad sredniokwadratowy dopasowania
- '''
- dm = design_matrix(x_train, M)
- w = dm.transpose()@dm
- w = w + regularization_lambda*np.eye(w.shape[0])
- w = w**-1 //daaj tutej to inv czy cos
- w = w@dm.transpose()@y_train
- return(w, mean_squared_error(x_train, y_train, w))
- def model_selection(x_train, y_train, x_val, y_val, M_values):
- '''
- :param x_train: ciag treningowy wejscia Nx1
- :param y_train: ciag treningowy wyjscia Nx1
- :param x_val: ciag walidacyjny wejscia Nx1
- :param y_val: ciag walidacyjny wyjscia Nx1
- :param M_values: tablica stopni wielomianu, ktore maja byc sprawdzone
- :return: funkcja zwraca krotke (w,train_err,val_err), gdzie w sa parametrami modelu, ktory najlepiej generalizuje dane,
- tj. daje najmniejszy blad na ciagu walidacyjnym, train_err i val_err to bledy na sredniokwadratowe na ciagach treningowym
- i walidacyjnym
- '''
- train_err = np.inf
- val_err = np.inf
- for i in M_values:
- (wW, Ttrain_err) = least_squares(x_train, y_train, i)
- tvErr = mean_squared_error(x_val, y_val, wW)
- if tvErr<val_err:
- val_err = tvErr
- w = wW
- train_err = Ttrain_err
- return (w, train_err, val_err)
- def regularized_model_selection(x_train, y_train, x_val, y_val, M, lambda_values):
- '''
- :param x_train: ciag treningowy wejscia Nx1
- :param y_train: ciag treningowy wyjscia Nx1
- :param x_val: ciag walidacyjny wejscia Nx1
- :param y_val: ciag walidacyjny wyjscia Nx1
- :param M: stopien wielomianu
- :param lambda_values: lista ze wartosciami roznych parametrow regularyzacji
- :return: funkcja zwraca krotke (w,train_err,val_err,regularization_lambda), gdzie w sa parametrami modelu, ktory najlepiej generalizuje dane,
- tj. daje najmniejszy blad na ciagu walidacyjnym. Wielomian dopasowany jest wg kryterium z regularyzacja. train_err i val_err to
- bledy na sredniokwadratowe na ciagach treningowym i walidacyjnym. regularization_lambda to najlepsza wartosc parametru regularyzacji
- '''
- train_err = np.inf
- val_err = np.inf
- lam = 0
- for i in lambda_values:
- (wW, Ttrain_err) = regularized_least_squares(x_train, y_train, M, i)
- tvErr = mean_squared_error(x_val, y_val, wW)
- if tvErr < val_err:
- val_err = tvErr
- w = wW
- train_err = Ttrain_err
- lam = i
- return (w, train_err, val_err, lam)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement