具有因子作为r的结果的神经网络

时间:2016-04-06 21:44:23

标签: r neural-network

我正在尝试训练神经网络来预测基于许多汇总统计数据的行为。

这是我的数据结构:

> str(training)
> 'data.frame': 22002 obs. of  27 variables:
$ X        : num  0.376 0.368 0.5 0.402 0.308 0.564 0.368 0.274 0.764 0.464 ...
$ Y        : num  -0.832 -0.848 -0.792 -0.834 -0.948 -0.766 -0.87 -0.924 -0.568 -0.82 ...
$ q        : num  0.913 0.924 0.937 0.926 0.997 ...
$ meanX    : num  0.387 0.379 0.509 0.434 0.281 ...
$ meanY    : num  -0.843 -0.849 -0.792 -0.834 -0.91 ...
$ meanq    : num  0.927 0.93 0.941 0.94 0.953 ...
$ SDX      : num  0.0073 0.0108 0.0128 0.0109 0.0257 ...
$ SDY      : num  0.00639 0.00872 0.00939 0.00891 0.02139 ...
$ SDq      : num  0.00577 0.00854 0.01203 0.01069 0.02582 ...
$ angle    : num  24.3 23.5 32.3 25.7 18 ...
$ staticX  : num  -0.01054 -0.01129 -0.00921 -0.03198 0.0265 ...
$ staticY  : num  0.010583 0.0015 -0.000354 -0.000292 -0.037792 ...
$ ODBA     : num  0.02113 0.01279 0.00956 0.03227 0.06429 ...
$ Vedba    : num  0.01494 0.01139 0.00922 0.03198 0.04616 ...
$ kurtosisX: num  2.222 1.163 0.289 1.358 -0.267 ...
$ kurtosisY: num  -0.321 -0.183 0.52 1.856 0.334 ...
$ kurtosisq: num  -0.222 -0.411 1.32 1.435 0.599 ...
$ skewnessX: num  0.72248 0.76105 0.00852 -0.3768 -0.16768 ...
$ skewnessY: num  -0.0741 0.1468 -0.7097 0.705 0.1693 ...
$ skewnessq: num  0.0911 -0.0813 0.6773 -0.3569 -0.2325 ...
$ minX     : num  0.374 0.356 0.474 0.396 0.224 0.454 0.276 0.232 0.74 0.416 ...
$ minY     : num  0.828 0.83 0.774 0.804 0.854 0.626 0.826 0.874 0.548 0.744 ...
$ minq     : num  0.913 0.91 0.916 0.907 0.884 ...
$ maxX     : num  0.412 0.41 0.546 0.458 0.33 0.638 0.454 0.316 0.8 0.504 ...
$ maxY     : num  0.856 0.868 0.82 0.854 0.958 0.844 0.968 0.934 0.642 0.842 ...
$ maxq     : num  0.939 0.947 0.982 0.969 1.013 ...
$ behaviour: Factor w/ 6 levels "1","2","3","5",..: 1 1 1 1 1 1 2 1 2 1 ...

当我输入时:

library("neuralnet")

    fitann=neuralnet(
formula=behaviour~X+Y+q+meanX+meanY+meanq+SDX+SDY+SDq+angle+staticX+staticY+kurtosisX+kurtosisY+kurtosisq+skewnessX+skewnessY+skewnessq+minX+minY+minq+maxX+maxY+maxq+ODBA+Vedba,
data=training)

我收到以下错误:

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

我是否收到此错误,因为我的结果$行为不是数字?如果是这样,如何用结果的因子值训练神经网络?

谢谢!

1 个答案:

答案 0 :(得分:1)

neuralnet不会直接处理因素。因此,您需要将变量输入为数字。对于需要将分类变量转换为dummy variables的一组的因素。

在您的情况下,您有一个分类变量behaviour。您可以按照以下方式进行转换。

new_train <- model.matrix (~behaviour+X+Y+q+meanX+meanY+meanq+SDX+SDY+SDq+angle+staticX+staticY+kurtosisX+kurtosisY+kurtosisq+skewnessX+skewnessY+skewnessq+minX+minY+minq+maxX+maxY+maxq+ODBA+Vedba,
data=training);

然后使用behaviour1behaviour2等作为培训目标。

注意:您可能不需要所有功能来进行预测。尽管使用所有变量进行初步研究是好的,但我建议使用某种特征选择技术,这可能会提高模型的准确性。