r regression prediction kaggle

Trabajar con neuralnet en R por primera vez: obtener "requiere argumentos numéricos/complejos de matriz/vector"



regression prediction (2)

Antes de entregar ciegamente los datos a la computadora, es una buena idea mirarlos:

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 tienen demasiados valores para ser útiles (al menos en su primer modelo): puede eliminar el nombre, el boleto, la cabina y el ID de pasajero. También puede querer transformar algunas de las variables numéricas (por ejemplo, clase), en factores, si es más significativo.

Dado que la neuralnet solo se ocupa de las variables cuantitativas, puede convertir todas las variables cualitativas (factores) en variables binarias ("ficticias") con la función model.matrix : es una de las situaciones muy raras en las que R no realiza la Transformación para ti.

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 )

Estoy tratando de aprender a trabajar con redes neuronales en R. Como problema de aprendizaje, he estado utilizando el siguiente problema en Kaggle :

No se preocupe, este problema está diseñado específicamente para que las personas aprendan, no hay una recompensa relacionada con él.

Comencé con una regresión logística simple, que fue genial para mojarme los pies. Ahora me gustaría aprender a trabajar con redes neuronales. Mis datos de entrenamiento se parecen 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 código R inicial es así:

> 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 obtengo el siguiente error:

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

Entiendo que el problema está en la forma en que estoy presentando mis variables de entrada, pero soy demasiado novato para entender qué debo hacer para corregir esto. ¿Alguien puede ayudar?

¡Gracias!


El mensaje de error "requiere argumentos numéricos / complejos de matriz / vector" aparece cuando tiene variables de factor o carácter en sus datos.

Hay tres formas de resolver este problema:

  1. Eliminar la variable
  2. Si la variable es un factor ordenado, use un entero en su lugar.
  3. Si la variable es un carácter, transformarlo en factor y luego en variable ficticia.

Puede usar la función model.matrix () mencionada anteriormente o class.ind () del paquete nnet para transferir el factor a una variable ficticia.