Работа с neuralnet в R в первый раз: get “требует числовых / сложных матричных / векторных аргументов”

Я пытаюсь научиться работать с нейронными сетями в Р. Как проблема обучения, я использовал следующую проблему в Kaggle :

Не беспокойтесь, эта проблема специально предназначена для людей, с которыми можно учиться, нет никакой наgradleы, связанной с ней.

Я начал с простой логистической регрессии, и это было здорово для моих ног. Теперь я хотел бы научиться работать с нейронными сетями. Мои данные обучения выглядят следующим образом (Column: Row):

- survived: 1 - pclass: 3 - sex: male - age: 22.0 - sibsp: 1 - parch: 0 - ticket: PC 17601 - fare: 7.25 - cabin: C85 - embarked: S 

Мой стартовый код R выглядит так:

 > net <- neuralnet(survived ~ pclass + sex + age + sibsp + parch + ticket + fare + cabin + embarked, train, hidden=10, threshold=0.01) 

Когда я запускаю эту строку кода, я получаю следующую ошибку:

 Error in neurons[[i]] %*% weights[[i]] : requires numeric/complex matrix/vector arguments 

Я понимаю, что проблема в том, как я представляю свои входные переменные, но я слишком много начинаю, чтобы понять, что мне нужно сделать, чтобы исправить это. Может ли кто-нибудь помочь?

Благодаря!

    Прежде чем вслепую предоставить данные компьютеру, неплохо посмотреть на это:

     d <- read.csv("train.csv") str(d) # 'data.frame': 891 obs. of 12 variables: # $ PassengerId: int 1 2 3 4 5 6 7 8 9 10 ... # $ Survived : int 0 1 1 1 0 0 0 0 1 1 ... # $ Pclass : int 3 1 3 1 3 3 1 3 3 2 ... # $ Name : Factor w/ 891 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ... # $ Sex : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ... # $ Age : num 22 38 26 35 35 NA 54 2 27 14 ... # $ SibSp : int 1 1 0 1 0 0 0 3 0 1 ... # $ Parch : int 0 0 0 0 0 0 0 1 2 0 ... # $ Ticket : Factor w/ 681 levels "110152","110413",..: 524 597 670 50 473 276 86 396 345 133 ... # $ Fare : num 7.25 71.28 7.92 53.1 8.05 ... # $ Cabin : Factor w/ 148 levels "","A10","A14",..: 1 83 1 57 1 1 131 1 1 1 ... # $ Embarked : Factor w/ 4 levels "","C","Q","S": 4 2 4 4 4 3 4 4 4 2 ... summary(d) 

    Некоторые из переменных имеют слишком много значений, которые могут быть полезны (по крайней мере, в вашей первой модели): вы можете удалить имя, билет, кабину и пассажир. Вы также можете преобразовать некоторые числовые переменные (скажем, class) в факторы, если они более значимы.

    Поскольку neuralnet только количественные переменные, вы можете преобразовать все качественные переменные (факторы) в двоичные («фиктивные») переменные с model.matrix функции model.matrix - это одна из очень редких ситуаций, когда R не выполняет трансформация для вас.

     m <- model.matrix( ~ Survived + Pclass + Sex + Age + SibSp + Parch + Fare + Embarked, data = d ) head(m) library(neuralnet) r <- neuralnet( Survived ~ Pclass + Sexmale + Age + SibSp + Parch + Fare + EmbarkedC + EmbarkedQ + EmbarkedS, data=m, hidden=10, threshold=0.01 ) 

    Сообщение об ошибке «требует числовых / сложных матричных / векторных аргументов», когда у вас есть переменные фактора или символа в ваших данных.

    Существует три способа решения этой проблемы:

    1. Удалить переменную
    2. Если переменная является упорядоченным фактором, используйте вместо нее целое число.
    3. Если переменная является символом, преобразуйте ее в коэффициент, а затем в фиктивную переменную.

    Вы можете использовать упомянутую выше модель.matrix () или функцию class.ind () из пакета nnet для передачи фактора в фиктивную переменную.

    Давайте будем гением компьютера.