当前位置:   article > 正文

利用R语言实现支持向量机(SVM)数据挖掘案例

ms<-predict(fit_svm_reg,mand)defaultsummary(data.frame(obs=mand$ms,pred=ms))

建立模型

svm()函数在建立支持向量机模型的时候有两种建立方式。简单地说,一种是根据既定公式建立模型;而另外一种方式则是根据所给的数据模型建立模型。

根据函数的第一种使用格式,针对上述数据建模时,应该先确定所建立的模型所使用的数据,然后再确定所建立模型的结果变量和特征变来那个。代码如下:

library(e1071)

data(iris)

#建立svm模型

model <- svm(Species~.,data = iris)

在使用第一种格式建立模型时,如果使用数据中的全部特征变量作为模型特征变量时,可以简要地使用“Species~.”中的“.”代替全部的特征变量。

根据函数的第二种使用格式,在针对iris数据建立模型时,首先应该将结果变量和特征变量分别提取出来。结果变量用一个向量表示,而特征向量用一个矩阵表示。在确定好数据后还应根据数据分析所使用的核函数以及核函数所对应的参数值,通常默认使用高斯内积函数作为核函数,具体分析代码如下:

#提取iris数据中除第5列以外的数据作为特征变量

x <- iris[,-5]

#提取iris数据中第5列数据作为结果变量

y <- iris[,5]

#建立svm模型

model <- svm(x,y,kernel = "radial", gamma = if(is.vector(x)) 1 else 1/ncol(x))

在使用第二种格式建立模型时,不需要特别强调所建立模型的哪个是,函数会自动将所有输入的特征变量数据作为建立模型所需要的特征变来那个。

在上述过程中,确定核函数的gamma系数时所使用的R语言所代表的意思为:如果特征向量是向量则gamma值取1,否则gamma值为特征向量个数的倒数。

结果分析

summary(model)

Call:

svm.default(x = x, y = y, kernel = "radial", gamma = if (is.vector(x)) 1 else 1/ncol(x))

Parameters:

SVM-Type: C-classification

SVM-Kernel: radial

cost: 1

gamma: 0.25

Number of Support Vectors: 51

( 8 22 21 )

Number of Classes: 3

Levels:

setosa versicolor virginica

通过summary()函数可以得到关于模型的相关信息。其中,SVM-Type项目说明本模型的诶别为C分类器模型;SVM-Kernel项目说明本模型所使用的核函数为高斯内积函数且核函数中参数gamma的取值为0.25;cost项目说明本模型确定的约束违反成本为1。

在输出结果中,我们还可以看到,对于该数据,模型找到了51个支持变量;第一类具有8个支持向量,第二类具有22个支持向量,第三类具有21个支持向量。最后说明了模型中的三个类别为:setosa、versicolor和virginica。

预测判别

通常我们利用样本数据建立模型之后,主要目的都是利用模型来进行相应的预测和判别。在利用svm()函数建立的模型进行预测时,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/444477
推荐阅读
  

闽ICP备14008679号