b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

支持向量机超平面_支持向量机通过寻找_r语言 支持向量机分类(4)

电脑杂谈  发布时间:2017-02-02 17:03:39  来源:网络整理

顺带说一句,在kernlab包中,可以自定义核函数。

Degree:多项式核的次数,默认为3

Gamma:除去线性核外,其他的核的参数,默认为1/数据维数

Coef0,:多项式核与sigmoid核的参数,默认为0

Cost:C分类的惩罚项C的取

Nu:nu分类,单一分类中nu的取

Cross:做K折交叉验证,计算分类正确性。

由于svm的编程确实过于复杂,还涉及到不少最优化的内容,所以在第二部分我的分类都是使用svm函数完成的(偷一下懒),现将部分R代码展示如下:

dataSim的函数:

simData=function(radius,width,distance,sample_size)
{
   aa1=runif(sample_size/2)
   aa2=runif(sample_size/2)
  rad=(radius-width/2)+width*aa1
   theta=pi*aa2
   x=rad*cos(theta)
   y=rad*sin(theta)
   label=1*rep(1,length(x))
 
   x1=rad*cos(-theta)+rad
   y1=rad*sin(-theta)-distance
   label1=-1*rep(1,length(x1))
 
   n_row=length(x)+length(x1)
   data=matrix(rep(0,3*n_row),nrow=n_row,ncol=3)
   data[,1]=c(x,x1)
   data[,2]=c(y,y1)
   data[,3]=c(label,label1)
  
   data
  
}
dataSim=simData(radius=10,width=6,distance=-6,sample_size=3000)
colnames(dataSim)<-c("x","y","label")
dataSim<-as.data.frame(dataSim)

Sigmoid核的分类预测:

m1 <- svm(label ~x+y, data =dataSim,cross=10,type="C-classification",kernel="sigmoid")
m1
summary(m1)
pred1<-fitted(m1)
table(pred1,dataSim[,3])

核函数那一小节作图的各种东西:

linear.svm.fit <- svm(label ~ x + y, data = dataSim, kernel ='linear')
with(dataSim, mean(label == ifelse(predict(linear.svm.fit) > 0,1, -1)))
 
polynomial.svm.fit <- svm(label ~ x + y, data = dataSim, kernel ='polynomial')
with(dataSim, mean(label == ifelse(predict(polynomial.svm.fit) >0, 1, -1)))
 
radial.svm.fit <- svm(label ~ x + y, data = dataSim, kernel ='radial')
with(dataSim, mean(label == ifelse(predict(radial.svm.fit) > 0,1, -1)))
 
sigmoid.svm.fit <- svm(label ~ x + y, data = dataSim, kernel ='sigmoid')
with(dataSim, mean(label == ifelse(predict(sigmoid.svm.fit) > 0,1, -1)))
 
df <- cbind(dataSim,
           data.frame(LinearSVM = ifelse(predict(linear.svm.fit) > 0, 1, -1),
                      PolynomialSVM = ifelse(predict(polynomial.svm.fit) > 0, 1, -1),
                      RadialSVM = ifelse(predict(radial.svm.fit) > 0, 1, -1),
                      SigmoidSVM = ifelse(predict(sigmoid.svm.fit) > 0, 1, -1)))
library("reshape")
predictions <- melt(df, id.vars = c('x', 'y'))
library('ggplot2')
ggplot(predictions, aes(x = x, y = y, color = factor(value))) +
  geom_point() +
  facet_grid(variable ~ .)


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-30140-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...