%% Machine Learning Online Class % Exercise 6 | Support Vector Machines % % Instructions % ------------ % % This file contains code that helps you get started on the % exercise. You will need to complete the following functions: % % gaussianKernel.m % dataset3Params.m % processEmail.m % emailFeatures.m % % For this exercise, you will not need to change any code in this file, % or any other files other than those mentioned above. % %% Initialization clear ; close all; clc %% =============== Part 1: Loading and Visualizing Data ================ % We start the exercise by first loading and visualizing the dataset. % The following code will load the dataset into your environment and plot % the data. % fprintf('Loading and Visualizing Data ...\n') % Load from ex6data1: % You will have X, y in your environment load('ex6data1.mat'); % Plot training data plotData(X, y); fprintf('Program paused. Press enter to continue.\n'); pause; %% ==================== Part 2: Training Linear SVM ==================== % The following code will train a linear SVM on the dataset and plot the % decision boundary learned. % % Load from ex6data1: % You will have X, y in your environment load('ex6data1.mat'); fprintf('\nTraining Linear SVM ...\n') % You should try to change the C value below and see how the decision % boundary varies (e.g., try C = 1000) C = 1; model = svmTrain(X, y, C, @linearKernel, 1e-3, 20); visualizeBoundaryLinear(X, y, model); fprintf('Program paused. Press enter to continue.\n'); pause; %% =============== Part 3: Implementing Gaussian Kernel =============== % You will now implement the Gaussian kernel to use % with the SVM. You should complete the code in gaussianKernel.m % 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(for sigma = 2, this value should be about 0.324652)\n'], sigma, sim); fprintf('Program paused. Press enter to continue.\n'); pause; %% =============== Part 4: Visualizing Dataset 2 ================ % The following code will load the next dataset into your environment and % plot the data. % fprintf('Loading and Visualizing Data ...\n') % Load from ex6data2: % You will have X, y in your environment load('ex6data2.mat'); % Plot training data plotData(X, y); fprintf('Program paused. Press enter to continue.\n'); pause; %% ========== Part 5: Training SVM with RBF Kernel (Dataset 2) ========== % After you have implemented the kernel, we can now use it to train the % SVM classifier. % 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('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); fprintf('Program paused. Press enter to continue.\n'); pause; %% =============== Part 6: Visualizing Dataset 3 ================ % The following code will load the next dataset into your environment and % plot the data. % fprintf('Loading and Visualizing Data ...\n') % Load from ex6data3: % You will have X, y in your environment load('ex6data3.mat'); % Plot training data plotData(X, y); fprintf('Program paused. Press enter to continue.\n'); pause; %% ========== Part 7: Training SVM with RBF Kernel (Dataset 3) ========== % This is a different dataset that you can use to experiment with. Try % different values of C and sigma here. % % Load from ex6data3: % You will have X, y in your environment load('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); % [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); fprintf('Program paused. Press enter to continue.\n'); pause;