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)


相关文章:
R语言实现神经网络ANN
# 常用激活函数 # 自定义Sigmoid函数 sigmod <- function(x){return(1/(1exp(-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(…...
实战:shell脚本练习
高效编写Bash脚本的技巧 总结了10个实用技巧,帮助提高脚本的效率和可靠性,具体包括: 多写注释:在脚本中添加注释,以帮助理解脚本的不同部分。 当运行失败时使脚本退出:使用set -o errexit或set -e&#x…...
常见排序算法总结
文章目录 比较排序冒泡排序选择排序插入排序归并排序快速排序堆排序希尔排序 非比较排序(桶排序)计数排序基数排序 比较排序 冒泡排序 嵌套循环,每次内层循环执行时,数组的每两个元素交换,将一个最大/小的数排到数组…...
网页HTTP协议 get请求和post请求区别?(HTTP中Get、Post、Put与Delete的区别)(HTTP请求方法、HTTP请求方式、HTTP方法)
文章目录 设计GET、POST、DELETE 等多种请求方法的原因1. 符合语义化设计2. 允许服务器对不同的请求方法进行优化处理3. 提高数据传输的安全性4. 遵循现有的网络架构5. 提高网络通信的效率6. 支持 RESTful API 设计 设计GET、POST、DELETE 等多种请求方法的原因 后端之所以要分…...
攻防世界 re新手模式
Reversing-x64Elf-100 64位ida打开 看if语句,根据i的不同,选择不同的数组,后面的2*i/3选择数组中的某一个元素,我们输入的是a1 直接逆向得到就行 二维字符数组写法:前一个是代表有几个字符串,后一个是每…...
Ajax是什么?如何在HTML5中使用Ajax?
Ajax是什么,它如何工作? Ajax是什么 Ajax,全称Asynchronous Javascript And XML(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它允许网页在不重新加载整个页面的情况下,与…...
Python+Flask+MySQL/Sqlite的个人博客系统(前台+后端管理)【附源码,运行简单】
PythonFlaskMySQL/Sqlite的个人博客系统(前台后端管理)【附源码,运行简单】 总览 1、《个人博客系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 管理员登录2.2 程序主页面2.3 笔记新增界面2.4 文章新增界面2.5 文章/笔记管理界面2…...
【Android性能优化】Android CPU占用率检测原理和优化方向
【Android性能优化】Android CPU占用率检测原理和优化方向 CPU相关知识 CPU占用的基本计算公式 (1 - 空闲态运行时间/总运行时间) * 100% Hz、Tick、Jiffies: Hz:Linux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有…...
AWS Certified Developer Associate备考笔记
AWS Certified Developer Associate备考笔记 缓慢更新中,如果你也正在关注该考试,请点赞后评论感兴趣的章节,可加快我的更新速度 😃 文章目录 AWS Certified Developer Associate备考笔记一、IAM二、EC2三、EC2 Instance Storage…...
数据质量8个衡量标准
在数据驱动的时代,数据质量对于企业的决策和业务运营至关重要。为了确保数据的有效性和可靠性,我们需要根据一些关键要素来衡量数据的质量。本文将介绍数据质量的8个衡量标准,包括准确性、精确性、真实性、及时性、即时性、完整性、全面性和关…...
Redis 跳跃列表与紧凑列表
Redis 跳跃列表(Skip List) 跳跃列表是一种高效的数据结构,它结合了有序数组和链表的优点,能够在 O(log n) 时间内进行插入、删除和查找操作。Redis 使用跳跃列表来实现有序集合(sorted set)的底层数据结构…...
达梦数据库的系统视图v$arch_status
达梦数据库的系统视图v$arch_status 在达梦数据库(DM Database)中,V$ARCH_STATUS 是一个动态性能视图(Dynamic Performance View),用于显示归档日志的状态信息。这个视图可以帮助数据库管理员监控和管理数…...
【Rust光年纪】Rust 中常用的数据库客户端库:核心功能与使用场景
探秘 Rust 语言下的多种数据库客户端库:从安装到实际应用 前言 在现代的软件开发中,数据库是不可或缺的一部分。为了与数据库进行交互,开发人员需要使用各种数据库客户端来执行操作、构建查询等。本文将介绍一些用于 Rust 语言的常见数据库…...
网络安全防御【防火墙双机热备带宽管理综合实验】
目录 一、实验拓扑图 二、实验要求 三、实验思路: 四、实验步骤: 1、FW3的网络相关配置: 2、FW1的新增配置: 3、交换机LSW6(总公司)的新增配置: 4、双机热备技术配置(双机热…...
19.x86游戏实战-创建MFC动态链接库
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…...
图论建模技巧搜集
一些经典题目 找可达路径 UVa - 11604 General Sultan 平面图最小割对偶图最短路 UVa - 1376 Animal Run 最小割建模 UVa - 1515 Pool construction 费用流建模 洛谷P3159 [CQOI2012] 交换棋子 一些可以转化为二分图最大权匹配的建模题 UVa1006/LA2238 Fixed Partition Me…...
pytorch学习(九)激活函数
1.pytorch常用激活函数如下: #ReLU激活函数 #Leaky ReLU激活函数 #Sigmoid激活函数 #Tanh激活函数 #Softmax激活函数 #Softplus2.代码 import torch.nn as nn import torch import numpy from torch.utils.tensorboard import SummaryWriterwriter SummaryWriter…...
conda 环境打包与使用
conda 环境导出 使用 Conda 打包环境,可以创建一个可重复使用的环境文件,便于在不同的机器上重新创建相同的环境。以下是具体的步骤: 1. 创建 Conda 环境 如果你还没有创建一个 Conda 环境,可以使用以下命令创建一个新环境&…...
jenkins 插件版本冲突
一、Jenkins安装git parameter 插件重启后报错与临时解决方案 cd /root/.jenkins cp config.xml config.xml.bak vim config.xml <authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAcces…...
Python print() 格式化输出
Python print{} 格式化输出 1. print()2. 浮点数 (float)References 1. print() 传递给函数的值称为参数。 引号没有打印在屏幕上,它们只是表示字符串的起止,不是字符串的一部分。可以用这个函数在屏幕上打印出空行,只要调用 print() 就可以…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙
WebGL:在浏览器中解锁3D世界的魔法钥匙 引言:网页的边界正在消失 在数字化浪潮的推动下,网页早已不再是静态信息的展示窗口。如今,我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室,甚至沉浸式的V…...
[拓扑优化] 1.概述
常见的拓扑优化方法有:均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有:有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...
Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...
中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点
中科院1区顶刊|IF14:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点 当下,免疫与代谢性疾病的关联研究已成为生命科学领域的前沿热点。随着研究的深入,我们愈发清晰地认识到免疫系统与代谢系统之间存在着极为复…...
