Support Vector Machines -------------------

Step 1: Exploring and preparing the data ----

read in data and examine structure
将输入读入到R中,确认接收到的数据具有16个特征,这些特征定义了每一个字母的案例。

letters <- read.csv("F:\\rwork\\Machine Learning with R (2nd Ed.)\\Chapter 07\\letterdata.csv")
str(letters)


支持向量机学习算法要求所有特征都是数值型的,并且每一个特征需要压缩到一个相当小的区间中。

divide into training and test data
一部分作为训练数据,一部分作为测试数据

letters_train <- letters[1:16000, ]
letters_test  <- letters[16001:20000, ]

Step 2: Training a model on the data ----训练模型

begin by training a simple linear SVM
#install.packages(‘kernel’)

为了提供度量度量支持向量机性能的基准,我们从训练一个简单的线性支持向量机分类器开始。

library(kernlab)
letter_classifier <- ksvm(letter ~ ., data = letters_train,kernel = "vanilladot")

ksvm函数默认使用高斯RBF核函数
vanilladot表示线性函数

look at basic information about the model

letter_classifier


这里没有提供任何信息告诉我们模型在真实世界中运行的好坏,所以想下面我们用测试数据来研究模型的性能。

Step 3: Evaluating model performance ----评估模型性能

predictions on testing dataset

letter_predictions <- predict(letter_classifier, letters_test)
head(letter_predictions)

这里我们用table函数对预测值和真实值之间进行比较

table(letter_predictions, letters_test$letter)


对角线的值144、121.120.156和127表示的是预测值与真实值相匹配的总记录数。同样,出错的数目也列出来了。例如,位于行B和列D的值5表示有5种情况将字母D误认为字母B。

单个地看每个错误类型,可能会揭示一些有趣的关于模型识别有困难的特定字母类型的模式,但这也是很耗费时间的。因此,我们可以通过计算整体的准确度来简化我们的评估,即只考虑预测的字母是正确的还是不正确的,并忽略错误的类型。

look only at agreement vs. non-agreement
construct a vector of TRUE/FALSE indicating correct/incorrect predictions

下面的命令返回一个元素为TRUE或者FALSE值的向量,表示在测试数据集中,模型预测的字母是否与真实的字母相符(即匹配)。

agreement <- letter_predictions == letters_test$letter

使用table()函数,我们看到,在4000个测试记录中,分类器正确识别的字母有3357个:

table(agreement)


以百分比计算,准确度大约为84%

prop.table(table(agreement))

Step 4: Improving model performance ----提高模型性能

之前的支持向量机模型使用简单的线性核函数。通过使用一-个更复杂的核函数,我们可以将数据映射到一个更高维的空间,并有可能获得-一个较好的模型拟合度。

然而,从许多不同的核函数进行选择是具有挑战性的。一个流行的惯例就是从高斯RBF核函数开始,因为它已经被证明对于许多类型的数据都能运行得很好。我们可以使用ksvm()函数来训练-一个基于RBF的支持向量机,如下所示:

set.seed(12345)
letter_classifier_rbf <- ksvm(letter ~ ., data = letters_train, kernel = "rbfdot")
letter_predictions_rbf <- predict(letter_classifier_rbf, letters_test)

最后,与我们的线性支持向量机的准确度进行比较:

agreement_rbf <- letter_predictions_rbf == letters_test$letter
table(agreement_rbf)

prop.table(table(agreement_rbf))

通过简单地改变核函数,我们可以将字符识别模型的准确度从84%提高到93%。如果这种性能水平对于光学字符识别程序仍不能令人满意,那么你可以测试其他的核函数或者通过改变成本约束参数C来修正决策边界的宽度。

欢迎指正哦~(原理百度一下很多,所以就不添加了)
需要数据请私信哦~

R语言实现 黑箱方法——支持向量机相关推荐

  1. R语言实现 黑箱方法——神经网络

    用人工神经网络对混泥土的强度strength进行建模** ---- Step 1: Exploring and preparing the data ----探索与准备数据 以下有8个描述混合物成分的 ...

  2. R语言高级算法之支持向量机(Support Vector Machine)

    1.支持向量机原理解析 机器学习本质上就是一种对所研究问题真实模型的逼近,通常会假设一个近似模型,然后根据适当的原理将这个近似模型不断逼近真实模型.结构风险就是指近似模型与真实模型之间的差距. 我们可 ...

  3. R语言使用回归方法解决方差分析问题

    R语言使用回归方法解决方差分析问题 线性回归与t检验等价: 线性回归与方差分析等价: 线性回归与协方差分析等价: ANOVA 和回归都是广义线性模型的特例. 案例1 回归分析做ANOVA librar ...

  4. R语言基于Bootstrap方法计算标准误差(std. error)实战

    R语言基于Bootstrap方法计算标准误差(std. error)实战 目录 R语言基于Bootstrap方法计算标准误差实战 #Bootstrapping计算标准误的流程

  5. 掌握R语言文件读取方法

    目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法 base包内readLines用法 stringi包内stri_read_lines xlsx包内Date Input ...

  6. R语言气象相关分析方法

    R语言气象相关分析方法(包括二进制文件R语言读取) ######读取热带印度洋海温场资料################# read.filename <- file("D:\\99\ ...

  7. R语言包安装方法,及优质包推荐

    R语言,之所以能成为统计学的"当红炸子鸡",因为它内置了海量统计函数,使用者可以利用其对数据进行快速的交互分析,在数据分析界是当之无愧的"瑞士军刀". 因此,通 ...

  8. Ubuntu18.04安装最新R语言环境的方法

    写在前面 最近学习R语言,在Windows环境配置很简单,但是导出的PDF不尽人意,于是选择Ubuntu来搞,可惜一开始我还是太天真,直接sudo apt install r-base了,导致安装的R ...

  9. R语言基本统计分析方法(包及函数)

    转载自:http://blog.csdn.net/s04023083/article/details/40344273 摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持 ...

最新文章

  1. comsat java_java-com.thoughtworks.xstream.converters.ConversionExce...
  2. Spring Boot----基础
  3. Zookeeper的Windows安装
  4. ipad鼠标怎么把圆圈换成箭头_高度融合,让iPad更像笔记本的金属键盘
  5. omnipay支付--支付宝支付
  6. dfa转正则表达式_从0到1打造正则表达式执行引擎(二)
  7. 创建SQL Server索引的好工具
  8. SQL Server 2012笔记分享-47:Database Recovery Advisor
  9. python tracer函数_Python流程控制常用工具和函数定义
  10. php用哪个稳定版本linux系统,PHP的版本选择
  11. 阿里云发布异构计算产品家族,你可以在上面模拟核爆炸
  12. 有谁知道千千静听中的波形特效是怎么做的?
  13. Microsoft Word 2010 - 清除格式
  14. KEIL编译时Warning: C3008W: splitting LDM/STM has no benefit的消除
  15. VISTA 服务详解
  16. 2O2021年贵州高考成绩查询时间,贵州高考成绩一般公布时间 2021贵州高考成绩什么时候公布...
  17. 360手机:360N6Lite Twrp、Root、Magisk教程
  18. 【历史上的今天】12 月 25 日:第一个网络服务器诞生;黑客社区的创始人出生;牛顿诞生
  19. 《部落冲突:皇室战争》——一款不能错过的游戏!
  20. ffmpeg添加mpeg ps流的pcm的解码支持

热门文章

  1. php网上花店开题报告,asp.net网上花店毕业设计开题报告
  2. CDL3的模拟信号采集和CAN发送
  3. 前端开发工程师面试题集锦(一)
  4. Netty学习03--Netty3客户端
  5. C语言用结构体来存放矩阵,妙用结构体 简化报文封装和解析
  6. 卡西欧fx-991cn x 进制转换
  7. C语言入门系列之6.一维和二维数组
  8. 参加Windows 8 训练营上海站札记
  9. 判断三条边是否构成三角形?
  10. 【网络】无线路由器的AP、Client、WDS、WISP使用功能图解(清晰明了)