R语言实现神经网络ANN

# 常用激活函数
# 自定义Sigmoid函数
sigmod <- function(x){return(1/(1+exp(-x)))
}
# 绘制Sigmoid曲线
x <- seq(-10,10,length.out = 100)
plot(x,sigmod(x),type = 'l',col = 'blue',lwd = 2,xlab = NA,ylab = NA,main = 'Sigmoid函数曲线')# 自定义Tanh函数
tanh <- function(x){return((exp(x)-exp(-x))/(exp(x)+exp(-x)))
}
# 绘制Tanh曲线
x <- seq(-10,10,length.out = 100)
plot(x,tanh(x),type = 'l',col = 'blue',lwd = 2,xlab = NA,ylab = NA,main = 'Tanh函数曲线')# 自定义ReLU函数
relu <- function(x){return(ifelse(x<0,0,x))
}
# 绘制ReLu曲线
x <- seq(-6,6,length.out = 100)
plot(x,relu(x),type = 'l',col = 'blue',lwd = 2,xlab = NA,ylab = NA,main = 'ReLU函数曲线')
grid()###  11.3	案例-对iris进行类别预测  ###
# 数据分区
# install.packages("caret")
set.seed(1234) # 设置随机种子
library(caret)
ind <- createDataPartition(iris$Species,p = 0.5,list = FALSE) 
train <- iris[ind,] # 训练集
test <- iris[-ind,] # 测试集##  1.	利用nnet包神经网络模型 ##
# 训练神经网络模型
set.seed(1234)
library(nnet)
iris.nnet <- nnet(Species ~ ., data = train,size = 2,rang = 0.1,decay = 5e-4,maxit = 200)# 调用summary()函数查看训练好的神经网络信息 
summary(iris.nnet)# 对生成的神经网络进行可视化
#install.packages('reshape')
library(reshape)
source('nnet_plot_update.r')
plot.nnet(iris.nnet)iris.nnet$wts # 查看各节点的连接权重值
iris.nnet$value # 查看迭代结束时的损失函数值
head(iris.nnet$fitted.values) # 查看训练集各观测点的预测概率# 对test进行预测
iris_nnet_pred <- predict(iris.nnet,newdata = test,type = 'class') 
(iris_nnet_pred_table  <- table('actual' = test$Species,'prediction' = iris_nnet_pred)) # 查看混淆矩阵
sum(diag(iris_nnet_pred_table)) / sum(iris_nnet_pred_table) # 查看模型准确率##  2.利用neuralnet包神经网络模型 ##
# 对因子型的因变量进行哑变量处理
dmy1 <- dummyVars(~.,data = train,levelsOnly = TRUE)
train_dmy <- predict(dmy1,newdata = train)
test_dmy <- predict(dmy1,newdata = test)
head(train_dmy,3)
head(test_dmy,3)# 训练神经网络模型
set.seed(1234)
library(neuralnet)
iris_neuralnet <- neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,data = train_dmy,hidden = 3) # 构建模型iris_neuralnet$result.matrix # 输出结果矩阵plot(iris_neuralnet) # 模型可视化# 对test进行预测,生成相关的预测概率矩阵
iris_neuralnet_predict <- compute(iris_neuralnet,test_dmy[,1:4])$net.result 
head(iris_neuralnet_predict,3)# 得到可能的类别
iris_neuralnet_pred <- unique(test$Species)[apply(iris_neuralnet_predict,1,which.max)]
head(iris_neuralnet_pred,3)(iris_neuralnet_pred_table  <- table('actual' = test$Species,'prediction' = iris_neuralnet_pred)) # 查看混淆矩阵
sum(diag(iris_neuralnet_pred_table)) / sum(iris_neuralnet_pred_table) # 查看模型准确率##  3.利用AMORE包训练神经网络模型 ##
# 指定lib包路径
.libPaths()
.libPaths("C:/Users/VICTUS/AppData/Local/R/win-library/4.4")# 回归问题的神经网络模型
iris1 <- iris[,1:4]
# 对前三列进行标准化
iris1[,1:3] <- apply(iris1[,1:3],2,scale)
# 加载AMORE包
#install.packages("AMORE",type="binary")
library(AMORE)
# 建立神经网络模型,输入层有3个神经元,输出层有一个神经元,这里增加了两个隐藏层,分别具有10,5个神经元。
newNet <- newff(n.neurons = c(3,10,5,1),learning.rate.global=1e-4,momentum.global=0.05,error.criterium="LMS", Stao=NA, hidden.layer="sigmoid", output.layer="purelin", method="ADAPTgdwm")
# 使用train函数,基于训练数据对神经网络进行训练
newNet.train <- train(newNet,iris1[,1:3],iris1[,4],report = TRUE,show.step = 100,n.shows = 10)
# 基于训练好的模型,对iris1进行预测,并计算均方误差
pred <- sim(newNet.train$net,iris1[,1:3])
error <- sqrt(sum(pred-iris1$Petal.Width)^2)
error##  4.利用RSNNS包训练神经网络模型 ##
library(Rcpp)
library(RSNNS)
set.seed(12)
# 准备数据
# 将因变量进行哑变量处理
library(caret)
dmy <- dummyVars(~.,data = iris,levelsOnly = TRUE)
iris1 <- predict(dmy,newdata = iris)
# 将自变量进行标准化处理
iris1[,1:4] <- apply(iris[,1:4],2,scale)
# 将数据进行分区
ind <- createDataPartition(iris$Species,p = 0.8,list = FALSE) 
train <- iris1[ind,] # 训练集
test <- iris1[-ind,] # 测试集
# 使用mlp()函数,建立具有两个隐藏层,分别具有神经元数量为8,4的多层感知器网络
mlp.nnet <- mlp(train[,1:4],train[,5:7],size = c(8,4), learnFunc="Quickprop", learnFuncParams=c(0.1, 2.0, 0.0001, 0.1),maxit=100)
#利用上面建立的模型进行预测, 得到预测概率矩阵
pred_prob = predict(mlp.nnet,test[,1:4])
head(pred_prob,3)
# 然后,通过找到概率最大的那一列,得到其他可能的类别
pred_class <- unique(iris[-ind,]$Species)[apply(pred_prob,1,which.max)]
#生成混淆矩阵,观察预测精度 
table('actual' = iris[-ind,]$Species,'prediction'= pred_class)
sum(diag(table('actual' = iris[-ind,]$Species,'prediction'= pred_class))) / nrow(test)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/378771.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT-RTSP相机监控视频流

QT-RTSP相机监控视频流 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "mainwindow.h"#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), m_settings("outSmart", "LiveWatcher&…

Web开发:卡片翻转效果(HTML、CSS)

目录 一、实现效果 二、完整代码 三、实现过程 1、页面结构 2、初始样式 3、翻转效果 4、图片大小问题 一、实现效果 如下图所示&#xff0c;当鼠标移入某个盒子&#xff0c;就反转这个盒子&#xff0c;并显示其背面的内容——卡片翻转效果&#xff1b; 卡片翻转效果 二…

Java二十三种设计模式-工厂方法模式(2/23)

工厂方法模式&#xff1a;设计模式中的瑞士军刀 引言 在软件开发中&#xff0c;工厂方法模式是一种常用的创建型设计模式&#xff0c;它用于处理对象的创建&#xff0c;将对象的实例化推迟到子类中进行。这种模式不仅简化了对象的创建过程&#xff0c;还提高了代码的可维护性…

基于Vue CLI 3构建Vue3项目(Vue2也可参考)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Android Framework学习笔记(4)----Zygote进程

Zygote的启动流程 Init进程启动后&#xff0c;会加载并执行init.rc文件。该.rc文件中&#xff0c;就包含启动Zygote进程的Action。详见“RC文件解析”章节。 根据Zygote对应的RC文件&#xff0c;可知Zygote进程是由/system/bin/app_process程序来创建的。 app_process大致处…

【Java--数据结构】二叉树oj题(上)

前言 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 判断是否是相同的树 oj链接 要判断树是否一样&#xff0c;要满足3个条件 根的 结构 和 值 一样左子树的结构和值一样右子树的结构和值一样 所以就可以总结以下思路…

【Pytorch】RNN for Name Classification

参考学习来自&#xff1a; https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.htmlRNN完成姓名分类https://download.pytorch.org/tutorial/data.zip 导入库 import glob # 用于查找符合规则的文件名 import os import unicodedata import stri…

【Powershell】超越限制:获取Azure AD登录日志

你是否正在寻找一种方法来追踪 Azure Active Directory&#xff08;Azure AD&#xff09;中用户的登录活动&#xff1f; 如果是的话&#xff0c;查看Azure AD用户登录日志最简单的方法是使用Microsoft Entra管理中心。打开 https://entra.microsoft.com/&#xff0c;然后进入 监…

taro小程序terser-webpack-plugin插件不生效(vue2版本)

背景 最近在做公司内部的小程序脚手架&#xff0c;为了兼容老项目和旧项目&#xff0c;做了vue2taro,vue3taro两个模板&#xff0c;发现terser-webpack-plugin在vue2和vue3中的使用方式并不相同&#xff0c;同样的配置在vue3webpack5中生效&#xff0c;但是在vue2webpack4中就…

学习Python的IDE功能--(一)入门导览

项目视图是主要工具窗口之一。它包含项目目录、SDK 特定的外部库和临时文件。点击带条纹的按钮可以预览演示项目。您也可以按Alt1打开。点击以打开项目视图&#xff0c;展开项目目录以查看项目文件。双击以打开welcome.py。 切换到"学习"工具窗口继续学习本课次。…

ELK企业级日志分析

目 录 一、ELK简介 1.1 elasticsearch简介 1.2 logstash简介 1.3 kibana简介 1.4 ELK的好处 1.5 ELK的工作原理 二、部署ELK 2.1 部署elasticsearch(集群) 2.1.1 修改配置文件 2.1.2 修改系统参数 2.1.2.1 修改systemmd服务管理器 2.1.2.2 性能调优参数 2.1.2.3 …

文献阅读:tidyomics 生态系统:增强组学数据分析

文献介绍 文献题目&#xff1a; The tidyomics ecosystem: enhancing omic data analyses 研究团队&#xff1a; Stefano Mangiola&#xff08;澳大利亚沃尔特和伊丽莎霍尔医学研究所&#xff09;、Michael I. Love&#xff08;美国北卡罗来纳大学教堂山分校&#xff09;、Ant…

k8s集群新增节点

目前集群状态 如K8S 集群搭建中规划的集群一样 Masternode01node02IP192.168.100.100192.168.100.101192.168.100.102OSCent OS 7.9Cent OS 7.9Cent OS 7.9 目前打算新增节点node03 Masternode01node02node03IP192.168.100.100192.168.100.101192.168.100.102192.168.100.1…

Golang | Leetcode Golang题解之第240题搜索二维矩阵II

题目&#xff1a; 题解&#xff1a; func searchMatrix(matrix [][]int, target int) bool {m, n : len(matrix), len(matrix[0])x, y : 0, n-1for x < m && y > 0 {if matrix[x][y] target {return true}if matrix[x][y] > target {y--} else {x}}return f…

STM32 GPIO的工作原理

STM32的GPIO管脚有下面8种可能的配置:&#xff08;4输入 2 输出 2 复用输出) &#xff08;1&#xff09;浮空输入_IN_FLOATING 在上图上&#xff0c;阴影的部分处于不工作状态&#xff0c;尤其是下半部分的输出电路&#xff0c;实际上是与端口处于隔离状态。黄色的高亮部分显示…

C#统一委托Func与Action

C#在System命名空间下提供两个委托Action和Func&#xff0c;这两个委托最多提供16个参数&#xff0c;基本上可以满足所有自定义事件所需的委托类型。几乎所有的 事件 都可以使用这两个内置的委托Action和Func进行处理。 Action委托&#xff1a; Action定义提供0~16个参数&…

stm32入门-----初识stm32

目录 前言 ARM stm32 1.stm32家族 2.stm32的外设资源 3.命名规则 4.系统结构 5.引脚定义 6.启动配置 7.STM32F103C8T6芯片 8.STM32F103C8T6芯片原理图与最小系统电路 前言 已经很久没跟新了&#xff0c;上次发文的时候是好几个月之前了&#xff0c;现在我是想去学习st…

怎样减少视频的容量 怎样减少视频内存保持清晰度

在数字媒体时代&#xff0c;视频内容已经成为人们日常交流和信息传递的重要方式。然而&#xff0c;视频往往占用大量存储空间&#xff0c;给我们的设备带来不小的负担。如何在不损失视频质量的前提下&#xff0c;减少视频文件的大小呢&#xff1f;本文将为你揭秘几个实用的技巧…

定制开发AI智能名片商城微信小程序在私域流量池构建中的应用与策略

摘要 在数字经济蓬勃发展的今天&#xff0c;私域流量已成为企业竞争的新战场。定制开发AI智能名片商城微信小程序&#xff0c;作为私域流量池构建的创新工具&#xff0c;正以其独特的优势助力企业实现用户资源的深度挖掘与高效转化。本文深入探讨了定制开发AI智能名片商城微信…

数据结构(5.2_2)——二叉树的性质

常见考点1: 设非空二叉树中度为0、1和2的结点个数分别为n0、n1和n2&#xff0c;则n0n21(叶子结点比二分支结点多一个) 常见考点2&#xff1a; 二叉树第一层至多右 有个结点(i>1) m叉树第一层至多右 有个结点(i>1) 常见考点3&#xff1a; 高度为h的二叉树至多有个结点…