diff --git a/podsumowanie/README.md b/podsumowanie/README.md index 28073e1..b44cb35 100644 --- a/podsumowanie/README.md +++ b/podsumowanie/README.md @@ -951,12 +951,103 @@ cor(Girth,Volume) Zagadnienia: - klasyfikacja -- wykład 12 na stronie +- wykład 12 na stronie (jest jeszcze więcej wywołań w R) ### R +```r +# liniowa dyskryminacja +library(MASS) +model_lda <- lda(V14 ~ V1 + V2 + V3, data = wina) + + +# błąd klasyfikacji metodą sprawdzania krzyżowego v=10 +library(MASS) +v <- 10 +blad_i <- numeric(v) +krok <- floor(nrow(iris) / v) +permutacja <- sample(1:nrow(iris)) +temp <- 0 +for (i in 1:v) { + if (i != v) { + obs_temp <- permutacja[(temp + 1):(i * krok)] + temp <- i * krok + } else { + obs_temp <- permutacja[(temp + 1):nrow(iris)] + } + model_lda_i <- lda(Species ~ ., data = iris[-obs_temp, ]) + pred_i <- stats::predict(model_lda_i, iris[obs_temp, ])$class + blad_i[i] <- sum(pred_i != iris$Species[obs_temp]) +} +sum(blad_i) / nrow(iris) + + +# bootstrap +n_boot <- 100 +temp_boot <- numeric(n_boot) +set.seed(1234) +for (i in 1:n_boot) { + numery <- sample(1:nrow(iris), replace = TRUE) + model_lda_i <- lda(Species ~ ., data = iris[numery, ]) + temp_boot[i] <- mean(stats::predict(model_lda_i, iris[-numery, ])$class != iris[-numery, ]$Species) +} +mean(temp_boot) + + +# tablica kontynencji (krzyżowa) +head(stats::predict(model_lda)$posterior) +head(stats::predict(model_lda)$class) +(conf_matrix <- table(stats::predict(model_lda)$class, wina$V14)) + + +# błąd metodą ponownego podstawiania +(1 - sum(diag(conf_matrix)) / nrow(wina)) + + +# klasyfikacja +new_data <- data.frame(V1 = c(13.64, 13.94, 13.08, 12.29), + V2 = c(3.1, 1.73, 3.9, 3.17), + V3 = c(2.56, 2.27, 2.36, 2.21)) +stats::predict(model_lda, new_data) + + +# gotowy bootstrap +library(caret) +ctrl_boot <- trainControl(method = 'boot', + number = 100, + search = 'grid') +ctrl_loo <- trainControl(method = 'LOOCV', + search = 'grid') +ctrl_10CV <- trainControl(method = "repeatedcv", + number = 10, + repeats = 10) +train(V14 ~ V1 + V2 + V3, data = wina, method = 'lda', trControl = ctrl_boot) +train(V14 ~ V1 + V2 + V3, data = wina, method = 'lda', trControl = ctrl_loo) +train(V14 ~ V1 + V2 + V3, data = wina, method = 'lda', trControl = ctrl_10CV) +``` -### Zagadnienia \ No newline at end of file +### Zagadnienia +- Klasyfikacja - w zagadnieniach klasyfikacyjnych poszukujemy reguły (klasyfikatora) (zazwyczaj oznaczanego literą d) pozwalającego na przyporządkowanie obiektu ( opisanego przez p wymiarowy wektor obserwowanych cech) do jednej z k klas. + +- Tabela krzyżowa (kontyngencji) - tabela przedstawiająca łączny rozkład dwóch lub większej liczby zmiennych. W przykładzie wartości w kolumnie sumują się do 100%, w wierszu już nie muszą.
+![krzyzowa](lab14/krzyzowa.png) + +- Estymacja błędu - dzielimy liczbę błędów przez sumę liczby klasyfikacji. + +- Szacowanie jakości klasyfikatora: + - Metoda ponownego podstawienia. Korzystając z całej próby (uczącej) uzyskujemy klasyfikator d. Następnie, wykorzystując ten klasyfikator, prognmozujemy etykiety wszystkich elementów próby (obiektów). Miarą jakości jest proporcja poprawnie zaklasyfikowanych obiektów. + + - Sprawdzian krzyżowy – metoda statystyczna polegająca na podziale próby statystycznej na podzbiory, a następnie przeprowadzaniu wszelkich analiz na niektórych z nich, tzw. zbiór uczący, podczas gdy pozostałe służą do potwierdzenia wiarygodności jej wyników, tzw. zbiór testowy. [link](https://pl.wikipedia.org/wiki/Sprawdzian_krzyżowy)

+ +- Jak robię lda i dostaję wynik w którym są "coefficients of linear discriminants" to program robi tak że mnoży odpowiednią wartość współczynnika z odpowiednią wartością obserwacji i otrzymany wynik jest używany potem do algorytmu klasyfikacji. + +- A posteriori (łac. „z następstwa”) – w filozofii termin będący przeciwieństwem wyrażenia a priori, oznaczający tyle co: "po fakcie". + +- Wzór Bayesa
+![bayes](lab14/bayes.png) + +- Bayesowska reguła klasyfikacyjna
+![regula](lab14/regula.png) \ No newline at end of file diff --git a/podsumowanie/lab14/bayes.png b/podsumowanie/lab14/bayes.png new file mode 100644 index 0000000..d72afa2 Binary files /dev/null and b/podsumowanie/lab14/bayes.png differ diff --git a/podsumowanie/lab14/krzyzowa.png b/podsumowanie/lab14/krzyzowa.png new file mode 100644 index 0000000..d2b26c0 Binary files /dev/null and b/podsumowanie/lab14/krzyzowa.png differ diff --git a/podsumowanie/lab14/regula.png b/podsumowanie/lab14/regula.png new file mode 100644 index 0000000..ca27d9d Binary files /dev/null and b/podsumowanie/lab14/regula.png differ