首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >神经网络:R中的Garson算法

神经网络:R中的Garson算法
EN

Stack Overflow用户
提问于 2020-03-18 04:21:54
回答 2查看 349关注 0票数 0

我正在使用Garson算法通过R中的gar.fun()函数来提取输入到我的神经网络的每个变量的相对重要性,当我使用这个函数时,我得到了一个图作为结果(见下文),但我也想从这个函数中提取数值。如何做到这一点?

使用的数据可以在here中找到。

代码:

代码语言:javascript
运行
复制
library(neuralnet)
library(devtools)
source_gist('6206737')

trainset <- data[1:300, ]
testset <- data[301:395, ]

nn <- neuralnet(Pass ~ ., data=trainset, hidden=c(16,14,10,5), stepmax = 13000, linear.output=FALSE, err.fct = "ce")

gar.fun('y', nn)

输出:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-18 05:23:38

我无法获得您的数据或复制您的图,但使用您获得代码的the website中的示例:

代码语言:javascript
运行
复制
require(clusterGeneration)
require(nnet)

set.seed(2)
num.vars<-8
num.obs<-10000

cov.mat<-genPositiveDefMat(num.vars,covMethod=c("unifcorrmat"))$Sigma
rand.vars<-mvrnorm(num.obs,rep(0,num.vars),Sigma=cov.mat)
colnames(rand.vars) = paste0("col",1:ncol(rand.vars))
parms<-runif(num.vars,-10,10)
y<-rand.vars %*% matrix(parms) + rnorm(num.obs,sd=20)

y<-data.frame((y-min(y))/(max(y)-min(y)))
names(y)<-'y'
rand.vars<-data.frame(rand.vars)
mod1<-nnet(rand.vars,y,size=8,linout=T)

plotdata = gar.fun('y',mod1)

Y的值为:

代码语言:javascript
运行
复制
plotdata$data
        rel.imp x.names
col5 -1.0000000    col5
col4 -0.9699018    col4
col6 -0.8217886    col6
col1  0.0000000    col1
col7  0.3600374    col7
col8  0.4018898    col8
col3  0.6114887    col3
col2  0.9299521    col2

你可以在图中看到它们:

代码语言:javascript
运行
复制
plotdata + geom_text(aes(label=round(rel.imp,3)),vjust=rep(c(2,-1.5),c(4,4)))

票数 1
EN

Stack Overflow用户

发布于 2020-03-28 18:01:42

本文描述了一种更精确的方法,该方法是由我开发的,这是R中的一个计算相对重要性的代码,但它使用了一个隐藏层

代码语言:javascript
运行
复制
sqdif<-(nn$weights[[1]][[1]][-1,]-nn$startweights[[1]][[1]][-1,])^2
for(i in 1:(ncol(mydata)-1)){
  tabl[1,i]<-sum(sqdif[i,])/sum(sqdif)
  print(tabl[1,i])
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60729679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档