2015-06-24 7 views
1

Я запускаю скрипт для оценки нейронной сети в R, используя пакет neuralnet.Ошибка в R с использованием пакета neuralnet

Я использую ОС Linux и сценарий заключается в следующем:

# useful libraries 
library("XLConnect") 
library("neuralnet") 

# data loading; 
DATA = loadWorkbook("/home/quant/Desktop/D.xlsx") # loading sheet; 
DATASET = readWorksheet(NN_DATA, sheet = "D") # reading sheet; 

NN_DATASET # display the directory; 
head(NN_DATASET) # show data; 
warnings() # error detection & data quality; 

#test set detection; 
testset <- NN_DATASET[1:101, ] 

# building the neural networks; 
NNET <- neuralnet(y ~ MKTVALUER + VOLR + DYR + PER + DJR + DAXR + MSCIR + NIKKEIR + CCOR + CPIR + CABCR + EGR + USFFR + USGDPR + GCIR + IGR + IPR + IRR + MCURNR + M2R + NOMANUFACTORINGR + PCER + POPR + PPIR + CBLEIR + DEBTR + UR + C_XAU + C_XAG + BARCLAYSAGG + C_USDJPY + C_EURUSD, NN_DATASET, hidden = 2, lifesign = "minimal", linear.output = FALSE, threshold = 0.1) 

Все идет прямо до последней строки, в которой R дает ошибки выход следующим образом:

Error in x - y : non-conformable arrays 

структура dataframe, полученные с помощью str(NN_DATASET) является следующее:

'data.frame': 201 obs. of 34 variables: 
$ DATA   : chr "Q4 1964" "Q1 1965" "Q2 1965" "Q3 1965" ... 
$ SP500_R   : num NA 0.0184 -0.0215 0.0622 0.025 ... 
$ MKTVALUER  : num NA 0.0257 -0.0206 0.0694 0.0215 ... 
$ VOLR   : num NA 0.007336 0.000982 0.007239 -0.003561 ... 
$ DYR    : num NA NA 0.0294 -0.0528 0.0366 ... 
$ PER    : num NA NA NA NA NA NA NA NA NA NA ... 
$ DJR    : num NA NA NA NA NA NA NA NA NA NA ... 
$ DAXR   : num NA NA NA NA NA NA NA NA NA NA ... 
$ MSCIR   : num NA NA NA NA NA NA NA NA NA NA ... 
$ NIKKEIR   : num NA NA NA NA NA NA NA NA NA NA ... 
$ CCOR   : num NA 0.0338 0.0322 0.0247 0.0192 ... 
$ CPIR   : num NA 0 0.4654 0 0.0565 ... 
$ CABCR   : num NA -0.2793 0.2268 -0.1893 -0.... 
$ EGR    : num NA -0.0895 0.1666 -0.0579 0.0681 ... 
$ USFFR   : num NA 0.1034 0.02733 -0.00245 0.02427 ... 
$ USGDPR   : num NA 0.0293 0.0182 0.024 0.0301 ... 
$ GCIR   : num NA 0.00572 0.01759 0.04266 0.0346 ... 
$ IGR    : num NA -0.02768 0.10641 0.00942 0.05768 ... 
$ IPR    : num NA 0.0371 0.0229 0.0207 0.02 ... 
$ IRR    : num NA 0.00218 0.06536 -0.06318 0.111 ... 
$ MCURNR   : num NA -0.00201 0.00977 0.01819 0.02592 ... 
$ M2R    : num NA 0.0166 0.0115 0.0156 0.0186 ... 
$ NOMANUFACTORINGR: num NA NA NA NA NA NA NA NA NA NA ... 
$ PCER   : num NA 0.0252 0.0159 0.0208 0.0309 ... 
$ POPR   : num NA 0.00255 0.00294 0.00352 0.00296 ... 
$ PPIR   : num NA 0.00297 0.0118 0.00293 0.00873 ... 
$ CBLEIR   : num NA 0.0224 0.0172 0.0135 0.0272 ... 
$ DEBTR   : num NA -0.000955 -0.000637 -0.002553 0.013329 ... 
$ UR    : num NA -0.0202 -0.0417 -0.066 -0.0706 ... 
$ C_XAU   : num NA 0.00057 0 0 0 ... 
$ C_XAG   : num NA 0 0 0 0 0 0 0 0 0 ... 
$ BARCLAYSAGG  : num NA NA NA NA NA NA NA NA NA NA ... 
$ C_USDJPY  : num NA NA NA NA NA NA NA NA NA NA ... 
$ C_EURUSD  : num NA NA NA NA NA NA NA NA NA NA ... 

Просмотр в Интернете Я нашел много ответов здесь, в stackoverflow.com, но в каждом случае решение отличается, поэтому O отправил новый вопрос. Пожалуйста, не отмечайте его как дубликат, потому что это не так.

Сценарий основан на найденном на R-Bloggers

Любой помощь, подсказка или совет, будет оценен.

+0

Было бы лучше, если бы вы могли сделать воспроизводимый пример (не только для того, чтобы мы могли запускать код, но это заставило вас задуматься о структурах данных, которые вы используете) или, по крайней мере, показать структуру объектов, re using (используйте функцию 'str()'). –

+0

Спасибо за комментарий, я отредактировал сообщение @ RomanLuštrik. Может ли проблема возникнуть из-за того, что есть много недостающих, как это было предложено в других ответах? – Quantopik

ответ

1

Я не вижу столбец y, который вы имеете в виду в своей формуле, в вашем наборе данных. Ваша целевая переменная должна существовать в вашем наборе данных. Должно ли это быть SP500_R?

Во-вторых, neuralnet не будет работать с NAs в данных, сначала фильтруйте свои данные с помощью na.omit().

Также позвольте мне дать примечание: если я правильно понял ваши данные, вы не получите ничего от такого анализа.

+0

Да, вы правы, но я сообщил y вместо SP500R для простоты. В любом случае, код не работает в любом случае! Я удалю все НС, и я обновлю результаты. Спасибо за комментарий @ cyberj0g! – Quantopik

+0

Да, отсутствующие значения являются причиной, по которой * neuralnet * дает ошибку в качестве вывода. Я не понимал, почему. Могли бы вы объяснить это? – Quantopik

+0

Короткий ответ: потому что обработка NA не поддерживается в этой конкретной реализации ANN. Однако примите тот факт, что большинство реализаций алгоритмов машинного обучения не могут это сделать, и вы должны каким-то образом обрабатывать NA во время этапа предварительной обработки данных. – cyberj0g

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