Estoy en el proceso de intentar aprender a trabajar con redes neuronales en R. Como un problema de aprendizaje, he estado usando el siguiente problema más en Kaggle:

No te preocupes, este problema está diseñado específicamente para las personas a aprender, no hay recompensa atado a ella.

Empecé con una simple regresión logística, que era genial para conseguir mis pies mojados. Ahora me gustaría aprender a trabajar con redes neuronales. Mis datos de entrenamiento se parece a esto (Columna:Fila):

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

Mi partida código R se parece a esto:

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

Cuando ejecuto esta línea de código me sale el siguiente error:

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

Entiendo que el problema está en la manera en que yo estoy presentando mi las variables de entrada, pero soy demasiado novato para entender lo que debo hacer para corregir esto. Alguien puede ayudar?

Gracias!

  • Mirando los datos en primer lugar, creo que ustedes se han de convertir todos los datos a valores numéricos. E. g cabina=c85, ¿qué significa eso? Si u convertir este tipo de valores numéricos, su problema será resuelto.
InformationsquelleAutor user2548029 | 2013-07-03

2 Comentarios

  1. 41

    Antes ciegamente dando los datos a la computadora,
    es una buena idea mirar en él:

    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)

    Algunas de las variables a tener demasiados valores para ser útil
    (al menos en su primer modelo):
    se puede quitar el nombre de, venta de entradas, cabina y passengerId.
    Usted también puede querer transformar algunas de las variables numéricas (por ejemplo, de la clase), a los factores,
    si es más significativo.

    Desde neuralnet sólo se ocupa de las variables cuantitativas,
    usted puede convertir todas las variables cualitativas (factores)
    a binario («dummy») de las variables, con el model.matrix función —
    es uno de los muy raros casos en los
    en la que R no realizar la transformación de.

    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
    )
    • Gracias! Este es exactamente el tipo de respuesta que yo esperaba. Gracias por tomarse el tiempo para responder en detalle.
    • Gracias por esto! Tengo una pregunta @VincentZoonekynd, hay una regla definida para qué variables son aplicables a la model.matrix de conversión?
    • todas las variables cualitativas, es decir, aquellos de tipo factor (o character), se transforma para las variables ficticias. Pero dado que las variables numéricas se mantienen, no transformadas, que en realidad pueden poner todas las variables.
    • Gracias! Una última pregunta, ¿cuál es el límite de número de valores de los factores de qué recomienda usted que puede ser aceptado en uso en la neuralnet después de model.matrix? Tengo miedo a perder a algunos de mis factor de variables con valores que van desde los dos a los 200.
    • Usted probablemente debería pedir en la cruz-validado.
  2. 7

    Mensaje de Error «requiere numérico/complejo/matriz vector de argumentos» se producen cuando se tiene el factor o el carácter de las variables en los datos.

    Hay tres maneras de resolver este problema:

    1. Eliminar la variable
    2. Si la variable es una ordenó factor, el uso de enteros en su lugar.
    3. Si la variable es de carácter,la transforman en factor y, a continuación, en la variable ficticia.

    Puede utilizar el modelo.de la matriz (a) arriba mencionados, o de la clase.ind() la función de nnet paquete de transfer factor en la variable ficticia.

    • Es para mi sorpresa ya SPSS necesidades que poner Factor de las variables por separado en la casilla correspondiente.

Dejar respuesta

Please enter your comment!
Please enter your name here