lab14
This commit is contained in:
parent
4d927ae14a
commit
1c575b8ecb
@ -951,12 +951,103 @@ cor(Girth,Volume)
|
|||||||
Zagadnienia:
|
Zagadnienia:
|
||||||
- klasyfikacja
|
- klasyfikacja
|
||||||
|
|
||||||
- wykład 12 na stronie
|
- wykład 12 na stronie (jest jeszcze więcej wywołań w R)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### 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
|
### 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ą.<br/>
|
||||||
|
![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)<br/><br/>
|
||||||
|
|
||||||
|
- 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<br/>
|
||||||
|
![bayes](lab14/bayes.png)
|
||||||
|
|
||||||
|
- Bayesowska reguła klasyfikacyjna<br/>
|
||||||
|
![regula](lab14/regula.png)
|
BIN
podsumowanie/lab14/bayes.png
Normal file
BIN
podsumowanie/lab14/bayes.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
BIN
podsumowanie/lab14/krzyzowa.png
Normal file
BIN
podsumowanie/lab14/krzyzowa.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
podsumowanie/lab14/regula.png
Normal file
BIN
podsumowanie/lab14/regula.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 KiB |
Loading…
Reference in New Issue
Block a user