In [1]:
%% Initialization
clear ; close all; clc
In [3]:
%% =============== Part 1: Loading and Visualizing Data ================
fprintf('Loading and Visualizing Data ...\n')
% Load from ex6data1:
% You will have X, y in your environment
load('./data/ex6data1.mat');
% Plot training data
plotData(X, y);
In [7]:
%% ==================== Part 2: Training Linear SVM ====================
load('ex6data1.mat');
fprintf('\nTraining Linear SVM ...\n')
C = 100;
model = svmTrain(X, y, C, @linearKernel, 1e-3, 20);
visualizeBoundaryLinear(X, y, model);
In [9]:
%% =============== Part 3: Implementing Gaussian Kernel ===============
fprintf('\nEvaluating the Gaussian Kernel ...\n')
x1 = [1 2 1]; x2 = [0 4 -1]; sigma = 2;
sim = gaussianKernel(x1, x2, sigma);
fprintf(['Gaussian Kernel between x1 = [1; 2; 1], x2 = [0; 4; -1], sigma = %f :\n\t%f\n'], sigma, sim);
In [11]:
%% =============== Part 4: Visualizing Dataset 2 ================
fprintf('Loading and Visualizing Data ...\n')
% Load from ex6data2:
% You will have X, y in your environment
load('./data/ex6data2.mat');
% Plot training data
plotData(X, y);
In [15]:
%% ========== Part 5: Training SVM with RBF Kernel (Dataset 2) ==========
fprintf('\nTraining SVM with RBF Kernel (this may take 1 to 2 minutes) ...\n');
% Load from ex6data2:
% You will have X, y in your environment
load('./data/ex6data2.mat');
% SVM Parameters
C = 1; sigma = 0.1;
% We set the tolerance and max_passes lower here so that the code will run
% faster. However, in practice, you will want to run the training to
% convergence.
model= svmTrain(X, y, C, @(x1, x2) gaussianKernel(x1, x2, sigma));
visualizeBoundary(X, y, model);
In [16]:
%% =============== Part 6: Visualizing Dataset 3 ================
fprintf('Loading and Visualizing Data ...\n')
% Load from ex6data3:
% You will have X, y in your environment
load('./data/ex6data3.mat');
% Plot training data
plotData(X, y);
In [17]:
%% ========== Part 7: Training SVM with RBF Kernel (Dataset 3) ==========
% Load from ex6data3:
% You will have X, y in your environment
load('./data/ex6data3.mat');
% Try different SVM Parameters here
[C, sigma] = dataset3Params(X, y, Xval, yval);
% Train the SVM
model= svmTrain(X, y, C, @(x1, x2) gaussianKernel(x1, x2, sigma));
visualizeBoundary(X, y, model);
In [ ]: