📜  在 R 编程中构建简单的神经网络(1)

📅  最后修改于: 2023-12-03 14:51:08.549000             🧑  作者: Mango

在 R 编程中构建简单的神经网络

在 R 编程语言中,我们可以使用 neuralnet 包来构建简单的神经网络。在本文中,我们将首先介绍神经网络的基础知识,然后演示如何使用 neuralnet 包创建一个简单的神经网络,并训练它来解决分类问题。

神经网络基础知识

神经网络是一种机器学习算法,它受到人类神经系统的启发。神经网络由多个神经元组成,每个神经元都将输入转换为输出。这些神经元通过连接称为权重的值来连接。权重用于控制信息在神经网络中的流动。

神经网络通常用于分类和回归问题。在分类问题中,神经网络会将输入数据分成不同的类别。在回归问题中,它会将输入数据映射到一个连续的输出。

构建简单的神经网络

首先,我们需要通过安装并加载 neuralnet 包来构建神经网络:

install.packages("neuralnet")
library(neuralnet)

接下来,我们将加载一个数据集并将其拆分成训练集和测试集。在这个例子中,我们将使用鸢尾花数据集:

data(iris)
iris$Species <- as.numeric(iris$Species) - 1

set.seed(123)
trainIndex <- sample(1:nrow(iris), 0.7*nrow(iris))
trainData <- iris[trainIndex, ]
testData <- iris[-trainIndex, ]

在这里,我们将类别变量 “Species” 转换为数字,其中 0 表示 “setosa” 类别,1 表示 “versicolor”,2 表示 “virginica”。我们还将数据集分成训练集和测试集。

接下来,我们将使用 neuralnet 包来构建一个简单的神经网络。在这个例子中,我们将使用一个只包含一个隐藏层的网络,其中隐藏层有 3 个神经元。

net <- neuralnet(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, trainData, hidden = 3)

该函数将通过输入变量 "Sepal.Length","Sepal.Width","Petal.Length"和 "Petal.Width" 来预测类别变量 "Species",并使用训练集进行训练。

训练神经网络

现在,我们已经构建了一个神经网络,接下来我们将使用训练数据对其进行训练,并测试其在测试数据上的表现。为了做到这一点,我们将使用 compute 函数计算神经网络在测试数据中的预测结果,然后将其与真实值进行比较:

predicted <- compute(net, testData[, 1:4])
predicted <- ifelse(predicted$net.result >= 0.5, 1, 0)

accuracy <- sum(predicted == testData[, "Species"]) / nrow(testData)
cat(paste0("Accuracy: ", accuracy))

在这里,我们首先使用 compute 函数计算神经网络在测试数据中的预测结果。然后,我们将预测值四舍五入为 0 或 1,并将其与真实值进行比较。最后,我们计算分类准确性并输出结果。

总结

在本文中,我们介绍了神经网络的基础知识,并演示了如何使用 neuralnet 包来构建和训练一个简单的神经网络。我们还介绍了如何使用测试数据来评估神经网络的性能。

神经网络是一个非常强大的机器学习算法,可以用于解决各种分类和回归问题。通过掌握 neuralnet 包的使用,您可以轻松创建和训练自己的神经网络。