我是使用R的新手,但是我越喜欢使用R,我就越喜欢它 . 但是,我尝试将R用于人工神经网络 .

我的输入数据是带有测量土壤属性的csv-Table . 磷,pH,粘土含量,淤泥含量等 .

目标是通过使用测量的pH,粘土含量,淤泥含量等来训练具有 neuralnet 的神经网络并预测磷(P) .

实际上我的下面的脚本用于训练网络,但我不知道,如果脚本真的通过用解释变量计算测试数据集来预测P.

代码如下 .

library(neuralnet)

getwd("F:/Dropbox/Agrar/Fernerkundung_Agrar/ANN_Test/") 
setwd("F:/Dropbox/Agrar/Fernerkundung_Agrar/ANN_Test/")
library(gdata)


# This is a script to train a neural net and test it afterward.
# Objectives are to extimate Phosphorus-Contents in Soil from other variables
# Again. Targetparameter is P (Phosphorus) which has to be estimated from pH, ECa (Soil apparent electrical conductivity) (and later other input variables)

# Traininginput is a CSV-File with measured varaiables P, pH, ECa [here called EC2509 because it was measured in September 25th]
traininginput = read.csv("in.csv", header = TRUE, sep = ";", dec = ".")


#Train the neural network
#Going to have 3 hidden layers -> thumb rule input + output variables
#Threshold is a numeric value specifying the threshold for the partial derivatives of the error function as stopping criteria.
# All later considerd parameters are P~ + PH + clay_A + silt_A + sand_A + LS + A_ABAG + TWI + EC2509
# First let's try P and two variables 
net.Phos <- neuralnet(P~PH,traininginput, hidden=3, threshold=0.01, rep = 100) # stepmax = 1000000 will be included later


print(net.Phos)
write.table(net.Phos,"ann_setup.txt", header = TRUE, sep = " ", dec = ".")

#Plot the neural network
png(filename="ANN.png")
pdf(filename="ANN.pdf")
plot(net.Phos)
dev.off()

#Test the neural network: Testdata contains measured variables P, pH, ECa and others. Exactly the same setup than input
testdata = read.csv("testann.csv", header = TRUE, sep = ";", dec = ".")
head(testdata)
net.test <- compute(net.Phos, testdata$PH) #Run them through the neural network

#Lets see what properties net.sqrt has
ls(net.Phos)
write.table(net.Phos,"ann_properties.txt", header = TRUE, sep = ",", dec = ".")

#Lets see the test results
print(net.test$neurons[[1]])
print(net.test$net.test)


#Lets display a better version of the results
cleanoutput <- cbind(testdata$PH,testdata$P,
    as.data.frame(net.results$net.result[,1]))
colnames(cleanoutput) <- c("PH","Expected P","Neural Net P")
print(cleanoutput)
write.csv(Cleanout,"ann_setup.csv", header = TRUE, sep = " ", dec = ".")