Vous êtes sur la page 1sur 1

Validation croisée:

Q1 : Completer le code de la fonction :


function [C, sigma, predictions, model] =
ParamsTP2data3(X, y, Xval, yval)

steps = [0.01 0.03 0.1 0.3 1 3 10 30];


minSim = 1 / length(yval);
for i = 1:length(steps)
testC = steps(i);
for j = 1:length(steps)
testSigma = steps(j);

model = svmModel(X, y, testC, On observe que pour un ensemble de validation croisé


@(x1, x2)Noyaugaussien(x1, x2, l’hyperplan qui sert a deviser entre les deux classes sépare bien
testSigma));
les deux classes malgré le nombre important de points
predictions = svmPredict(model,
aberrants d’un coté et de l’autre. L’hyperplan change avec le
Xval); changement des paramètres C et sigma. Et la frontière est une
frontière souple
moySim = mean(double(predictions
== yval)) Q3 : Générer les prédictions pour l’ensemble :

if (moySim > minSim) On rajoute cette partie à notre programme principal


C = testC; pred = svmPredict(model,
sigma = testSigma; Xval);
minSim = moySim;
fprintf('MoySim = %f', prd=mean(double(pred==yval))*1
moySim); 00

end
end
Le résultat est :
end
end

Les paramètres optimaux de C et sigma sont C=1 et


sigma=0.1

La prédiction de la validation pour l’ensemble de validation


Q2: Entrainement et visualisation : code suivant :
croisé est de 97%.
clc, clear all, close all
load('TP2data3.mat'); Home work:
traceData(X,y);
[C, sigma, predictions] = Q1 : Le code sous matlab :
ParamsTP2data3(X, y, Xval, yval)
clear; close all; clc
load('TP2HW.mat');
model = svmModel(X, y, C, @(x1,
traceData(X,y);
x2)Noyaugaussien(x1, x2, sigma));
C = 10;
hold on
model = svmModel(X, y, C, @Noyaulineare
VFNL(X,y,model);
, 1e-3, 20);

Apres avoir prédit les valeurs de C et sigma et utilisé dans le VFL(X, y, model);
code suivant on visualise et entrainent le SVM non linéaire
on observe :

Vous aimerez peut-être aussi