支持向量机 SVMs

 

SPLsvm()中包含了C-SVCnu-SVCepsilon-SVRnu-SVR五种算法,可用于解决分类问题和回归问题。详细的语法和参数说明见函数参考文档http://d.raqsoft.com.cn:6999/esproc/func/math.html

例如,回归问题

继续使用上节的样本数据,使用svm()进行建模和预测


A

1

[[1.1,1.1],[1.4,1.5],[1.7,1.8],[1.7,1.7],[1.8,1.9],[1.8,1.8],[1.9,1.8],[2.0,2.1],[2.3,2.4],[2.4,2.5]]

2

[16.3,16.8,19.2,18,19.5,20.9,21.1,20.9,20.3,22]

3

[[2.4, 2.4]]

4

>svm_type=3,kenel=0,degree=3,cache_size=100,eps=0.001,C=1,gamma=0.25,coef=0,nu=0.5,p=0.1,nr_weight=1,shrinking=1,probability=0

5

=[svm_type,kenel,degree,cache_size,eps,C,gamma,coef,nu,p,nr_weight,shrinking,probability]

6

=svm(A1,A2,A5)

7

=svm(A6,A3)

8

=svm(A1,A2,A5,A3)

A1 训练集x

A2 训练集y

A3 预测样本

A4 设值svm的参数,选择SVR回归算法

A5 A4中的参数值传入到序列中,作为svm的参数param

A6 输入训练数据和参数,执行建模,返回模型RR中成员值依次为:决策函数中支持向量的系数,每个类别的标签,类别数,总支持向量的数量,每个类别的支持向量数量,决策函数中的常数,支持向量,训练时的参数param

..

A7 根据A6的模型信息R,在预测数据进行预测,返回预测结果

..

A8 连续进行建模和预测,直接返回预测结果,效果等同于A6+A7

再例如,分类问题

使用泰坦尼克的数据,由于该数据中有缺失值和字符型变量不能直接建模,因此在使用前已进行了相关处理,在本例中直接用处理过的数据进行建模演示。


A

1

=file("D://titanic_svm.csv").import@tc()

2

=A1.array().to(2:)

3

=A2.(~.to(2:)).to(800)

4

=A2.(~(1)).to(800)

5

=A2.(~.to(2:)).to(801:)

6

>svm_type=0,kenel=2,degree=3,cache_size=100,eps=0.001,C=1,gamma=0.25,coef=0,nu=0.5,p=0.1,nr_weight=1,shrinking=1,probability=0

7

=[svm_type,kenel,degree,cache_size,eps,C,gamma,coef,nu,p,nr_weight,shrinking,probability]

8

=svm(A3,A4,A7)

9

=svm(A8,A5)

10

=svm(A3,A4,A7,A5)

A1 导入数据,读成序表

A2 序表改为向量形式,去掉标题

A3 取前800条样本的自变量,作为训练集X

A4 取前800条样本的目标变量,作为训练集Y

A5 800条以后的样本自变量,作为预测集

A6 设置输入svm的参数,选择SVC算法

A7 A6中的参数值传入到序列中,作为svm的参数param

A8 A7中的参数,在训练集上训练,返回训练结果R

..

A9 根据训练结果R,在预测集上进行预测,返回预测结果

..

A10 连续进行建模和预测,直接返回预测结果,效果等同于A7+A8