Advertisement
wicus3x

Zadanie1

Apr 27th, 2022
908
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #
  2. library(AMORE)
  3.  
  4. #Dane które będą uczyć naszą sieć
  5. owoc=read.csv(file.choose())
  6. owoc <- na.omit(owoc) # Usuwam puste kolumny
  7. for(i in 1:34) owoc[,i]<-as.numeric(owoc[,i])
  8.  
  9. set.seed(112)
  10. ile=nrow(owoc)
  11. idxTren<-sample(1:ile,2*ile/3)  #podłoga z 2/3 losowych indeksów do trenowania sieci
  12. idxTest<-setdiff(1:ile,idxTren) #pozostałe 1/3 indeksów
  13.  
  14. #definiujemy funkcję zmieniającą zmienną zawierającą nazwę etykiety
  15. #na liczbę zmiennych binarnych, ile jest wartości etykiet
  16. target<-function(x)
  17. {
  18.   n<-length(x)
  19.   wartosci<-levels(x)
  20.   l<-length(wartosci)
  21.   T<-matrix(0,nrow=n,ncol=l)
  22.   for(i in 1:l)
  23.     T[,i]<-(x==wartosci[i])
  24.   colnames(T)<-wartosci
  25.   return(T)
  26. }
  27. #zastosowanie powyższej funkcji dla danych określających etykiety
  28. wZadane<-target(owoc$Class)
  29. wZadane
  30.  
  31. set.seed(24)
  32.  
  33. #tworzymy strukturę sieci
  34. siec<-newff(n.neurons=c(4,8,3),
  35.             learning.rate.global=0.01,
  36.             momentum.global=0.5,
  37.             hidden.layer="sigmoid",
  38.             output.layer="purelin",
  39.             method="ADAPTgdwm",
  40.             error.criterium="LMS")
  41.  
  42. #trenujemy sieć
  43. #owoc <- owoc[,]
  44. wynik<-train(siec,
  45.              owoc[idxTren,1:34],
  46.              matrix(as.numeric(wZadane[idxTren])),
  47.              error.criterium="LMS",
  48.              report=TRUE,
  49.              show.step=5,
  50.              n.shows=1000)
  51.  
  52. plot(wynik$Merror,type="l",xlab="Ileracja (x10)",
  53.      ylab="Błąd", col="darkred")
  54.  
  55. #stosuję wytrenowaną sieć do danych testowych
  56. y<-sim(wynik$net,owoc[idxTest, -5])
  57. y
  58.  
  59. #definiuję funkcję oceny klasyfikacji (zamieniam liczby na etykietę)
  60. testKlasyfikacji<-function(zad,wy)
  61. {
  62.   zadane<-max.col(zad)
  63.   rozpoznane<-max.col(wy)
  64.   print(table(zadane,rozpoznane))
  65. }
  66. wynik<-testKlasyfikacji(wZadane[idxTest,],y)
  67.  
  68. #określamy dokładność klasyfikacji
  69. cat("Dokładność klasyfikacji:",
  70.     sum(diag(wynik))/sum(wynik)*100, "%\n")
  71.  
Advertisement
RAW Paste Data Copied
Advertisement