Прогнозирование с использованием нейронной сети MLP - PullRequest
0 голосов
/ 27 октября 2019

Я пытаюсь написать код в R, чтобы предсказать курс валюты USD / EUR с помощью нейронной сети MLP. У меня возникла проблема с функцией нейронной сети, которая выдает ошибку:

Ошибка в нейронах [[i]]% *% весов [[i]]:
требуется числовая / сложная матрица / векторные аргументы

Это код, который я написал до сих пор

library(readxl)
ExchangeUSD <- read_excel("C:/Users/GTS/Desktop/ML project/ExchangeUSD.xlsx")
plot(ExchangeUSD$USD)

#traning and test data 
trainset <- ExchangeUSD[1:350,]
testset <- ExchangeUSD[351:500,]

set.seed(12345)
library(neuralnet)
nn <- neuralnet(USD ~ date + Wdy, data = trainset,hidden = 2)

набор данных содержит 500 строк и 3 столбца, первый столбец - дата и содержит дату с октября 2011 года по октябрь 2013 года (500 данных). второй столбец - Wdy, он содержит слабые дни, последний столбец - доллар США и курс валюты. Это образец моего набора данных:

part of the data-set

1 Ответ

0 голосов
/ 27 октября 2019

В приведенном выше примере вы пытаетесь использовать дату для обучения модели, что неверно, поскольку neuralnet может понимать только factors и numerics для обучения. Если вы хотите включить некоторые факторы временных рядов в свою модель, используйте time-series analysis, предоставленный R.

Более того, вы пытаетесь обучить neural-net, используя только один или два предиктора, таким образом, он будет плохо соответствовать иваш анализ будет предвзятым.

И ваша проблема состоит только из трех столбцов, а именно;date, wdy (что фактически является днем ​​недели) и USD (цена). В этом сценарии нет смысла использовать нейронные сети, поскольку у вас нет функций для обучения модели. Ваши данные в основном временные ряды, поэтому используйте регрессию и другие линейные алгоритмы. (также можно перейти к timeseries, как упоминалось ранее)

Несмотря на то, что я поделился о том, как обучить хорошую модель mlp ниже.

Ниже приведен простой пример использования многослойного-перцептрон в R с использованием пакета RSNNS. Я использовал базовый набор данных iris.

Ниже приведен код:

library(RSNNS)
data(iris)


iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]

irisValues <- iris[,1:4]
irisTargets <- decodeClassLabels(iris[,5])


iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)
iris <- normTrainingAndTestSet(iris)

model <- mlp(iris$inputsTrain, iris$targetsTrain, size=5, learnFuncParams=c(0.1), 
             maxit=50, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)

summary(model)
#model
#weightMatrix(model)
#extractNetInfo(model)

par(mfrow=c(2,2))
#plotIterativeError(model)

#predictions <- predict(model,iris$inputsTest)
#plotRegressionError(predictions[,2], iris$targetsTest[,2])

confusionMatrix(iris$targetsTrain,fitted.values(model))
confusionMatrix(iris$targetsTest,predictions)

Вывод:

SNNS network definition file V1.4-3D
generated at Sun Oct 27 23:15:12 2019

network name : RSNNS_untitled
source files :
no. of units : 12
no. of connections : 35
no. of unit types : 0
no. of site types : 0


learning function : Std_Backpropagation
update function   : Topological_Order


unit default section :

act      | bias     | st | subnet | layer | act func     | out func
---------|----------|----|--------|-------|--------------|-------------
 0.00000 |  0.00000 | i  |      0 |     1 | Act_Logistic | Out_Identity 
---------|----------|----|--------|-------|--------------|-------------


unit definition section :

no. | typeName | unitName          | act      | bias     | st | position | act func     | out func | sites
----|----------|-------------------|----------|----------|----|----------|--------------|----------|-------
  1 |          | Input_1           | -0.04652 |  0.21414 | i  | 1,0,0    | Act_Identity |          | 
  2 |          | Input_2           | -1.03059 | -0.09038 | i  | 2,0,0    | Act_Identity |          | 
  3 |          | Input_3           |  0.11214 | -0.19132 | i  | 3,0,0    | Act_Identity |          | 
  4 |          | Input_4           | -0.02205 |  0.28695 | i  | 4,0,0    | Act_Identity |          | 
  5 |          | Hidden_2_1        |  0.36322 |  0.16864 | h  | 1,2,0    |||
  6 |          | Hidden_2_2        |  0.04875 | -1.57745 | h  | 2,2,0    |||
  7 |          | Hidden_2_3        |  0.19143 | -1.59699 | h  | 3,2,0    |||
  8 |          | Hidden_2_4        |  0.94317 |  1.33032 | h  | 4,2,0    |||
  9 |          | Hidden_2_5        |  0.87133 |  2.55066 | h  | 5,2,0    |||
 10 |          | Output_setosa     |  0.04954 | -1.01308 | o  | 1,4,0    |||
 11 |          | Output_versicolor |  0.86560 | -1.31827 | o  | 2,4,0    |||
 12 |          | Output_virginica  |  0.06732 | -0.42084 | o  | 3,4,0    |||
----|----------|-------------------|----------|----------|----|----------|--------------|----------|-------


connection definition section :

target | site | source:weight
-------|------|---------------------------------------------------------------------------------------------------------------------
     5 |      |  4:-1.36576,  3:-1.01049,  2: 0.62411,  1: 0.07838
     6 |      |  4:-1.49537,  3:-1.41137,  2: 1.26386,  1:-0.73716
     7 |      |  4: 1.87337,  3: 1.25094,  2:-0.05512,  1:-0.00999
     8 |      |  4: 1.25223,  3: 1.55905,  2:-1.32439,  1: 0.71672
     9 |      |  4:-2.56181,  3:-1.92910,  2: 0.45272,  1: 0.24772
    10 |      |  9: 0.68890,  8:-3.19830,  7:-0.96376,  6: 1.87789,  5: 1.56411
    11 |      |  9: 2.69797,  8: 1.74343,  7:-2.49599,  6:-2.91350,  5:-0.53523
    12 |      |  9:-3.50718,  8: 1.59391,  7: 1.75725,  6:-1.66021,  5:-2.50714
-------|------|---------------------------------------------------------------------------------------------------------------------
       predictions
targets  1  2  3
      1 40  0  0
      2  0 43  3
      3  0  1 40
       predictions
targets  1  2  3
      1 10  0  0
      2  0  4  0
      3  0  0  9

MajorПроблема с пакетом neuralnet заключается в том, что он создает только простые и очень простые нейронные сети с минимальными настройками. Вышеупомянутый пакет RSNNS предоставляет некоторые дополнительные функции по сравнению с neuralnet.

Но если вы хотите попробовать более глубокие сети, я бы предложил вам использовать расширения mxnet и kerasдля Р.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...