'da 10-kat SVM sınıflandırması örneği İki sınıf bir veri kümesinde 10-kat SVM sınıflandırmasının nasıl yapıldığını gösteren açıklayıcı bir örneğe ihtiyacım var. MATLAB belgelerinde sadece bir örnek var, ancak 10 kat değil. Birisi bana yardım edebilir mi? SVMTRAIN, SVMCLASSIFY, CLASSPERF, CROSSVALIND:MATLAB
Q
MATLAB
20
A
cevap
39
İşte Biyoinformatik Toolbox aşağıdaki işlevleri kullanarak, tam bir örnek. sadece bir 'setosa' örneği 'olmayan setosa'
UPDATE olarak yanlış sınıflandırılır ile 99.33%
doğruluk elde
ans =
0.99333
ans =
100 1
0 49
0 0
: SVM çıkış
load fisheriris %# load iris dataset
groups = ismember(species,'setosa'); %# create a two-class problem
%# number of cross-validation folds:
%# If you have 50 samples, divide them into 10 groups of 5 samples each,
%# then train with 9 groups (45 samples) and test with 1 group (5 samples).
%# This is repeated ten times, with each group used exactly once as a test set.
%# Finally the 10 results from the folds are averaged to produce a single
%# performance estimation.
k=10;
cvFolds = crossvalind('Kfold', groups, k); %# get indices of 10-fold CV
cp = classperf(groups); %# init performance tracker
for i = 1:k %# for each fold
testIdx = (cvFolds == i); %# get indices of test instances
trainIdx = ~testIdx; %# get indices training instances
%# train an SVM model over training instances
svmModel = svmtrain(meas(trainIdx,:), groups(trainIdx), ...
'Autoscale',true, 'Showplot',false, 'Method','QP', ...
'BoxConstraint',2e-1, 'Kernel_Function','rbf', 'RBF_Sigma',1);
%# test using test instances
pred = svmclassify(svmModel, meas(testIdx,:), 'Showplot',false);
%# evaluate and update performance object
cp = classperf(cp, pred, testIdx);
end
%# get accuracy
cp.CorrectRate
%# get confusion matrix
%# columns:actual, rows:predicted, last-row: unclassified instances
cp.CountingMatrix
işlevler R2013a
'daki İstatistik araç kutusuna taşındı t için teşekkürler o güzel örnek. Sahip olduğum biraz kafa karışıklığı. Sanırım 50 girişim var. Yukarıdaki kod, her biri 5 girdiden oluşan 10 kümeye böldükten sonra 9'u eğitmek ve her yinelemede test etmek için 1'i kullanır. Fakat normal akış biraz farklı olabilir, yani 1. tren 2. çapraz validate yukarıdakileri tekrarlayın ve sonra test edin? ya da fark yaratmıyor mu? –
@ user488652: Sorunuzda açık değilim, ancak yukarıdaki kod [n katlama çapraz doğrulama] standart yöntemini izler (http://en.wikipedia.org/wiki/Cross-validation_%28statistics%29 # K-fold_cross-validation) – Amro
@Amro Grupları = ismember (türler, 'setosa'); 'Neden' setosa 'kullandınız ve diğer iki tür çıktı kullanmıyor musunuz? Ayrıca, 25X5 matrisinde saklanan veri kümem için bunu nasıl kullanabilir ve iki çıkışlı 25X1 matrisiyle sonuçlanabilir. – MaxSteel