2014-11-10 23:44:39 +01:00
function [ C , sigma ] = dataset3Params ( X , y , Xval , yval )
% EX6PARAMS returns your choice of C and sigma for Part 3 of the exercise
% where you select the optimal ( C , sigma ) learning parameters to use for SVM
% with RBF kernel
2014-11-13 23:34:04 +01:00
% [ C , sigma ] = EX6PARAMS ( X , y , Xval , yval ) returns your choice of C and
% sigma . You should complete this function to return the optimal C and
2014-11-10 23:44:39 +01:00
% sigma based on a cross - validation set .
%
% You need to return the following variables correctly .
C = 1 ;
sigma = 0.3 ;
% === === === === === === === = YOUR CODE HERE === === === === === === === =
% Instructions : Fill in this function to return the optimal C and sigma
% learning parameters found using the cross validation set .
% You can use svmPredict to predict the labels on the cross
2014-11-13 23:34:04 +01:00
% validation set . For example ,
2014-11-10 23:44:39 +01:00
% predictions = svmPredict ( model , Xval ) ;
% will return the predictions on the cross validation set .
%
2014-11-13 23:34:04 +01:00
% Note : You can compute the prediction error using
2014-11-10 23:44:39 +01:00
% mean ( double ( predictions ~ = yval ) )
%
2014-11-13 23:34:04 +01:00
grid_search = 0 ;
if grid_search
% Grid search
load ex6data3 . mat
% grid = [ 0.01 , 0.03 ] ;
grid = [ 0.01 , 0.03 , 0.1 , 0.3 , 1 , 3 , 10 , 30 ] ;
results = [ ] ;
for C = grid
for sigma = grid
fprintf ( ' = = C = % .2 f , sigma = % .2 f \ n ' , C , sigma ) ;
model = svmTrain ( X , y , C , @ ( x1 , x2 ) gaussianKernel ( x1 , x2 , sigma ) ) ;
predictions = svmPredict ( model , Xval ) ;
error = mean ( double ( predictions ~ = yval ) ) ;
fprintf ( ' error = % .2 f \ n \ n ' , error ) ;
results ( end + 1 , : ) = [ C , sigma , error ] ;
end
end
[ _ , best_i ] = min ( results ( : , 3 ) ) ;
C = results ( best_i , 1 ) ;
sigma = results ( best_i , 2 ) ;
error = results ( best_i , 3 ) ;
fprintf ( ' Best : C = % .2 f , sigma = % .2 f with error = % .2 f \ n ' , C , sigma , error ) ;
else
% Found through the grid search above
C = 1.00 ;
sigma = 0.10 ;
end
2014-11-10 23:44:39 +01:00
% === === === === === === === === === === === === === === === === === === === === === === === === =
end