Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 2.99 KB | None | 0 0
  1. #wcztuję dane z archiwum
  2.  
  3. dane <- read.table(file="https://archive.ics.uci.edu/ml/machine-learning-databases/spect/SPECT.test", sep=",")
  4. dane1 <- read.table(file="https://archive.ics.uci.edu/ml/machine-learning-databases/spect/SPECT.train", sep=",")
  5.  
  6. #łączymy dwa zbiory danych w jeden
  7.  
  8. total <- rbind(dane, dane1)
  9.  
  10. #sprawdzamy i usuwamy zdublowane dane funkcją unique
  11.  
  12. total<- unique(total)
  13.  
  14. #używam walidacji krzyżowej 10-krotnej więc pomniejszam zbiór aby wynik z dzielenia był poprawny
  15.  
  16. total<- total[1:220,]
  17.  
  18. #sprawdzam 6 wierszy przed tasowaniem
  19.  
  20. head(total)
  21.  
  22. # dane przypisujemy jako losowo wybrane dane zawierając się we wszystkich wierszach i kolumnach
  23.  
  24. total <- total[sample(nrow(total)),]
  25.  
  26. #sprawdzam czy dane zostały przetasowane
  27.  
  28. head(total)
  29.  
  30. #zwracamy w obu przypadkach tablicę , w pierwszym dzielimy bez reszty przez liczbę 10 w drugim
  31. #dzielimy z resztą przez liczbę 10 gdyż wykonujemy walidację krzyżową 10-krotną
  32.  
  33. nrow(total)%/% 10
  34. nrow(total)%%10
  35.  
  36. #ustawiamy początek na 1 ,funkcja nrow zwraca dane jako tablicę złożoną z wierszy i kolumn  
  37. #w pierwszym kroku STEP dzielimy zwróconą tablicę dzieleniem bez reszty przez liczbę 10 w ostatnim kroku
  38. #LAST.STEP dzielimy zwróconą tablicę dzieleniem z resztą przez liczbę 10  
  39.  
  40. BEGIN<-1
  41. STEP<-nrow(total)%/%10
  42.  
  43.  
  44. LAST.STEP<-nrow(total)%%10
  45.  
  46. total$V23<-as.factor(total$V23)
  47. #total$V23<-as.numeric(total$V23)
  48. #w tej pętli trenujemy algorytm uczący C5.0 ustawiąjąc iterator od 1 do 10
  49. #END w każdym obiegu mnożymy przez krok STEP
  50. #tworzymy zbiór testowy jako wszystkie kolumny z pobranego zbioru dane i wiersze od BEGIN do END
  51. #zbiór treningowy tworzymy z pobranego zbioru dane jako wszystkie kolumny
  52. #i wiersze ,używamy tu funkcji c aby połączyć zmienne jako wektor lub listę
  53. #pobierając wiersze od 1 przy czym wykorzystując przy każdym obiegu END i BEGIN
  54. #do liczby wierszy zwróconej przez funkcję nrow
  55. #w linijce 48 trenujemy drzewo przyjmując jako x kolumny od 1 do 34
  56. #i jako y kolumnę 35
  57. #linijka 46 odowiada za przewidywanie w zbiorze testowym
  58. for(i in 1:10){
  59.  
  60.   END <- i*STEP
  61.   library(C50)
  62.   testowy<-total[BEGIN:END,]
  63.   treningowy<-total[c(1:(BEGIN-1),(END+1):nrow(total)),]
  64.   drzewo<- C5.0(x=treningowy[,1:22], y=treningowy[,23])
  65.   y=treningowy[,23]
  66.  
  67.   copowinnobyc<-testowy[,23]
  68.   coprzewidziano<-predict(drzewo,newdata=testowy[,1:22])
  69.  
  70.   BEGIN<-END+1
  71. }
  72. #w tym ciągu instukcji następuje obliczenie błędu na podstawie wcześniej
  73. #obliczonych danych ,błąd liczymy na podstawie długości objektu copowinnobyć
  74. if(LAST.STEP){
  75.   END<-BEGIN + LAST.STEP - 1
  76.   cat(BEGIN,END,'ln')
  77. }
  78. blad=0
  79. for(i in 1:length(copowinnobyc))
  80. {
  81.   if(coprzewidziano[i]!=copowinnobyc[i]){
  82.     blad=blad+1
  83.   }
  84. }
  85. blad <- blad / length(copowinnobyc)
  86. blad
  87. #dokładność obliczam poprzez różnicę między 1 a błędem
  88.  
  89. trafnosc=1-blad
  90. trafnosc
  91. total
  92. library(MASS)
  93. total.lda <- lda(V23 ~ . , data = total)
  94. table(predict(total.lda, type="class")$class, total$V23)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement