多元分類SVM(多種類SVM)プログラム使用説明


目次
  • 操作フロー
  • プログラムのデータフォーマット
  • matlabプログラム
  • 操作の流れ
    まず、このサイトでlibsvmパッケージをダウンロードします.http://download.csdn.net/detail/qy20115549/9608108.ダウンロードした後、メニューバーの設定パスをクリックします.このフォルダをパスに追加すると、他のフォルダから直接呼び出すことができます.
    プログラムのデータフォーマット
    テストセットはtest Dataで、test test_を含むプログラムです.labelsの2つのグループのデータ.testはexcelで導入したデータで、マトリックスにフォーマットを導入し、多次元自変数(X)、test_を保存します.labelsは、列ベクトルを導入し、引数に対応するラベルカテゴリ(Y)を保存します.カテゴリは1、2、3などの数字で表さなければなりません.同じように、トレーナーデータは紹介しません.
    matlabプログラム
    %        
    save testData test test_labels;
    save trainData train train_labels;
    %    
    load testData;
    load trainData;
    %        0-1  
    [train,pstrain]=mapminmax(train');
    pstrain.ymin=0;
    pstrain.ymax=1;
    [train,pstrain]=mapminmax(train,pstrain);
    [test,pstest]=mapminmax(test');
    pstest.ymin=0;
    petest.ymax=1;
    [test,pstest]=mapminmax(test,pstest);
    train=train';
    test=test';
    %    ,     ,      
    %%    
    model = svmtrain(train_labels, train);
    %            
    [predict_label,accuracy] = svmpredict(test_labels, test, model); 
    %            (c,g),      。
    [bestacc,bestc,bestg] = SVMcgForClass(train_labels,train,-5,5,-5,5,7,0.5,0.5,4.5)%%     c,g
    cmd=['-c ',num2str(bestc),' -g ',num2str(bestg)]        %%c,g    
    %    
    %model=svmtrain(train_labels,train,cmd);
    %% SVM    
    %[ptest_label, test_accuracy] = svmpredict(test_labels, test, model);
    
    %        PSO        (c,g),           ,  
    pso_option.c1 = 0.5;
    pso_option.c2 = 0.5;
    pso_option.maxgen = 200;
    pso_option.sizepop = 50;
    pso_option.k = 0.6;
    pso_option.wV = 1;
    pso_option.wP = 1;
    pso_option.v = 7;
    pso_option.popcmax =200;
    pso_option.popcmin = 0.1;
    pso_option.popgmax = 100;
    pso_option.popgmin = 0.001;
    %     
    [bestacc1,bestc1,bestg1,pso_option] = psoSVMcgForClass(train_labels,train,pso_option)
    cmd1= ['-c ',num2str(bestc1),' -g ',num2str(bestg1)];
    model1 = svmtrain(train_labels, train,cmd1);
    % [train_label1,train_accuracy1]=svmpredict(train_labels, train, model1);
    %    
    [ptest_label1, test_accuracy1] = svmpredict(test_labels, test, model1);