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

r语言 支持向量机分类_支持向量机原理_envi支持向量机分类(7)

电脑杂谈  发布时间:2017-02-15 05:02:50  来源:网络整理

[plain] view plaincopyprint?

library(nnet); #安装nnet软件包

library(mlbench); #安装mlbench软件包

data(Vehicle); #调入数据

n=length(Vehicle[,1]); #样本量

set.seed(1); #设随机数

samp=sample(1:n,n/2); #随机选择半数观测作为训练集

b=class.ind(Vehicle$Class); #生成类别的示性函数

test.cl=function(true,pred){true<-max.col(true);cres=max.col(pred);table(true,cres)};

a=nnet(Vehicle[samp,-19],b[samp,],size=3,rang=0.1,decay=5e-4,maxit=200); #利用训练集中前18个变量作为输入变量,隐藏层有3个节点,初始随机权值在[-0.1,0.1],权值是逐渐衰减的。

test.cl(b[samp,],predict(a,Vehicle[samp,-19]))#给出训练集分类结果

test.cl(b[-samp,],predict(a,Vehicle[-samp,-19]));#给出测试集分类结果

#构建隐藏层包含15个节点的网络。接着上面的语句输入如下程序:

a=nnet(Vehicle[samp,-19],b[samp,],size=15,rang=0.1,decay=5e-4,maxit=10000);

test.cl(b[samp,],predict(a,Vehicle[samp,-19]));

test.cl(b[-samp,],predict(a,Vehicle[-samp,-19]));

再看手写数字案例

最后,我们回到最开始的那个手写数字的案例,我们试着利用支持向量机重做这个案例。(这个案例的描述与数据参见《R语言与机器学习学习笔记(分类算法)(1)》)

由于nnet包对输入的维数有一定限制(我也不知道为什么,可能在权值计算的时候出现了一些bug,反正将支持向量机那一节的代码平行的移过来是会报错的)。我们这里采用手写数字识别技术中常用的办法处理这个案例:计算数字的特征。选择数字特征的办法有许多种,你随便百度一篇论文都有叙述。我们这里采用结构特征与统计特征结合的办法计算图像的特征。

我们这里采用的统计特征与上图有一点的不同(结构特征一致),我们是将图片分为16块(4*4),统计每个小方块中点的个数,这样我们就有25维的特征向量了。为了保证结果的可比性,我们也报告支持向量机的分类结果。

运行下列代码:

[plain] view plaincopyprint?

setwd("D:/R/data/digits/trainingDigits")

names<-list.files("D:/R/data/digits/trainingDigits")

data<-paste("train",1:1934,sep="")

for(i in 1:length(names))

assign(data,as.matrix(read.fwf(names,widths=rep(1,32))))

library(nnet)

label<-factor(rep(0:9,c(189,198,195,199,186,187,195,201,180,204)))


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

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

    每日福利
    热点图片
    拼命载入中...