2010-04-15 19 views
8

¿Cómo visualizo la clasificación SVM una vez que realizo la formación SVM en Matlab?Visualización SVM en MATLAB

Hasta el momento, sólo han entrenado la SVM con:

% Labels are -1 or 1 
groundTruth = Ytrain; 
d = xtrain; 

model = svmtrain(groundTruth, d); 

Respuesta

0

Salida svm-toy esta función similar a la de LIBSVM. Obviamente, sólo funciona para 2D clasificación binaria

7

Si está utilizando LIBSVM, puede trazar resultados de la clasificación:

% Labels are -1 or 1 
groundTruth = Ytrain; 
d = xtrain; 

figure 

% plot training data 
hold on; 
pos = find(groundTruth==1); 
scatter(d(pos,1), d(pos,2), 'r') 
pos = find(groundTruth==-1); 
scatter(d(pos,1), d(pos,2), 'b') 

% now plot support vectors 
hold on; 
sv = full(model.SVs); 
plot(sv(:,1),sv(:,2),'ko'); 

% now plot decision area 
[xi,yi] = meshgrid([min(d(:,1)):0.01:max(d(:,1))],[min(d(:,2)):0.01:max(d(:,2))]); 
dd = [xi(:),yi(:)]; 
tic;[predicted_label, accuracy, decision_values] = svmpredict(zeros(size(dd,1),1), dd, model);toc 
pos = find(predicted_label==1); 
hold on; 
redcolor = [1 0.8 0.8]; 
bluecolor = [0.8 0.8 1]; 
h1 = plot(dd(pos,1),dd(pos,2),'s','color',redcolor,'MarkerSize',10,'MarkerEdgeColor',redcolor,'MarkerFaceColor',redcolor); 
pos = find(predicted_label==-1); 
hold on; 
h2 = plot(dd(pos,1),dd(pos,2),'s','color',bluecolor,'MarkerSize',10,'MarkerEdgeColor',bluecolor,'MarkerFaceColor',bluecolor); 
uistack(h1, 'bottom'); 
uistack(h2, 'bottom'); 
+0

'dd' es una malla de malla del rango de las características de los datos de entrenamiento. – Wok

2

Suponiendo que los datos tienen más de dos dimensiones, puede realizar un PCA, del proyecto los datos a 2D, luego asigne un color de acuerdo con la salida de su clasificador svm (por ejemplo, rojo para la clase A, azul para la clase B). Esto es rápido de hacer y verá si hay algo para visualizar. Sin embargo, los datos con una alta dimensionalidad no son fáciles de visualizar en 2D.

+0

¿Qué quiere decir con _performing a PCA_? Haw puedo hacerlo? ¿Podrías explicar un poco más por favor? Quiero visualizar la clasificación de svm en el conjunto de datos de FisherIris (usando libsvm). Si estoy en lo correcto, es 4D –

+0

Para ser honesto, si ni siquiera sabes lo que es una PCA (abreviatura de análisis de componentes principales), probablemente terminan gastando demasiado tiempo para el resultado final. No es trivial. Entiendo que sería interesante visualizar el límite de decisión, pero es posible que desee considerar diferentes estrategias para analizar el comportamiento de sus SVM. ¿Qué estás tratando de lograr exactamente? – levesque

+0

Finalmente, decidí usar [stprtool] (http://cmp.felk.cvut.cz/cmp/software/stprtool/) en lugar de libsvm para obtener la opción de trazar el límite de decisión. Funcionó realmente bien. Gracias por su respuesta –

-1
model = svmtrain(groundTruth, d, 'ShowPlot', true); 
+1

Puede agregar un poco más de una explicación, por casualidad .... –

Cuestiones relacionadas