Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- library(AMORE)
- #Dane które będą uczyć naszą sieć
- owoc=read.csv(file.choose())
- owoc <- na.omit(owoc) # Usuwam puste kolumny
- for(i in 1:34) owoc[,i]<-as.numeric(owoc[,i])
- set.seed(112)
- ile=nrow(owoc)
- idxTren<-sample(1:ile,2*ile/3) #podłoga z 2/3 losowych indeksów do trenowania sieci
- idxTest<-setdiff(1:ile,idxTren) #pozostałe 1/3 indeksów
- #definiujemy funkcję zmieniającą zmienną zawierającą nazwę etykiety
- #na liczbę zmiennych binarnych, ile jest wartości etykiet
- target<-function(x)
- {
- n<-length(x)
- wartosci<-levels(x)
- l<-length(wartosci)
- T<-matrix(0,nrow=n,ncol=l)
- for(i in 1:l)
- T[,i]<-(x==wartosci[i])
- colnames(T)<-wartosci
- return(T)
- }
- #zastosowanie powyższej funkcji dla danych określających etykiety
- wZadane<-target(owoc$Class)
- wZadane
- set.seed(24)
- #tworzymy strukturę sieci
- siec<-newff(n.neurons=c(4,8,3),
- learning.rate.global=0.01,
- momentum.global=0.5,
- hidden.layer="sigmoid",
- output.layer="purelin",
- method="ADAPTgdwm",
- error.criterium="LMS")
- #trenujemy sieć
- #owoc <- owoc[,]
- wynik<-train(siec,
- owoc[idxTren,1:34],
- matrix(as.numeric(wZadane[idxTren])),
- error.criterium="LMS",
- report=TRUE,
- show.step=5,
- n.shows=1000)
- plot(wynik$Merror,type="l",xlab="Ileracja (x10)",
- ylab="Błąd", col="darkred")
- #stosuję wytrenowaną sieć do danych testowych
- y<-sim(wynik$net,owoc[idxTest, -5])
- y
- #definiuję funkcję oceny klasyfikacji (zamieniam liczby na etykietę)
- testKlasyfikacji<-function(zad,wy)
- {
- zadane<-max.col(zad)
- rozpoznane<-max.col(wy)
- print(table(zadane,rozpoznane))
- }
- wynik<-testKlasyfikacji(wZadane[idxTest,],y)
- #określamy dokładność klasyfikacji
- cat("Dokładność klasyfikacji:",
- sum(diag(wynik))/sum(wynik)*100, "%\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement