📜  R 编程中的单层神经网络

📅  最后修改于: 2022-05-13 01:54:20.644000             🧑  作者: Mango

R 编程中的单层神经网络

神经网络也称为神经网络,是机器学习和人工智能中的一种算法,其工作原理与人脑的操作相同。神经网络中的人工神经元描绘了人类大脑中神经元的相同行为。神经网络用于业务风险分析、预测销售等等。神经网络能够适应不断变化的输入,因此无需根据输入重新设计算法。在本文中,我们将讨论单层神经网络及其语法和 R 编程中的neuralnet()函数的实现。以下函数需要neuralnet包。

神经网络的类型

神经网络可以根据其深度激活过滤器、结构、使用的神经元、神经元密度、数据流等分为多种类型。神经网络的类型如下:

  1. 感知器
  2. 前馈神经网络
  3. 卷积神经网络
  4. 径向基函数神经网络
  5. 递归神经网络
  6. 序列到序列模型
  7. 模块化神经网络

根据层数,有两种类型的神经网络:

  1. 单层神经网络:单层神经网络包含输入层和输出层。输入层接收输入信号,输出层相应地生成输出信号。
  2. 多层神经网络:多层神经网络包含输入、输出和一个或多个隐藏层。隐藏层在将输入引导到输出层之前执行中间计算。

单层神经网络

单层神经网络通常称为感知器,是一种由输入层和输出层组成的前馈神经网络。提供的输入是多维的。感知器本质上是非循环的。在每个节点中计算权重乘积和输入的总和。输入层将信号传输到输出层。输出层执行计算。感知器只能学习线性函数,需要较少的训练输出。输出可以用一个或两个值(0 或 1)表示。

R中的实现

R语言提供了neuralnet()函数,该函数在neuralnet包中可以用来执行单层神经网络。

示例 1:
在这个例子中,让我们创建基于萼片长度和萼片宽度的鸢尾植物物种 setosa 和 versicolor 的单层神经网络或感知器。
第一步:安装需要的包

# Install the required package
install.packages("neuralnet")

第 2 步:加载包

# Load the package
library(neuralnet)

第 3 步:加载数据集

# Load dataset
df <- iris[1:100, ]

第 4 步:拟合神经网络

nn = neuralnet(Species ~ Sepal.Length 
              + Sepal.Width, data = df,
              hidden = 0, linear.output = TRUE)

第 5 步:绘制神经网络

# Output to be present as PNG file
png(file = "neuralNetworkGFG.png")
  
# Plot
plot(nn)
  
# Saving the file
dev.off()

输出:
输出图

示例 2:
在这个例子中,让我们使用多层神经网络创建更可靠的神经网络,并根据数据集进行预测。
第一步:安装需要的包

# Install the required package
install.packages("neuralnet")

第 2 步:加载包

# Load the package
library(neuralnet)

第 3 步:加载数据集

# Load dataset
df <- mtcars

第 4 步:拟合神经网络

nn <- neuralnet(am ~ vs + cyl + disp + hp + gear 
                + carb + wt + drat, data = df, 
               hidden = 3, linear.output = TRUE)

第 5 步:绘制神经网络

# Output to be present as PNG file
png(file = "neuralNetwork2GFG.png")
  
# Plot
plot(nn)
  
# Saving the file
dev.off()

第 6 步:创建测试数据集

# Create test dataset
vs = c(0, 1, 1)
cyl =c(6, 8, 8)
disp = c(170, 250, 350)
hp = c(120, 240, 300)
gear = c(4, 5, 4)
carb = c(4, 3, 3)
wt = c(2.780, 3.210, 3.425)
drat = c(3.05, 4.02, 3.95)
  
test <- data.frame(vs, cyl, disp, hp, 
                  gear, carb, wt, drat)

第 7 步:对测试数据集进行预测

Predict <- compute(nn, test)
  
cat("Predicted values:\n")
print(Predict$net.result)

第 8 步:将预测转换为二进制值

probability <- Predict$net.result
pred <- ifelse(probability > 0.5, 1, 0)
cat("Result in binary values:\n")
print(pred)

输出:
输出图

Predicted values:
          [,1]
[1,] 0.3681382
[2,] 0.9909768
[3,] 0.9909768

Result in binary values:
     [,1]
[1,]    0
[2,]    1
[3,]    1

解释:
在上面的输出中,每行测试数据集的“am”值是使用多层神经网络预测的。与函数创建的神经网络一样,大于 0.49 的预测值使汽车的“am”值为 1。

单层神经网络的优势

  • 单层神经网络易于设置和训练,因为没有隐藏层
  • 它与统计模型有明确的联系

单层神经网络的缺点

  • 它仅适用于线性可分数据。
  • 与多层神经网络相比,单层神经网络的准确性较低。