# Weryfikacja krzyzowa szacujaca p-stwo poprawnej predykcji (ppp) # odmiany irysa za pomoca metody qda, ktora jest tutaj # zaimplementowana bezposrednio. y=c(rep(1,50), rep(2,50), rep(3,50)); X=as.matrix(iris[,-5]) yPred=rep(NA,150); ppp=rep(NA,5) #p-stwo poprawnej predykcji perm1=sample(1:50,50); perm2=sample(1:50,50); perm3=sample(1:50,50) for(i in 1:5){ ind=((i-1)*10+1):(i*10) test1=perm1[ind]; train1=perm1[-ind] test2=perm2[ind]; train2=perm2[-ind] test3=perm3[ind]; train3=perm3[-ind] m1=apply(X[train1,],2,mean); v1=cov(X[train1,]) m2=apply(X[train2+50,],2,mean); v2=cov(X[train2+50,]) m3=apply(X[train3+100,],2,mean); v3=cov(X[train3+100,]) test=c(test1,test2+50,test3+100) for(j in test) { u1=-t(X[j,]-m1)%*%solve(v1, X[j,]-m1) - log(det(v1)) u2=-t(X[j,]-m2)%*%solve(v2, X[j,]-m2) - log(det(v2)) u3=-t(X[j,]-m3)%*%solve(v3, X[j,]-m3) - log(det(v3)) yPred[j]=which.max(c(u1,u2,u3)) } ppp[i]=mean(y[test]==yPred[test]) }