Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #wcztuję dane z archiwum
- dane <- read.table(file="https://archive.ics.uci.edu/ml/machine-learning-databases/spect/SPECT.test", sep=",")
- dane1 <- read.table(file="https://archive.ics.uci.edu/ml/machine-learning-databases/spect/SPECT.train", sep=",")
- #łączymy dwa zbiory danych w jeden
- total <- rbind(dane, dane1)
- #sprawdzamy i usuwamy zdublowane dane funkcją unique
- total<- unique(total)
- #używam walidacji krzyżowej 10-krotnej więc pomniejszam zbiór aby wynik z dzielenia był poprawny
- total<- total[1:220,]
- #sprawdzam 6 wierszy przed tasowaniem
- head(total)
- # dane przypisujemy jako losowo wybrane dane zawierając się we wszystkich wierszach i kolumnach
- total <- total[sample(nrow(total)),]
- #sprawdzam czy dane zostały przetasowane
- head(total)
- #zwracamy w obu przypadkach tablicę , w pierwszym dzielimy bez reszty przez liczbę 10 w drugim
- #dzielimy z resztą przez liczbę 10 gdyż wykonujemy walidację krzyżową 10-krotną
- nrow(total)%/% 10
- nrow(total)%%10
- #ustawiamy początek na 1 ,funkcja nrow zwraca dane jako tablicę złożoną z wierszy i kolumn
- #w pierwszym kroku STEP dzielimy zwróconą tablicę dzieleniem bez reszty przez liczbę 10 w ostatnim kroku
- #LAST.STEP dzielimy zwróconą tablicę dzieleniem z resztą przez liczbę 10
- BEGIN<-1
- STEP<-nrow(total)%/%10
- LAST.STEP<-nrow(total)%%10
- total$V23<-as.factor(total$V23)
- #total$V23<-as.numeric(total$V23)
- #w tej pętli trenujemy algorytm uczący C5.0 ustawiąjąc iterator od 1 do 10
- #END w każdym obiegu mnożymy przez krok STEP
- #tworzymy zbiór testowy jako wszystkie kolumny z pobranego zbioru dane i wiersze od BEGIN do END
- #zbiór treningowy tworzymy z pobranego zbioru dane jako wszystkie kolumny
- #i wiersze ,używamy tu funkcji c aby połączyć zmienne jako wektor lub listę
- #pobierając wiersze od 1 przy czym wykorzystując przy każdym obiegu END i BEGIN
- #do liczby wierszy zwróconej przez funkcję nrow
- #w linijce 48 trenujemy drzewo przyjmując jako x kolumny od 1 do 34
- #i jako y kolumnę 35
- #linijka 46 odowiada za przewidywanie w zbiorze testowym
- for(i in 1:10){
- END <- i*STEP
- library(C50)
- testowy<-total[BEGIN:END,]
- treningowy<-total[c(1:(BEGIN-1),(END+1):nrow(total)),]
- drzewo<- C5.0(x=treningowy[,1:22], y=treningowy[,23])
- y=treningowy[,23]
- copowinnobyc<-testowy[,23]
- coprzewidziano<-predict(drzewo,newdata=testowy[,1:22])
- BEGIN<-END+1
- }
- #w tym ciągu instukcji następuje obliczenie błędu na podstawie wcześniej
- #obliczonych danych ,błąd liczymy na podstawie długości objektu copowinnobyć
- if(LAST.STEP){
- END<-BEGIN + LAST.STEP - 1
- cat(BEGIN,END,'ln')
- }
- blad=0
- for(i in 1:length(copowinnobyc))
- {
- if(coprzewidziano[i]!=copowinnobyc[i]){
- blad=blad+1
- }
- }
- blad <- blad / length(copowinnobyc)
- blad
- #dokładność obliczam poprzez różnicę między 1 a błędem
- trafnosc=1-blad
- trafnosc
- total
- library(MASS)
- total.lda <- lda(V23 ~ . , data = total)
- table(predict(total.lda, type="class")$class, total$V23)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement