123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- %% 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;
|