cushing_svm.m
上传用户:liu_jing
上传日期:2013-07-02
资源大小:4k
文件大小:1k
开发平台:

Matlab

  1. %============================
  2. %使用SVM实现三类模式识别
  3. %============================
  4. clear;
  5. clc;
  6. load train.data;
  7. train_data=train(:,1:2);% 全部训练样本集合
  8. expected_output=[-1;-1;-1;-1;-1;-1;1;1;1;1;1;1;1;1;1;1;-1;-1;-1;-1;-1]; % 先分成ac和b两类时的全部期望输出
  9. train_data_partly=[];
  10. temp1=train_data(1:6,:);
  11. temp2=train_data(17:21,:);
  12. train_data_partly=[temp1;temp2];% 部分训练样本集合,a类和c类样本集合
  13. expected_output_partly=[-1;-1;-1;-1;-1;-1;1;1;1;1;1];% 部分期望输出,a类和c类样本的期望输出集合
  14. ker='rbf';
  15. C=100.0;
  16. X=train_data;
  17. Y=expected_output;
  18. [nsv alpha bias]=svc(X,Y,ker,C);
  19. alpha1=alpha;
  20. X=train_data_partly;
  21. Y=expected_output_partly;
  22. [nsv alpha bias]=svc(X,Y,ker,C);
  23. alpha2=alpha;
  24. load test.data
  25. test_data=test;% 测试样本集
  26.        
  27. clc;
  28. % 测试识别输出
  29. fprintf('测试样本的识别结果为: n');
  30. for i=1:6
  31.     X=train_data;
  32.     Y=expected_output;
  33.     Z=test_data(i,:);
  34.     predictedY = svcoutput(X,Y,Z,ker,alpha1,bias,0);
  35.     if  (predictedY==1)
  36.         fprintf(' b n');
  37.     else
  38.         X=train_data_partly;
  39.         Y=expected_output_partly;
  40.         predictedY = svcoutput(X,Y,Z,ker,alpha2,bias,0);
  41.         if (predictedY==1)
  42.            fprintf( ' c n');
  43.         else
  44.            fprintf(' a n');
  45.         end
  46.    end
  47. end
  48.