R语言实现 黑箱方法——支持向量机
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语言实现 黑箱方法——支持向量机相关推荐
- R语言实现 黑箱方法——神经网络
用人工神经网络对混泥土的强度strength进行建模** ---- Step 1: Exploring and preparing the data ----探索与准备数据 以下有8个描述混合物成分的 ...
- R语言高级算法之支持向量机(Support Vector Machine)
1.支持向量机原理解析 机器学习本质上就是一种对所研究问题真实模型的逼近,通常会假设一个近似模型,然后根据适当的原理将这个近似模型不断逼近真实模型.结构风险就是指近似模型与真实模型之间的差距. 我们可 ...
- R语言使用回归方法解决方差分析问题
R语言使用回归方法解决方差分析问题 线性回归与t检验等价: 线性回归与方差分析等价: 线性回归与协方差分析等价: ANOVA 和回归都是广义线性模型的特例. 案例1 回归分析做ANOVA librar ...
- R语言基于Bootstrap方法计算标准误差(std. error)实战
R语言基于Bootstrap方法计算标准误差(std. error)实战 目录 R语言基于Bootstrap方法计算标准误差实战 #Bootstrapping计算标准误的流程
- 掌握R语言文件读取方法
目标 掌握 R语言文件读取方法 学习笔记 utils包内Date Input用法 base包内readLines用法 stringi包内stri_read_lines xlsx包内Date Input ...
- R语言气象相关分析方法
R语言气象相关分析方法(包括二进制文件R语言读取) ######读取热带印度洋海温场资料################# read.filename <- file("D:\\99\ ...
- R语言包安装方法,及优质包推荐
R语言,之所以能成为统计学的"当红炸子鸡",因为它内置了海量统计函数,使用者可以利用其对数据进行快速的交互分析,在数据分析界是当之无愧的"瑞士军刀". 因此,通 ...
- Ubuntu18.04安装最新R语言环境的方法
写在前面 最近学习R语言,在Windows环境配置很简单,但是导出的PDF不尽人意,于是选择Ubuntu来搞,可惜一开始我还是太天真,直接sudo apt install r-base了,导致安装的R ...
- R语言基本统计分析方法(包及函数)
转载自:http://blog.csdn.net/s04023083/article/details/40344273 摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持 ...
最新文章
- comsat java_java-com.thoughtworks.xstream.converters.ConversionExce...
- Spring Boot----基础
- Zookeeper的Windows安装
- ipad鼠标怎么把圆圈换成箭头_高度融合,让iPad更像笔记本的金属键盘
- omnipay支付--支付宝支付
- dfa转正则表达式_从0到1打造正则表达式执行引擎(二)
- 创建SQL Server索引的好工具
- SQL Server 2012笔记分享-47:Database Recovery Advisor
- python tracer函数_Python流程控制常用工具和函数定义
- php用哪个稳定版本linux系统,PHP的版本选择
- 阿里云发布异构计算产品家族,你可以在上面模拟核爆炸
- 有谁知道千千静听中的波形特效是怎么做的?
- Microsoft Word 2010 - 清除格式
- KEIL编译时Warning: C3008W: splitting LDM/STM has no benefit的消除
- VISTA 服务详解
- 2O2021年贵州高考成绩查询时间,贵州高考成绩一般公布时间 2021贵州高考成绩什么时候公布...
- 360手机:360N6Lite Twrp、Root、Magisk教程
- 【历史上的今天】12 月 25 日:第一个网络服务器诞生;黑客社区的创始人出生;牛顿诞生
- 《部落冲突:皇室战争》——一款不能错过的游戏!
- ffmpeg添加mpeg ps流的pcm的解码支持