我正在尝试学习在 R 中使用神经网络。作为一个学习问题,我一直在使用 following problem在 Kaggle :
别担心,这个问题是专门为人们设计的,没有任何奖励。
我从一个简单的逻辑回归开始,这对弄湿我的脚非常有用。现在我想学习使用神经网络。我的训练数据如下所示(列:行):
- 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)
某些变量的值太多而无用
(至少在您的第一个模型中):
您可以删除姓名、机票、客舱和乘客 ID。
您可能还想将一些数字变量(例如,类)转换为因子,
如果更有意义。
自
neuralnet
只处理定量变量,您可以转换所有定性变量(因子)
到二进制(“虚拟”)变量,使用
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
)
关于r - 第一次在 R 中使用神经网络 : get "requires numeric/complex matrix/vector arguments",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457028/