KOD :
library(AMORE)
library(RODBC)
setwd("d:/")
dane <- odbcConnectExcel("WE.xls")
WE <- sqlQuery(dane, "select * from [Arkusz1$]")
WY <- sqlQuery(dane, "select * from [Arkusz2$]")
VAL_WE <- sqlQuery(dane, "select * from [Arkusz3$]")
VAL_WY <- sqlQuery(dane, "select * from [Arkusz4$]")
WE=as.matrix(WE)
WY=as.vector(WY)
VAL_WE=as.matrix(VAL_WE)
VAL_WY=as.vector(VAL_WY)
net <- newff(n.neurons=c(4,4,3,1), learning.rate.global=1e-2, momentum.global=0.8, error.criterium="LMS", Stao=NA, hidden.layer="purelin",output.layer="purelin", method="ADAPTgdwm")
result <- train(net, WE, WY,VAL_WE,VAL_WY, error.criterium="LMS", report=TRUE, show.step=100, n.shows=20 )
WYSN<-sim(result$net,VAL_WE)
WYSN=round(WYSN,0)
wynik<- data.frame(VAL_WY,WYSN)
r=sum(abs(VAL_WY-WYSN))
Wnioski:
Wygenerowana sieć działa poprawnie i prawie bezbłędnie liczba błędów wacha się między
1 a 2. Zmiana parametrów funkcji newff praktycznie nie zmienia wyników(Co widać na zamieszczonych zrzutach ekranu), jedyny widoczny skutek dało zmiana parametru error.criterium na LMS. Mała liczba błędów wynika ze zmiany warunku na przynależność do pierwszej grupy który w oryginale( (D)>=5 i (T)>=6 i (U)>=7 i (BC)>=4)) powodował znacznie większą ilość pomyłek.
Zamiast tego zastosowałem następujące kryterium (D)>=2 i (T)>=3 i (U)>=3 i (BC)>=2 , które znacząco zwiększyło liczbę Losowanych jedynek.