基于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神经网络是一种前馈型神经网络,理论上它可以拟合任意的非线性函数。所以适用于很多复杂的应用场景。比如:
- 分类:图像识别、文本分类、语言识别等
- 回归:市场价格预测等
标准的三层神经网络结构
安装和导入nnet包- 安装:我们可以在Rstudio里面直接进行nnet 的安装
第一步:点击第一栏上的Tools,然后在弹出的选项中点击Install Packages
1
第二步:在Packages那一栏内输入包的名字:nnet(注意大小写),在弹出的选项中选中nnet,然后点击下面的Install就好了
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) # 输出因子重要性图
因子重要性图
预测- 在训练完了模型之后使用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编程相比于其他语言要简单很多,上手也更快。