www.pudn.com > kernelSVM.rar > train.m


function [ new_C,new_kPar ] = train( Train_Benign,Train_Malignant )
%UNTITLED1 Summary of this function goes here
%Detailed explanation goes here

C = 2^(-2);
C_kPar_error = [];
while C < 2^7
    kPar = 1;
    while kPar < 7
        error = 0;
        for i = 1:22
            validation = Train_Benign(i,:);
            sizeTrainBenign = 21;
            sizeTrainMalignant = 23;
            if i==1
                class_one = Train_Benign(2:sizeTrainBenign+1,:);
            else
                if i==sizeTrainBenign+1
                    class_one = Train_Benign(1:sizeTrainBenign,:);
                else
                    class_one = [Train_Benign(1:i-1,:);Train_Benign(i+1:sizeTrainBenign+1,:)];
                end
            end
            class_two = Train_Malignant;

            parameter = SMO_algorithm(class_one,class_two,kPar,C);

            b = parameter.b;
            alpha = parameter.alpha;
            index = find(alpha>0);
            train = [class_one;class_two];
            sup_vector = train(index,:);
            mat_kernel  = ( validation*sup_vector'+1).^kPar;
            if sign(mat_kernel*alpha(index,:)+b) == -1
                error = error+1;
            end
        end
       
        for j = 1:23
            validation = Train_Malignant(j,:);
            sizeTrainBenign = 22;
            sizeTrainMalignant = 22;
            class_one = Train_Benign;
            if j==1
                class_two = Train_Malignant(2:sizeTrainMalignant+1,:);
            else
                if j==sizeTrainMalignant+1
                    class_two = Train_Malignant(1:sizeTrainMalignant,:);
                else
                    class_two = [Train_Malignant(1:j-1,:);Train_Malignant(j+1:sizeTrainMalignant+1,:)];
                end
            end
            
            parameter = SMO.algorithm(class_one,class_two,kPar,C);
            
            b = parameter.b;
            alpha = parameter.alpha;
            train = [class_one;class_two];
            
            index = find(alpha>0);
            sup_vector = train(index,:);
            mat_kernel  = ( validation*sup_vector'+1).^kPar;
            if sign(mat_kernel*alpha(index,:)+b) == 1
                error = error+1;
            end
            
        end

        C_kPar_error = [C_kPar_error;C,kPar,error];
        out = [C,kPar,error]
        
        kPar = kPar+1;
    end
    C = C*2;
end

num_error = C_kPar_error(:,3);
min_error = min(num_error);
indices = find(num_error == min_error);
new_C = C_kPar_error(indices(1,1),1);
new_kPar = C_kPar_error(indices(1,1),2);
show = C_kPar_error(indices(1,1),:)