libsvm 的使用

来源:互联网 发布:日本 穆斯林 知乎 编辑:程序博客网 时间:2024/05/16 16:03

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.matX = 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核函数)

常见问题的解决

  • load heart_scale 数据时的“ASCII 文件 heart_scale 的第 3 行中的列数必须与前面行中的列数相同”。
    • libsvm-3.18 heart_scale文件格式错误
原创粉丝点击