美文网首页
支持向量机分类模型

支持向量机分类模型

作者: 小洁忘了怎么分身 | 来源:发表于2021-11-16 17:12 被阅读0次

开始系统学习一下机器学习的一些知识,这个是svm(支持向量机)分类模型。

1.R包和数据

使用了数据iris,用10%作为测试集,90%作为训练集。

if(!require(e1071))install.packages("e1071")
library(e1071)
dat = iris
set.seed(12342)
od = sample(1:nrow(dat),0.9*nrow(dat))
train <- dat[od,]
test <- dat[-od,]
nrow(train)
## [1] 135
nrow(test)
## [1] 15

2.模型构建和预测

model <- svm(Species ~ ., data = train)
fp = predict(model, test[,-5])   
kt = table(fp,test[,5]);kt
##             
## fp           setosa versicolor virginica
##   setosa          4          0         0
##   versicolor      0          5         1
##   virginica       0          0         5
# 看正确率
sum(diag(kt))/sum(kt)
## [1] 0.9333333

这个例子直接用默认参数,正确率已经非常高了,可以不用调优了(当然也可以还是调调)。

3.搜索最优参数

tune.svm函数可以得出误差最小的参数。

cost是惩罚系数,太大导致过拟合,太小导致欠拟合,不直接用默认参数的画,可以用tune.svm找出表现最好的系数。

gamma参数在不同的kernel里用法不同,涉及到了一些细节原理就不看了。

tuned <- tune.svm(Species ~., 
                  data = train, 
                  gamma = 10^(-3:-1), 
                  cost = 10^(-1:1)) 
summary(tuned)
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  gamma cost
##    0.1   10
## 
## - best performance: 0.03021978 
## 
## - Detailed performance results:
##   gamma cost      error dispersion
## 1 0.001  0.1 0.65989011 0.21376773
## 2 0.010  0.1 0.50934066 0.20021339
## 3 0.100  0.1 0.12692308 0.07989422
## 4 0.001  1.0 0.51813187 0.17702297
## 5 0.010  1.0 0.11978022 0.08817117
## 6 0.100  1.0 0.03736264 0.03943475
## 7 0.001 10.0 0.11978022 0.08817117
## 8 0.010 10.0 0.04450549 0.03836985
## 9 0.100 10.0 0.03021978 0.03904580

由summary的结果可见,最好的参数是0.1和10。

4.用最优参数重新建模

model  <- svm(Species ~., data = train, gamma=0.1, cost=10) 
fp = predict(model, test[,-5])   
kt = table(fp,test[,5]);kt
##             
## fp           setosa versicolor virginica
##   setosa          4          0         0
##   versicolor      0          5         1
##   virginica       0          0         5
# 看正确率
sum(diag(kt))/sum(kt)
## [1] 0.9333333

调完还是一样的,因为默认参数做出来的模型已经挺好的了。

参考:《零基础学R语言数据分析-从机器学习、数据挖掘、文本挖掘到大数据分析》

相关文章

  • ML--支持向量机

    ML——支持向量机 支持向量机(SVM)是一种二类分类模型,其基本模型是定义在特征空间上的间隔最大的线性分类...

  • 2.1.2.2支持向量机(回归)

    模型介绍:相必读者朋友已经对2.1.1.2支持向量机(分类)中提到的分类模型的作用机理有所了解。本节介绍的支持向量...

  • 支持向量机(SVM)

    支持向量机 支持向量机(suport vector machine,简称:SVM),是一种常用于二分类的学习模型。...

  • 支持向量机分类模型

    开始系统学习一下机器学习的一些知识,这个是svm(支持向量机)分类模型。 1.R包和数据 使用了数据iris,用1...

  • 【机器学习基础】核逻辑回归

    将软间隔支持向量机看做正则化模型 上一小节中我们介绍了软间隔支持向量机,该模型允许有错分类数据的存在,从而使模型对...

  • 【机器学习】核支持向量机SVM

    线性支持向量机用于分类任务,而核支持向量机(SVM)是可以推广到更复杂模型的,但无法被输入空间的超平面定义。 虽然...

  • 支持向量机模型原理推导及python实现

    SVM 支持向量机(support vector machines, SVM),是一种二分类模型, 属于判别模型。...

  • 2020-05-22 第十三章 支持向量机模型(python)

    第十三章 支持向量机模型 01 支持向量机模型的介绍 模型介绍 SVM是Support Vector Machin...

  • SVM

    支持向量机 支持向量机是一个强大的机器学习模型,可以做线性或者非线性的分类,回归,甚至异常检测,主要用于解决模式识...

  • 基于sklearn的几种回归模型

    理论 支持向量机回归器 支持向量机回归器与分类器相似,关键在于从大量样本中选出对模型训练最有用的一部分向量。回归器...

网友评论

      本文标题:支持向量机分类模型

      本文链接:https://www.haomeiwen.com/subject/dkwhtrtx.html