Я использую neuralnet
в R, чтобы предсказать 3 класса на основе 17 входов. У меня 3 класса: 1, 0 и 2. У меня есть 2 файла: обучение и тестирование. Обучение имеет 64 случая из 17 входов и 18 столбцов.классификация в r neuralnet
x1 x2 x3 etc... x17 y
-0.002307 0.034095 -0.002733 0 1
0.004461 -0.041385 0.137767 -0.294394 0
-0.25254 -0.094523 0 0.074733 0
-0.25254 -0.094523 0 0.074733 2
и больше. Всего 64 ряда для обучения.
Набор тестов точно такой же, как и данные обучения (16 строк), только с разными значениями. код я использую
library(neuralnet)
nn <- neuralnet(y ~ x1+x2+x3
+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16+x17,
data=train,lifesign="full", hidden=15, err.fct="ce",
linear.output=FALSE)
an1 <- compute(nn, Test[1:17])
Я могу сделать прогноз для яя подготовки
prediction (nn)
Что дает мне классы прогнозирования столбцов Y для обучения конкретных множеств, но я не могу сделать то же самое с
prediction (an1): error message
Error in matrix(covariate[not.duplicated, ], nrow = nrow.notdupl) :
'data' must be of a vector type
Я не совсем уверен, что мне нужно предсказать, или вычислить должно быть достаточно. Но результаты для расчета я получаю:
$net.result
[,1]
[1,] 0.7503498233120
[2,] 0.9982475522024
....
[14,] 0.0007727434740
[15,] 0.9999287879015
Который я не знаю, как его интерпретировать. Мне нужно что-то вроде
2 1 0
[1,] 0.964182671 0.022183652 0.013633677
[2,] 0.952685528 0.032202528 0.015111944
[3,] 0.966094194 0.021206723 0.012699083..
с распределением вероятностей для каждого класса.
Я пытался использовать ifelse
At2 <-(ifelse(Train$y==2,"2", ifelse(Train$y==1, "1","0")))
, но до сих пор получить тот же 1 колонка для net.result
.
Любой может помочь указать, какую строку мне не хватает, чтобы получить то, что я хочу? Также я думаю, ifelse
не делает то, что я хочу - предскажите класс Y на основе 17 входов. Это так?
Интересно, что после сканирования документации я не вижу способа рассчитать предсказанные значения для набора тестов в этом пакете вообще. Может быть, попробовать другую реализацию нейронной сети? – joran
Как насчет * вычислить * и * прогноз *? Просто дайте набор данных предсказателей и должен работать ... – Fernando
@ Joran.I был раньше, и теперь я смотрю на пакет nnet и пробую его. Там есть функция прогнозирования. Но до сих пор я не мог получить от этого то, что хочу. – mil