我在r中使用神经网络包预测有五个输入变量的河流排放。
'df'是具有六列原始数据的数据帧,前五列作为输入,最后一列作为输出。 使用RSNNS包将数据标准化为0到1
library(RSNNS)
norm_data <- data.frame(normalizeData(df, type = "0_1"))
首先将2557(七年)数据用作训练集
trn_data <- norm_data[1:2557,]
神经网络结构
library(neuralnet)
trn <- neuralnet(discharge~rain+temp+humid+sun+d_disch,trn_data,hidden = 10, threshold = 0.01)
我正在使用Nash-Sutcliffe系数来评估神经网络的训练效率,对于上述结构产生的训练效率非常令人满意0.8414。但是,培训结果(trn$net.result
)包含一些负面输出。总共152个结果被发现小于零,但是非常接近零,并且用零替换这些值对纳什系数没有显着影响(0.8418对0.8414)。
作为参考,这里是负输出的摘要
Min. 1st Qu. Median Mean 3rd Qu.
-0.008131191000 -0.002250917000 -0.001022112000 -0.001596980000 -0.000471144100
Max.
-0.000000928481
我尝试使用各种测试数据测试模型(测试和训练数据都是子集,75%训练和25%测试,使用相同模式标准化的数据集),但模型表现不令人满意(纳什不到40%)。测试输出包含更大的负值。
我的问题是:虽然训练数据在0到1之间,但为什么训练结果为负?这在测试时如何影响模型的性能?而且,这是如何解决的?提前完成。