快捷搜索:  汽车  科技

基于r语言的机器学习(R语言机器学习)

基于r语言的机器学习(R语言机器学习)library(nnet)设置运行路径和读取输入数据设置运行路径###Set working directory for the training data setwd("C:/Users/dell/Desktop/BPnn/bp8") getwd()读取输入数据我们以一个分类任务为例,其中有11个因子:x1~x10,和label:y###Read the input file data <- read.csv("BP_8_TT2.csv") data # 数据命名 data@names <- c("x1" "x2" "x3" "x4" "x5" "x6" "x7" "x8" "x9" "x10&

BP神经网络(BPNN)的全称是:误差反向传播神经网络(Error back propagation training neural network)。它具有任意复杂的模式分类能力和优良的多维函数的映射能力。

BP神经网络的应用

BP神经网络是一种前馈型神经网络,理论上它可以拟合任意的非线性函数。所以适用于很多复杂的应用场景。比如:

  • 分类:图像识别、文本分类、语言识别等
  • 回归:市场价格预测等

基于r语言的机器学习(R语言机器学习)(1)

标准的三层神经网络结构

安装和导入nnet包
  • 安装:我们可以在Rstudio里面直接进行nnet 的安装

第一步:点击第一栏上的Tools,然后在弹出的选项中点击Install Packages

基于r语言的机器学习(R语言机器学习)(2)

1

第二步:在Packages那一栏内输入包的名字:nnet(注意大小写),在弹出的选项中选中nnet,然后点击下面的Install就好了

基于r语言的机器学习(R语言机器学习)(3)

2

第三步:导入nnet

library(nnet)设置运行路径和读取输入数据

  • 设置运行路径

###Set working directory for the training data setwd("C:/Users/dell/Desktop/BPnn/bp8") getwd()

  • 读取输入数据我们以一个分类任务为例,其中有11个因子:x1~x10,和label:y

###Read the input file data <- read.csv("BP_8_TT2.csv") data # 数据命名 data@names <- c("x1" "x2" "x3" "x4" "x5" "x6" "x7" "x8" "x9" "x10" "x11","y") data$y <- as.factor(data$y) # 查看数据 head(data) str(data) data 训练数据处理和构建模型

  • sample函数来划分训练、测试数据集
  • sample() 函数是用于随机采样的函数,用法如下:

函数模型: sample(x size replace = FALSE prob = NULL)

x :参数为一个向量,其中包含一个以上的元素;也可以为一个整数,如果为整数(N),采样范围为 1:N,包括N本身

size:即采样次数

replace :表示是否重复采样,默认为 FALSE,如果为 TRUE,则表示为放回采样

prob: 参数可以设置 x 中每个元素被 sample 的概率

#设置随机种子 set.seed(1234) #将数据按照7:3的比例随机划分为训练集和测试集 ind<-sample(2 nrow(data) replace=TRUE prob=c(0.7 0.3)) traindata<-data[ind==1 ] testdata<-data[ind==2 ]

  • 构建 BPNN并训练

##Train the bpnn based on output from input SYbp=nnet(y~x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 data=data[ind==1 ] size =10 rang=0.5 decay=12e-2 maxit=2000) SYbp print(SYbp) plotnet(SYbp) #输出网络结构图 garson(SYbp) # 输出因子重要性图

基于r语言的机器学习(R语言机器学习)(4)

因子重要性图

预测
  • 在训练完了模型之后使用predict函数进行预测来得到分为各类的概率

## 预测 net.tr_results <- predict(SYbp data[ind==1 ]) ls(net.tr_results) print(net.tr_results) data2=data.frame(traindata$LSI net.tr_results) data2 colnames(data2)<-c("y" "pro")

  • 最后可以用write.csv函数输出我们得到的概率write.csv(results "all_pro.csv")

这就是一个简单的BP神经网络的R语言实现过程,从代码中可以看出,使用R编程相比于其他语言要简单很多,上手也更快。

猜您喜欢: