2015-11-01 9 views
0
library(nnet) 
set.seed(9850) 
train1<- sample(1:155,110) 
test1 <- setdiff(1:110,train1) 
ideal <- class.ind(hepatitis$class) 
hepatitisANN = nnet(hepatitis[train1,-20], ideal[train1,], size=10, softmax=TRUE) 
j <- predict(hepatitisANN, hepatitis[test1,-20], type="class") 
hepatitis[test1,]$class 
table(predict(hepatitisANN, hepatitis[test1,-20], type="class"),hepatitis[test1,]$class) 
confusionMatrix(hepatitis[test1,]$class, j) 

Ошибка:Ошибка работы нейронной сети

Error in nnet.default(hepatitis[train1, -20], ideal[train1, ], size = 10, : 
    NA/NaN/Inf in foreign function call (arg 2) 
In addition: Warning message: 
In nnet.default(hepatitis[train1, -20], ideal[train1, ], size = 10, : 
    NAs introduced by coercion 

hepatitis variable consists of the hepatitis dataset available on UCI. 

ответ

0

Это сообщение об ошибке, потому что у вас есть символьные значения в ваших данных.

Попробуйте прочитать набор данных по гепатиту с помощью na.strings = "?". Это определено в описании набора данных на странице uci.

headers <- c("Class","AGE","SEX","STEROID","ANTIVIRALS","FATIGUE","MALAISE","ANOREXIA","LIVER BIG","LIVER FIRM","SPLEEN PALPABLE","SPIDERS","ASCITES","VARICES","BILIRUBIN","ALK PHOSPHATE","SGOT","ALBUMIN","PROTIME","HISTOLOGY") 
hepatitis <- read.csv("https://archive.ics.uci.edu/ml/machine-learning-databases/hepatitis/hepatitis.data", header = FALSE, na.strings = "?") 
names(hepatitis) <- headers 

library(nnet) 
set.seed(9850) 
train1<- sample(1:155,110) 
test1 <- setdiff(1:110,train1) 

ideal <- class.ind(hepatitis$Class) 

# will give error due to missing values 
# 1st column of hepatitis dataset is the class variable 
hepatitisANN <- nnet(hepatitis[train1,-1], ideal[train1,], size=10, softmax=TRUE) 

Этот код не дает вашей ошибки, но при этом будет допущена ошибка в отношении отсутствующих значений. Вам нужно будет обратиться к ним, прежде чем продолжить. быть также известно, что переменная класса является первой переменной в наборе данных прямо из хранилища данных UCI

Редактировать на основе комментариев:

na.action работает только если вы используете формулу обозначения Nnet , Так что в вашем случае:

hepatitisANN <- nnet(class.ind(Class)~., hepatitis[train1,], size=10, softmax=TRUE, na.action = na.omit) 
+0

Я слегка измененный набор данных и класс мой двадцатый атрибут, также включены na.action = «na.omit» в функции Nnet, но все та же ошибка появляется. – amankedia

+0

Проверьте структуру вашего набора данных. Но в исходном наборе данных недостающие значения являются вопросительным знаком. Если вы не учтете это, ваши значения будут символом. Проверьте str (гепатит), чтобы увидеть, есть ли у вас столбец символов где-нибудь. Потому что это то, на что указывает эта ошибка. – phiver

+0

нет колонки символов есть, но можете ли вы, пожалуйста, помочь мне в отношении того, как я позабочусь об этих вопросительных знаках в наборе данных? – amankedia

Смежные вопросы