小伙伴们好!在R语言中,构建神经网络模型可以通过多种R包来实现,但最常用的包之一是neuralnet。
关注+星标!不错过干货文章
此外,nnet和keras(TensorFlow的R接口)也是构建神经网络时常用的选择。今天我将分别介绍如何使用neuralnet和keras包来构建简单的神经网络模型。
neuralnet包构建神经网络
你需要安装并加载neuralnet包。如果还没有安装,可以通过install.packages("neuralnet")一行安装上。
我们还是用iris鸢尾花数据集作为示例。需要特别注意的是,neuralnet需要数值型输出,所以iris$Species需要转换成数值。
# 加载neuralnet包library(neuralnet)# 使用iris数据集作为示例data(iris)# 注意!将Species转换为数值型,因为neuralnet需要数值型输出iris$Species <- as.numeric(iris$Species) - 1# 构建模型,这里使用Petal.Length, Petal.Width作为输入,Species作为输出nn <- neuralnet(Species ~ Petal.Length + Petal.Width, data = iris, hidden = c(5), linear.output = FALSE)# 查看模型结果print(nn)
使用keras包构建神经网络
我使用了一个包含两个全连接层的神经网络(第一层有10个神经元,第二层有3个神经元,对应三个类别的输出),并使用了ReLU激活函数和softmax输出层来进行多分类。模型使用adam优化器和交叉熵损失函数进行编译和训练。
# 安装keras和tensorflow(如果尚未安装)install.packages("keras")keras::install_keras()# 加载keras库library(keras)# 假设数据已经准备好,这里我们还是使用iris数据集data(iris)iris$Species <- as.integer(iris$Species) - 1 # 转换为0开始的索引# 划分数据集set.seed(123)indices <- sample(1:nrow(iris), size = 0.7 * nrow(iris))train_data <- iris[indices, -5]train_labels <- to_categorical(iris$Species[indices], num_classes = 3)test_data <- iris[-indices, -5]test_labels <- to_categorical(iris$Species[-indices], num_classes = 3)# 构建模型model <- keras_model_sequential() %>%layer_dense(units = 10, activation = 'relu', input_shape = c(2)) %>%layer_dense(units = 3, activation = 'softmax')# 编译模型model %>% compile(loss = 'categorical_crossentropy',optimizer = 'adam',metrics = c('accuracy'))# 训练模型model %>% fit(train_data,train_labels,epochs = 100,batch_size = 10,validation_split = 0.2)# 评估模型loss_and_metrics <- model %>% evaluate(test_data, test_labels)print(loss_and_metrics)
这两种在R语言中构建神经网络模型的常用方法。小伙伴们可以根据自己的需求和数据集的特点,来选择适合的R包和模型结构。
想了解更加详细的代码及其他机器学习模型,别忘了关注+星标!欢迎分享给更多的同学,我们一起加油ヾ(◍°∇°◍)ノ゙

