please help me to classify data in three group using SVM .
Mostrar comentarios más antiguos
load fisheriris
data = [meas(:,1), meas(:,2)];
groups = ismember(species,'setosa');
% create a new column vector,
% groups, to classify data into two groups: Setosa and non-Setosa.
*_Instead of two group, classify data in three group --sentosa,versicolor,virginica-- what is other change in code_*
[train, test] = crossvalind('holdOut',groups);
cp = classperf(groups);
classperf(cp,classes,test);
cp.CorrectRate
svmStruct = svmtrain(data(train,:),groups(train),...
'showplot',true,'boxconstraint',1e6);
classes = svmclassify(svmStruct,data(test,:),'showplot',true);
classperf(cp,classes,test);
cp.CorrectRate
ThANks u
Respuesta aceptada
Más respuestas (1)
Walter Roberson
el 29 de Jul. de 2013
0 votos
To classify into three groups with SVM you need to use two steps for the classification. You first classify the first group vs (the second group together with the third group). You remove the elements that were classified as being in the first group, leaving (second group together with third group). You then classify the second group compared to that; after removing the elements identified as the second group, what is left over will be the third group.
6 comentarios
the cyclist
el 29 de Jul. de 2013
@mahendra:
You might also want to consider k-means clustering for this.
doc kmeans
for details.
mahendra
el 30 de Jul. de 2013
Walter Roberson
el 30 de Jul. de 2013
In the first pass, temporarily renumber all samples in class #2 and #3 to be numbered #4, leaving class #1 as class #1. Train on that and save the resulting classifier ('A').
In the second pass, remove all samples in class #1, and train #2 vs #3, and save the resulting classifier ('B')
Now, to use this, classify the unlabeled samples using classifier A. The samples will get classified as being in class #1 or in #4. Extract the ones classified #1: those belong to class #1.
Take everything that was left (#4), remove the #4 label, and classify the (now unlabeled) samples using classifier B. The samples will get classified as being in class #2 or in #3.
Now, each sample was classified as #1 by running the first classifier, or was classified as #2 or #3 using the second classifier. The task is finished.
mahendra
el 30 de Jul. de 2013
Walter Roberson
el 30 de Jul. de 2013
You managed to create the code to get as far as classifying two classes; just use the same kinds of calls to create a second classifier and to classify using it.
Tommy Carpenter
el 19 de Mzo. de 2015
This is not the recommended way to perform multi class SVM. See: http://stats.stackexchange.com/questions/21465/best-way-to-perform-multiclass-svm
Categorías
Más información sobre Statistics and Machine Learning Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!