我正在尝试使用包训练R中的神经网络nnet.以下是有关我的培训数据的信息.
str(traindata)
'data.frame': 10327 obs. of 196 variables:
$ stars : num 5 5 5 3.5 3.5 4.5 3.5 5 5 3.5 ...
$ open : num 1 1 1 1 1 1 1 1 1 1 ...
$ city : Factor w/ 61 levels "ahwatukee","anthem",..: 36 38
$ review_count : int 3 5 4 5 14 6 21 4 14 10 ...
$ name : Factor w/ 8204 levels " leftys barber shop",..:
$ longitude : num …Run Code Online (Sandbox Code Playgroud) 我装配在mutinomial模型中使用nnet的multinom使用功能(在此情况下对数据赋予男性和在不同湖泊鳄鱼的女性和不同尺寸类的饮食偏好):
data=read.csv("https://www.dropbox.com/s/y9elunsbv74p2h6/alligator.csv?dl=1")
head(data)
id size sex lake food
1 1 <2.3 male hancock fish
2 2 <2.3 male hancock fish
3 3 <2.3 male hancock fish
4 4 <2.3 male hancock fish
5 5 <2.3 male hancock fish
6 6 <2.3 male hancock fish
library(nnet)
fit=multinom(food~lake+sex+size, data = data, Hess = TRUE)
Run Code Online (Sandbox Code Playgroud)
我可以使用的因素的整体意义
library(car)
Anova(fit, type="III") # type III tests
Analysis of Deviance Table (Type III tests)
Response: food
LR Chisq Df Pr(>Chisq)
lake 50.318 12 …Run Code Online (Sandbox Code Playgroud) 我在R中使用knitr来生成模型输出的文档.我在代码块中抑制了消息和警告.但我仍然得到收敛信息.我已经在net package和multinom函数中查找了设置.有人知道如何抑制它们吗?我已经看过SO和互联网了.有人在2006年提出了一个问题,但我无法得到答案(我不知道今天是否相关).
我在一个循环中运行很多模型,所以它很快就会变得冗长.这也意味着我不能轻易地将模型运行放在输出的不同块中,因为我在每个循环中打印表.我试图压制的输出示例如下:
# weights: 10 (4 variable)
initial value 2454.392816
iter 10 value 2175.558042
iter 10 value 2175.558039
final value 2175.558039
converged
我是神经网络的新手,我对使用nnet包进行分类有疑问.
我有数据,它是数字和分类变量的混合.我想通过使用nnet和函数调用来赢得预测
nnet(WL~., data=training, size=10)
Run Code Online (Sandbox Code Playgroud)
但是这给出的结果与我使用仅包含变量的数字版本的数据帧(即将所有因子转换为数字(除了我的预测WL))不同.
有人可以向我解释这里发生了什么吗?我想nnet正在解释不同的变量,但我想了解发生了什么.我很欣赏它的困难,没有任何数据来重现问题,但我只是在看一个关于神经网络如何使用nnet进行拟合的高级解释.我无法在任何地方找到它.非常感谢.
str(training)
'data.frame': 1346 obs. of 9 variables:
$ WL : Factor w/ 2 levels "win","lose": 2 2 1 1 NA 1 1 2 2 2 ...
$ team.rank : int 17 19 19 18 17 16 15 14 14 16 ...
$ opponent.rank : int 14 12 36 16 12 30 11 38 27 31 ...
$ HA : Factor w/ 2 levels "A","H": 1 1 2 2 2 2 2 1 1 …Run Code Online (Sandbox Code Playgroud) 我之前见过其他人有这个错误,但是,我还没有找到满意的答案.我想知道是否有人能对我的问题提供一些见解?
我有一些汽车拍卖数据,我试图建模,以预测Hammer.Price.
> str(myTrain)
'data.frame': 34375 obs. of 9 variables:
$ Grade : int 4 4 4 4 2 3 4 3 3 4 ...
$ Mileage : num 150850 113961 71834 57770 43161 ...
$ Hammer.Price : num 750 450 1600 4650 4800 ...
$ New.Price : num 15051 13795 15051 14475 14475 ...
$ Year.Introduced: int 1996 1996 1996 1996 1996 1996 1996 1996 1996 1996 ...
$ Engine.Size : num 1.6 1.6 1.6 1.6 1.6 …Run Code Online (Sandbox Code Playgroud) 我最近在使用 R 时遇到了一些问题。我试图安装似乎不起作用的 nnet。我遵循了关于这个问题的建议,并在 'car'、'effects' 和 'sjPlot' 上使用了 remove.packages() 和 unloadNamespace()。
这在安装 nnet 时成功了,但是现在我无法重新安装这三个软件包。重新安装每个软件包后,r 声明:
图书馆(sjPlot)
get(method,envir = home) 错误:延迟加载数据库 '\xxx/SSD_Home_Data_O/xxx/My Documents/R/win-library/3.2/car/R/car.rdb' 已损坏
2:在 .registerS3method(fin[i, 1], fin[i, 2], fin[i, 3], fin[i, 4], : 重新开始中断的承诺评估
3:在 get(method,envir = home) 中:重新启动中断的承诺评估
4:在 get(method,envir = home) 中:R_decompress1 中的内部错误 -3 错误:“sjPlot”的包或命名空间加载失败
任何想法如何解决这一问题?我有点担心,因为我真的需要特别使用 sjPlot
谢谢您的帮助
我现在用的是插入符包的分类问题的方法NNET,我想知道是什么NNET用来停止训练,以避免过度拟合停止标准.
我已经做了一些研究,我发现在RSNNS包中没有实施停止标准,但它将在未来的工作中考虑,请参见此处:https://www.jstatsoft.org/index.php/jss/article/视图/ v046i07/v46i07.pdf
但对于nnet包,我没有找到任何关于使用停止标准的信息,或者它是否使用了一个.所以,我的问题是.nnet包中使用的停止标准是什么?
谢谢!!!
我试图理解背后的代码nnet。当我将多项因子拆分为二进制列而不是使用公式方法时,我目前得到了不同的结果。
library(nnet)
set.seed(123)
y <- class.ind(iris$Species)
x <- as.matrix(iris[,1:4])
fit1 <- nnet(x, y, size = 3, decay = .1)
# weights: 27
#initial value 164.236516
#iter 10 value 102.567531
#iter 20 value 58.229722
#iter 30 value 39.720137
#iter 40 value 25.049530
#iter 50 value 23.671837
#iter 60 value 23.602392
#iter 70 value 23.601927
#final value 23.601926
#converged
pred1 <- predict(fit1, iris[,1:4])
rowSums(head(pred1))
[1] 1.032197661 1.033700173 1.032750746 1.034229149 1.032052937 1.032539980
set.seed(123)
fit2 <- nnet(Species ~ ., data = iris, …Run Code Online (Sandbox Code Playgroud) 我对神经网络世界很陌生,所以我要求你理解.我正在生成一些测试,因此我对参数size和问题有疑问decay.我使用caret包和方法nnet.示例数据集:
require(mlbench)
require(caret)
require (nnet)
data(Sonar)
mydata=Sonar[,1:12]
set.seed(54878)
ctrl = trainControl(method="cv", number=10,returnResamp = "all")
for_train= createDataPartition(mydata$V12, p=.70, list=FALSE)
my_train=mydata[for_train,]
my_test=mydata[-for_train,]
t.grid=expand.grid(size=5,decay=0.2)
mymodel = train(V12~ .,data=my_train,method="nnet",metric="Rsquared",trControl=ctrl,tuneGrid=t.grid)
Run Code Online (Sandbox Code Playgroud)
所以,有两个是我的问题.首先,这是使用nnet方法的最佳方式吗?其次,我已经读过大小和衰减(例如,R中nnet函数中衰减参数的目的)但我无法理解如何在实践中使用它们这里.有人可以帮忙吗?
我想绘制 R 中与该nnet::multinom()函数拟合的多项式模型的预测概率。我有对数尺度的数值预测变量。
尽管{ggeffects}应该与 兼容multinom(),但该图不会像线性模型那样显示置信区间。
我是 R 和这个社区的新手,所以如果这个问题非常基本或者缺少一些重要的东西,我很抱歉。这是一个小例子:
library(tidyverse)
library(nnet)
library(effects)
library(ggeffects)
df <- data.frame(response = c("1 Better", "1 Better", "1 Better", "2 Medium", "2 Medium", "2 Medium", "3 Worse", "3 Worse", "3 Worse"),
count = c(1000, 2000, 4000, 6000, 10000, 3000, 6000, 5000, 11000))
mod1 <- multinom(response ~ log(count), data = df)
summary(mod1)
effects::effect(mod1, term="log(count)", se=TRUE, confidence.level=.95) %>% plot() # Produces CIs.
ggeffects::ggpredict(mod1, terms = "count") %>% plot() + theme_bw() # No confidence …Run Code Online (Sandbox Code Playgroud)