首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用来自mx.mlp包r的mx.net错误

使用来自mx.mlp包r的mx.net错误
EN

Stack Overflow用户
提问于 2018-01-28 18:42:18
回答 1查看 374关注 0票数 0

我已经在RVersion3.4.3中安装了mx.net包,使用

cran <- getOption("repos") cran"dmlc“<- "https://s3-us-west-2.amazonaws.com/apache-mxnet/R/CRAN/” 选项(repos= cran) install.packages("mxnet")

在估计神经网络时会出现一些问题。

在下面的代码中,我使用了https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+%28Original%29上可用的乳腺癌数据集。

代码语言:javascript
运行
复制
BC_data <- read.csv("Data_breastcancer.csv", sep = ";")

# generate a train and test set
trainIndex = sample(1:nrow(BC_data), size = round(0.8*nrow(BC_data)), replace=FALSE)
train_data <- BC_data[trainIndex,]
test_data <- BC_data[-trainIndex,]
X_train <- train_data[,c(-1,-11)]
y_train <- train_data[,11]   

# estimate neural network
model = mx.mlp(as.matrix(X_train), as.numeric(y_train), hidden_node = 10, out_node = 2, out_activation = "softmax", learning.rate = 0.1, num.round = 20)

但是,与其以迭代方式返回精度值,我得到的唯一输出是

代码语言:javascript
运行
复制
Start training with 1 devices
Warning message:
In mx.model.select.layout.train(X, y) :
Auto detect layout of input matrix, use rowmajor..

因此,迭代过程似乎根本没有开始。

有人知道如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-29 21:49:10

你需要做一些调整:

  1. MxNet实际上并不适用于任意名称的类。在您的例子中,类标签是"2“和"4”。您需要将它们转换为从0开始的数字(参见下面代码中的示例)。
  2. 您需要提供作为mlp度量标准的准确性。文档中有一个错误:它说参数名是"eval_metric",但实际上是"eval.metric“,就像在mx.model.FeedForward.create函数中一样。
  3. 初始数据集有"?“作为一个NA值。Mlp不适用于NA,所以你需要用一些东西来代替它们。我选择了0,但如果需要的话,您可以使用更特定于域的内容。

下面是适用于乳腺癌的代码-wisconsin.data文件,我从您的链接中找到了该文件:

代码语言:javascript
运行
复制
library(mxnet)
BC_data <- read.csv(
  file = "breast-cancer-wisconsin.data", 
  sep = ",", 
  header = FALSE, 
  colClasses = c(rep("numeric", 11)), 
  na.strings = c("", "?") # Few records of the 7th column contain "?" - treat "?" as NA
)

BC_data[is.na(BC_data)] <- 0 # Replace NA with zeroes

# generate a train and test set
trainIndex = sample(1:nrow(BC_data), size = round(0.8*nrow(BC_data)), replace=FALSE)
train_data <- BC_data[trainIndex,]
test_data <- BC_data[-trainIndex,]
X_train <- train_data[,c(-1,-11)]
y_train <- train_data[,11]   

# estimate neural network
model = mx.mlp(
    data = as.matrix(X_train), 
    label = as.numeric(ifelse(y_train == 2, 0, 1)), # Replace classes with 0 and 1
    hidden_node = 10, 
    out_node = 2, 
    out_activation = "softmax", 
    learning.rate = 0.1, 
    num.round = 20,
    array.layout = "rowmajor", # get rid of a nasty warning
    eval.metric=mx.metric.accuracy # set Accuracy as a metric
  )

如果运行此代码,将得到以下输出:

代码语言:javascript
运行
复制
Start training with 1 devices
[1] Train-accuracy=0.64453125
[2] Train-accuracy=0.6515625
[3] Train-accuracy=0.65625
[4] Train-accuracy=0.9
[5] Train-accuracy=0.95625
[6] Train-accuracy=0.95
[7] Train-accuracy=0.94375
[8] Train-accuracy=0.9328125
[9] Train-accuracy=0.93125
[10] Train-accuracy=0.9328125
[11] Train-accuracy=0.9375
[12] Train-accuracy=0.9390625
[13] Train-accuracy=0.9484375
[14] Train-accuracy=0.95
[15] Train-accuracy=0.9453125
[16] Train-accuracy=0.946875
[17] Train-accuracy=0.9484375
[18] Train-accuracy=0.95
[19] Train-accuracy=0.9484375
[20] Train-accuracy=0.9515625
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48490010

复制
相关文章

相似问题

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