R 实现 支持向量机 support vector machine

简介: R 实现 支持向量机 support vector machine

@TOC

1 工具准备

R中有直接写好的包,可以直接使用

install.packages("e1071")
library(e1071)

2 划分样本

对训练集和测试集进行划分

index=sample(1:nrow(iris),100)
train=iris[index,]
test=iris[-index,]

3 模型建立

用工具包中的方法建立模型

model1=svm(Species~.,data=train,kernel="linear")
model1

summary(model1)
p1=predict(model1,test)
table(test$Species,p1)

在这里插入图片描述

4 交叉验证

cross参数是交叉验证比例

#num-fold cross validation
model2=svm(Species~.,data=train,kernel="linear",cross=7)
summary(model2)

在这里插入图片描述

5 软间隔选择

cost是划分软间隔的距离

model3=svm(Species~.,data=train,kernel="linear",cross=5,cost=50)
model3$accuracies
model3$tot.accuracy

在这里插入图片描述
编写软间隔方法,直接使用软间隔

acc=function(cost){
  model=svm(Species~.,data=train,kernel="linear",cross=5,cost=cost)
  p=predict(model,test)
  A=as.matrix(table(test$Species,p))
  acc=(sum(diag(A))/sum(A))
  return(acc)
}
acc(10)

在这里插入图片描述

创建等差数列选择最优软间隔

C=seq(0.01,100,length=100)
Acc=NULL
for (i in 1:length(C)) {
  model=svm(Species~.,data=train,kernel="linear",cross=5,cost=C[i])
  p=predict(model,test)
  A=as.matrix(table(test$Species,p))
  Acc[i]=(sum(diag(A))/sum(A))
}
Acc
which(Acc==max(Acc))
plot(C,Acc)

在这里插入图片描述
在这里插入图片描述

6 非线性核函数参数

使用gamma参数调整核函数

#kernel function
model4=model3=svm(Species~.,data=train,kernel="radial",cross=5,cost=5,gamma=0.1)
summary(model4)

在这里插入图片描述

目录
相关文章
|
机器学习/深度学习 算法 BI
机器学习算法之——支持向量机(Support Vector Machine, SVM)
支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。
机器学习算法之——支持向量机(Support Vector Machine, SVM)
|
机器学习/深度学习 算法
机器学习:SVM(Support Vector Machine)支持向量机简介
机器学习:SVM(Support Vector Machine)支持向量机简介
112 0
|
机器学习/深度学习 算法 数据挖掘
支持向量机 support vector machine
支持向量机 support vector machine
143 0
支持向量机 support vector machine
|
机器学习/深度学习 缓存 算法
支持向量机(Support Vector Machine)
支持向量机 linear regression , perceptron learning algorithm , logistics regression都是分类器,我们可以使用这些分类器做线性和非线性的分类,比如下面的一个问题: GV0SHYC3S{P{Q4QVB66UN6T.png 这里的每一条线都是可以把这个平面分开的,支持向量机要做的就是要在这些可以选择的直线中选择一条最好的直线来作为分类的直线。
1151 0
|
6月前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
540 1
|
6月前
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
150 0
|
开发工具 Android开发
Mac 安卓(Android) 配置adb路径
Mac 安卓(Android) 配置adb路径
826 0
|
3月前
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
87 0
|
6月前
|
Shell Android开发
ADB更改Android设备屏幕显示方向
ADB更改Android设备屏幕显示方向
341 5