0

我收到错误消息Error in eval(predvars, data, env) : object 'B' not found,我不知道该怎么做:

nn <- neuralnet(B+M~ area+texture+smoothness, data=cancertrain, hidden=3,

B+M 是两个潜在的值,要么是良性的,要么是恶性的,对判断影响较大的三个属性是面积、纹理和平滑度。我假设我只是错误地完成了函数神经网络中的参数,有人知道吗?这是公共 Google 电子表格中的癌症数据集

library(neuralnet)
library(ISLR) 
library(rpart)
library(rpart.plot)
library(caTools)
library(random)

#setwd("**change to your working directory**")
data <- read.csv("WDBC.csv", header=T)
#head(data)

cancer.dataset <- data
  
#according to previous models and studies, area, texture, and smoothness are the
#attributes with the highest relevance to the diagnosis of benign or malignant
cancer.dataset$b <- cancer.dataset$Diagnosis == "B"
cancer.dataset$m = cancer.dataset$Diagnosis == "M"
cancer.dataset$area <- cancer.dataset$Diagnosis == "area"
cancer.dataset$texture = cancer.dataset$Diagnosis == "texture"
cancer.dataset$smoothness = cancer.dataset$Diagnosis == "smoothness"

cancerdata <- data.frame(cancer.dataset$Diagnosis, cancer.dataset$texture, cancer.dataset$smoothness, cancer.dataset$area)
cancerdata

train <- sample(x = nrow(cancerdata), size = nrow(cancerdata)*0.5)
train

cancertrain <- cancer.dataset[train,]
cancervalid <- cancer.dataset[-train,]
print(nrow(cancertrain))
print(nrow(cancervalid))
nn <- neuralnet(B+M~ area+texture+smoothness, data=cancertrain, hidden=3,  
                rep = 2, err.fct = "ce", linear.output = F, lifesign = "minimal", stepmax = 10000000)

这是教授给出的正确示例使用标准 Iris 数据集的样子,我不确定根据这个示例的完成方式是否正确:

iris.dataset$setosa <- iris.dataset$Species=="setosa"
iris.dataset$virginica = iris.dataset$Species == "virginica"
iris.dataset$versicolor = iris.dataset$Species == "versicolor"
train <- sample(x = nrow(iris.dataset), size = nrow(iris)*0.5)
train
iristrain <- iris.dataset[train,]
irisvalid <- iris.dataset[-train,]
print(nrow(iristrain))
print(nrow(irisvalid))
nn <- neuralnet(setosa+versicolor+virginica ~ Sepal.Length + Sepal.Width, data=iristrain, hidden=3,  
                rep = 2, err.fct = "ce", linear.output = F, lifesign = "minimal", stepmax = 10000000)

plot(nn, rep="best")
4

1 回答 1

2

您可以使用以下代码

library(neuralnet)
library(ISLR) 
library(caTools)
library(random)

#setwd("**change to your working directory**")
data <- read.csv("WDBC.csv", header=T)
head(data)

#Select the important variables
cancerdata <- subset(data, select = c(Diagnosis, texture, smoothness, area))
head(cancerdata) 

train <- sample(x = nrow(cancerdata), size = nrow(cancerdata)*0.5)

cancertrain <- cancerdata[train,]
cancervalid <- cancerdata[-train,]
print(nrow(cancertrain))
print(nrow(cancervalid))

nn <- neuralnet(Diagnosis ~ area+texture+smoothness, data=cancertrain, hidden=3,  
                rep = 2, err.fct = "ce", linear.output = F, lifesign = "minimal", stepmax = 10000000)

plot(nn, rep="best")

在此处输入图像描述

于 2021-11-20T05:53:29.363 回答