1. libsvm 支持的SVM模型

官网地址:LIBSVM – A Library for Support Vector Machines

libsvm 支持的 SVM 模型如下(C:classification,R:regression):

  • C-SVC(C-support vector classification),
  • nu-SVC(nu-support vector classification),
  • one-class SVM(distribution estimation),
  • epsilon-SVR(epsilon-support vector regression),
  • nu-SVR(nu-support vector regression)

2. 一个简单demo

%% 加载数据到内存;
load heart_scale.mat

X = heart_scale_inst;
y = heart_scale_label;

N = size(X, 1);

%% 将数据集划分为训练集和测试集
idx = randperm(N);          % 对全部样本的一次全排列;
prop = floor( .75*N);

train_X = X(1:prop, :) ;
test_X = X(prop+1:end, :);
train_y = y(1:prop, :);
test_y = y(prop+1:end, :);

%% 通过训练集进行训练
model = svmtrain(train_y, train_X, '-s 0 -t 2 -c 1.2 -g 2.8')
% 将训练好的模型作用在训练集,查看准确率情况
[predicted_labels, accuracy, decision_values] = svmpredict(train_y, train_X, model);

%% 在真实的测试集上进行测试
predicted_labels = svmpredict(test_y, test_X, model);
accuracy = sum(predicted_labels == test_y) / length(test_y)
  • svmtrain 参数的意义:
    • -s svm类型:SVM设置类型(默认0)
      % 0 – C-SVC
      % 1 –v-SVC
      %2 – 一类SVM
      %3 – e -SVR
      % 4 – v-SVR
    • -t 核函数类型:核函数设置类型(默认2)
      % 0 – 线性:u’v
      % 1 – 多项式:(r*u’v + coef0)^degree
      % 2 – RBF函数:exp(-r|u-v|^2)
      % 3 –sigmoid:tanh(r*u’v + coef0)
    • -c cost:设置C-SVC,e -SVR和v-SVR的参数(损失函数)(默认1)
    • -g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)

常见问题的解决

posted on 2017-05-25 15:19  未雨愁眸  阅读(439)  评论(0编辑  收藏  举报