learningCurve <- function(X, y, Xval, yval, lambda) { # Generates the train and cross validation set errors needed # to plot a learning curve # # error_train, error_val <- learningCurve(X, y, Xval, yval, lambda) # returns the train and cross validation set errors for a learning curve. # In particular, it returns two vectors of the same length (error_train and # error_val). Then, error_train[i] contains the training error for # i example (and similarly for error_val[i]). # # In this function, you will compute the train and cross validation errors for # dataset sizes from 1 up to m. In practice, when working with larger # datasets, you might want to do this in larger intervals. # # Number of training examples m <- nrow(X) # Note here X and Xval have the same number of examples # You need to return fill this values error_train <- rep(0, m) error_val <- rep(0, m) # =========================== YOUR CODE HERE ============================== # Instructions: Fill in this function to return training errors in # error_train and cross validation errors in error_val. # The vector numex_vec contains the number of training # examples to use for each calculation of training error and # cross validation error, i.e, error_train[i] and # error_val[i] should give you the errors # obtained after training on i examples. # # Note: You should evaluate the training error on the first i training # examples (i.e., X[1:i, ] and y[1:i]). # # For the cross-validation error, you should instead evaluate on # the ENTIRE cross validation set (Xval and yval). # # Note: If you are using your cost function (linearRCostFunctionReg) # to compute the training and cross validation error, you should # call the function with the lambda argument set to 0. # Do note that you will still need to use lambda when running # the training to obtain the theta parameters. # # Hint: You can loop over the examples with the following: # # for (i in 1:m){ # # Compute train/cross validation errors using training examples # # X[1:i, ] and y[1:i], storing the result in # # error_train[i] and error_val[i] # .... # # } # # ========================================================================= return(list(error_train = error_train, error_val = error_val)) }