所以这是我的问题。
我在R中使用一个脚本来创建一个神经网络来生成一个文件的缺失值,这个文件如下:
Flag | Date | Time | Value
V | 20100901 | 00:00 | 23180
V | 20100901 | 00:15 | 23280
V | 20100901 | 00:30 |
V | 20100901 | 00:45 |
V | 20100901 | 01:00 !
V | 20100901 | 01:15 | 23050
(etc...)
我的 java 程序正在读取和存储这些数据,文件的前一部分只是在我正在使用的值的指示器上。
因此,我用 Java 创建了 RApp,并在读取文件后开始处理它。我的训练输入如下。(注意:举例来说,我使用了少量数据,即 9 行,但我的文件中通常有 35000 行左右。我还生成了一些标签,其中读取的值分别为年、月、星期几、一个月中的某天,依此类推,这就是为什么您在上面的文件示例中看到的值不存在的原因。)。
训练输入(使用完整数据的 50%)
[VECTOR ([INT* (2, 2, 2, 2)], [INT* (2010, 2010, 2010, 2010)], [INT* (9, 9, 9, 9)], [INT* (39, 39, 39, 39)], [INT* (3, 3, 3, 3)], [INT* (39, 39, 39, 39)], [INT* (0, 900, 4500, 5400)])]
使用以下代码创建:
re.assign("season_flag", p_file.getSeasonArray(ANNEnum.TRAINING));
re.assign("year_flag", p_file.getYearArray(ANNEnum.TRAINING));
re.assign("month_flag", p_file.getMonthArray(ANNEnum.TRAINING));
re.assign("week_flag", p_file.getWeekArray(ANNEnum.TRAINING));
re.assign("day_of_week_flag", p_file.getDayOfWeekArray(ANNEnum.TRAINING));
re.assign("weekend_flag", p_file.getWeekendArray(ANNEnum.TRAINING));
re.assign("datetime", p_file.getTimeArray(ANNEnum.TRAINING));
re.eval("trainingInput <- data.frame(season_flag,year_flag,month_flag,week_flag,day_of_week_flag,weekend_flag,datetime)");
训练输出
[INT* (23180, 23280, 23050, 23110)]
用代码创建
re.assign("trainingOutput", p_file.getValueArray(ANNEnum.TRAINING));
然后我的
测试数据
[VECTOR ([INT* (2, 2)], [INT* (2010, 2010)], [INT* (9, 9)], [INT* (39, 39)], [INT* (3, 3)], [INT* (0, 0)], [INT* (10800, 11700)])]
测试数据的创建方式与训练输入相同。
然后我调用 R 脚本:
re.eval("network <- runANN(trainingInput, inputColNames, trainingOutput, outputColNames, testData, " + layercount + ", " + threshold + ")");
所有的值都是预先定义好的。
R脚本如下
runANN <- function(trainingInput, inputColNames, trainingOutput, outputColNames, testData, hiddenLayers, threshold){
library("neuralnet")
#Column bind the data into one variable
trainingdata <- cbind(trainingInput,trainingOutput)
colnames(trainingdata) <- c(outputColNames,inputColNames)
trainingdata <- as.data.frame(trainingdata)
#construct formula
formula <- as.formula(paste(paste(outputColNames, collapse= "+"), paste("~", paste(inputColNames, collapse= "+"))))
#Train the neural network
net.sqrt <- neuralnet(formula,trainingdata, hidden=hiddenLayers, threshold=threshold)
colnames(testData) <- c(inputColNames)
testData <- as.data.frame(testData)
#Test the neural network on some training data
net.results <- compute(net.sqrt, testData) #Run them through the neural network
#Lets see the results
#print(net.results$net.result)
return(print(net.results$net.result))
}
我的问题来了,这会给我的结果是:
[,1]
[1,] 2.00002384
[2,] 2.00002384
[REAL* (2.000023839778315, 2.000023839778315)]
当我期望值在 23000 左右时。显然我在此过程中做错了什么。但是我无法弄清楚,我感谢有人可能提供的任何帮助。
感谢您的时间。