diff --git a/podsumowanie/Pytania powtórzeniowe.pdf b/podsumowanie/Pytania powtórzeniowe.pdf new file mode 100644 index 0000000..3d9d1c0 Binary files /dev/null and b/podsumowanie/Pytania powtórzeniowe.pdf differ diff --git a/podsumowanie/README.md b/podsumowanie/README.md index 767ac2d..abab115 100644 --- a/podsumowanie/README.md +++ b/podsumowanie/README.md @@ -901,11 +901,46 @@ Zagadnienia: ### R +```r +# test założeń +shapiro.test(mtcars$wt)$p.value + +# pearson +cor.test(mtcars$mpg, mtcars$wt, method = "pearson")$p.value +cor.test(mtcars$mpg, mtcars$wt, method = "pearson")$est + +# kendall +cor.test(mtcars$mpg, mtcars$wt, method = "kendall")$p.value +cor.test(mtcars$mpg, mtcars$wt, method = "kendall")$est + +# spearman +cor.test(mtcars$mpg, mtcars$wt, method = "spearman")$p.value +cor.test(mtcars$mpg, mtcars$wt, method = "spearman")$est + +# inne +chisq.test(Efekt,Metoda) +cor(Girth,Volume) +``` ### Zagadnienia +- Analiza zależności cech - jeśli badaniu statystycznemu podlega jednocześnie wiele cech, to jednym z podstawowych zagadnień staje się analiza zależności pomiędzy nimi. Do wykrycia zależności pomocne są odpowiednie wykresy, współczynniki mierzące jej siłę oraz testy badające jej istotność. +- Tabela dwudzielcza.
+![tabela](lab13/dwudzielcza.png) + +- Test niezależności w tablicy dwudzielczej - po prostu wszyskie możliwe kombinacje są niezależne - na stronie jest rozpisany wzór.
+![cramer](lab13/cramer.png) + +- Test istotności dla współczynnika korelacji - na stronie.
+![korelacja](lab13/korelacja.png) + +- Korelacja Pearsona - służy do sprawdzenia czy dwie zmienne ilościowe są powiązane ze sobą związkiem liniowym. -1 = odwrotnie liniowa, 0 = brak korelacji, 1 = dodatnio liniowa. + +- Korelacja Tau Kendalla - statystyka będąca jedną z miar monotonicznej zależności dwóch zmiennych losowych. -1 = każda maleje przy wzroście drugiej, 0 = brak korelacji, 1 = każda ze zmiannych rośnie przy wzroście drugiej. + +- Korelacja rang Spearmana - ich interpretacja jest podobna do klasycznego współczynnika korelacji Pearsona, z jednym zastrzeżeniem: w odróżnieniu od współczynnika Pearsona, który mierzy liniową zależność między zmiennymi, a wszelkie inne związki traktuje jak zaburzone zależności liniowe, korelacja rangowa pokazuje dowolną monotoniczną zależność (także nieliniową). diff --git a/podsumowanie/lab13/cramer.png b/podsumowanie/lab13/cramer.png new file mode 100644 index 0000000..f87edc1 Binary files /dev/null and b/podsumowanie/lab13/cramer.png differ diff --git a/podsumowanie/lab13/korelacja.png b/podsumowanie/lab13/korelacja.png new file mode 100644 index 0000000..6f7fe0b Binary files /dev/null and b/podsumowanie/lab13/korelacja.png differ diff --git a/podsumowanie/lab13/tabela.png b/podsumowanie/lab13/tabela.png new file mode 100644 index 0000000..2277f9b Binary files /dev/null and b/podsumowanie/lab13/tabela.png differ diff --git a/testowe/.RData b/testowe/.RData index 923116b..4f971eb 100644 Binary files a/testowe/.RData and b/testowe/.RData differ diff --git a/testowe/.Rhistory b/testowe/.Rhistory index 429c996..ca7dd5f 100644 --- a/testowe/.Rhistory +++ b/testowe/.Rhistory @@ -136,3 +136,132 @@ data.name = deparse(substitute(x))) class(result) <- 'htest' return(result) } +rok <- 1995:2002 +liczba_przypadkow <- c(39.7, 38.2, 34.7, 33.1, 30.1, 28.4, 26.3, 24.7) +data_set <- data.frame(rok = rok, liczba_przypadkow = liczba_przypadkow) +plot(data_set, main = "Wykres rozrzutu", pch = 16) +model <- lm(liczba_przypadkow ~ rok, data = data_set) +model$coefficients +plot(data_set, main = "Wykres rozrzutu", pch = 16) +abline(model, col = "red", lwd = 2) +coef(model) +confint(model) +summary(model) +fitted(model) +residuals(model) +temp_rok <- data.frame(rok = seq(min(data_set$rok) - 10, +max(data_set$rok) + 10, +length = 100)) +pred <- stats::predict(model, temp_rok, interval = "prediction") +plot(data_set, main = "Wykres rozrzutu", pch = 16) +abline(model, col = "red", lwd = 2) +lines(temp_rok$rok, pred[, 2], lty = 2, col = "red") +lines(temp_rok$rok, pred[, 3], lty = 2, col = "red") +temp_rok <- data.frame(rok = seq(min(data_set$rok), +max(data_set$rok), +length = 100)) +pred <- stats::predict(model, temp_rok, interval = "prediction") +plot(data_set, main = "Wykres rozrzutu", pch = 16) +abline(model, col = "red", lwd = 2) +lines(temp_rok$rok, pred[, 2], lty = 2, col = "red") +lines(temp_rok$rok, pred[, 3], lty = 2, col = "red") +temp_rok <- data.frame(rok = seq(min(data_set$rok) - 10, +max(data_set$rok) + 10, +length = 100)) +pred <- stats::predict(model, temp_rok, interval = "prediction") +plot(data_set, main = "Wykres rozrzutu", pch = 16) +abline(model, col = "red", lwd = 2) +lines(temp_rok$rok, pred[, 2], lty = 2, col = "red") +lines(temp_rok$rok, pred[, 3], lty = 2, col = "red") +new_rok <- data.frame(rok = 2003:2007) +(pred_2003_2007 <- stats::predict(model, new_rok, interval = 'prediction')) +plot(data_set, main = "Wykres rozrzutu z predykcją na lata 2003-2007", pch = 16, +xlim = c(1995, 2007), ylim = c(10, 40)) +abline(model, col = "red", lwd = 2) +points(2003:2007, pred_2003_2007[, 1], col = "blue", pch = 16) +temp_rok <- data.frame(rok = seq(1994, 2008, length = 100)) +pred <- stats::predict(model, temp_rok, interval = "prediction") +lines(temp_rok$rok, pred[, 2], lty = 2, col = "red") +lines(temp_rok$rok, pred[, 3], lty = 2, col = "red") +load(url("http://ls.home.amu.edu.pl/data_sets/liver_data.RData")) +head(liver_data) +liver_data$condition <- ifelse(liver_data$condition == "Yes", 1, 0) +model_1 <- glm(condition ~ bilirubin + ldh, data = liver_data, family = 'binomial') +model_1 +summary(model_1) +step(model_1) +exp(coef(model_1)[2]) +exp(coef(model_1)[3]) +install.packages("ROCR") +library(ROCR) +pred_1 <- prediction(model_1$fitted, liver_data$condition) +plot(performance(pred_1, 'tpr', 'fpr'), main = "Model 1") +performance(pred_1, 'auc')@y.values +liver_data_new <- data.frame(bilirubin = c(0.9, 2.1, 3.4), ldh = c(100, 200, 300)) +(predict_glm <- stats::predict(model_1, +liver_data_new, +type = 'response')) +model_1_hat <- coef(model_1)[1] + +coef(model_1)[2] * liver_data$bilirubin + +coef(model_1)[3] * liver_data$ldh +model_1_temp <- seq(min(model_1_hat) - 1, max(model_1_hat) + 2.5, length.out = 100) +condition_temp <- exp(model_1_temp) / (1 + exp(model_1_temp)) +plot(model_1_temp, condition_temp, type = "l", xlab = "X beta", ylab = "condition", +xlim = c(-6, 9), ylim = c(-0.1, 1.1)) +points(model_1_hat, liver_data$condition, pch = 16) +points(coef(model_1)[1] + +coef(model_1)[2] * liver_data_new$bilirubin + +coef(model_1)[3] * liver_data_new$ldh, +predict_glm, pch = 16, col = "red") +pred_1 <- prediction(model_1$fitted, liver_data$condition) +plot(performance(pred_1, 'tpr', 'fpr'), main = "Model 1") +performance(pred_1, 'auc')@y.values +summary(model_1) +model_1$coefficients +summary(model_1)$adj.r.squared +x1<-rexp(30,5) +x2<-rnorm(30,2,2) +x3<-rnorm(30,10,1) +gen<-c(x1,x2,x3) +# wykresy gęstości jądrowych przy różnych szerokościach okna +par(mfrow=c(2,2)) +plot(density(gen,bw=0.1)) +plot(density(gen,bw=0.5)) +plot(density(gen,bw=3)) +plot(density(gen,bw=5)) #na trzecim +#ZAD1 +head(USArrests) +pairs(USArrests) +#UrbanPop jest najsłabiej skorelowana z pozostałymi +cor.test(USArrests$Murder,USArrests$UrbanPop, method="pearson") +cor.test(USArrests$Rape,USArrests$UrbanPop, method="pearson") +(pca_1 <- prcomp(~ Murder + Assault + Rape, data = USArrests, scale = TRUE)) +summary(pca_1) +head(pca_1$x) +cat("...") +pca_1$rotation +par(mfrow = c(1, 2)) +matplot(pca_1$rotation, type = 'l', lty = 1, lwd = 2, +xlab = 'zmienne', ylab = 'ładunki', ylim = c(-0.9, 1.05), +xaxt = "n") +axis(1, at = 1:3, labels = rownames(pca_1$rotation)) +legend('topleft', legend = c('PC1', 'PC2', 'PC3'), ncol = 3, col = 1:3, lwd = 2) +text(rep(1, 3), pca_1$rotation[1, ], round(pca_1$rotation[1, ], 2), pos = 4) +text(rep(2, 3), pca_1$rotation[2, ], round(pca_1$rotation[2, ], 2), pos = 1) +text(rep(3, 3), pca_1$rotation[3, ], round(pca_1$rotation[3, ], 2), pos = 2) +matplot(abs(pca_1$rotation), type = 'l', lty = 1, lwd = 2, +xlab = 'zmienne', ylab = '|ładunki|', ylim = c(0, 1.05), +xaxt = "n") +axis(1, at = 1:3, labels = rownames(pca_1$rotation)) +legend('topleft', legend = c('PC1', 'PC2', 'PC3'), ncol = 3, col = 1:3, lwd = 2) +text(rep(1, 3), abs(pca_1$rotation)[1, ], abs(round(pca_1$rotation[1, ], 2)), pos = 4) +text(rep(2, 3), abs(pca_1$rotation)[2, ], abs(round(pca_1$rotation[2, ], 2)), pos = 1) +text(rep(3, 3), abs(pca_1$rotation)[3, ], abs(round(pca_1$rotation[3, ], 2)), pos = 2) +plot(pca_1) +par(mfrow = c(1, 1)) +plot(pca_1) +pca_1$sdev^2 +mean(pca_1$sdev^2) +biplot(pca_1) +library(ape) +plot(mst(dist(scale(USArrests[, -3]))), x1 = pca_1$x[, 1], x2 = pca_1$x[, 2]) diff --git a/zajecia14/.RData b/zajecia14/.RData new file mode 100644 index 0000000..28a2498 Binary files /dev/null and b/zajecia14/.RData differ diff --git a/zajecia14/.Rhistory b/zajecia14/.Rhistory new file mode 100644 index 0000000..217cb88 --- /dev/null +++ b/zajecia14/.Rhistory @@ -0,0 +1,143 @@ +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) +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) +# w pakiecie caret dla sprawdzenia +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(Species ~ ., data = iris, method = 'lda', trControl = ctrl_boot) +train(Species ~ ., data = iris, method = 'lda', trControl = ctrl_loo) +train(Species ~ ., data = iris, method = 'lda', trControl = ctrl_10CV) +library(caret) +install.packages("caret") +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(Species ~ ., data = iris, method = 'lda', trControl = ctrl_boot) +train(Species ~ ., data = iris, method = 'lda', trControl = ctrl_loo) +train(Species ~ ., data = iris, method = 'lda', trControl = ctrl_10CV) +wina <- read.table('http://ls.home.amu.edu.pl/data_sets/wina.txt') +head(wina) +cat("...") +wina$V14 <- as.factor(wina$V14) +dim(wina) +table(wina$V14) +model_lda <- lda(V14 ~ V1 + V2 + V3, data = wina) +model_lda$prior +model_lda$means +model_lda$scaling +head(stats::predict(model_lda)$posterior) +head(stats::predict(model_lda)$class) +(conf_matrix <- table(stats::predict(model_lda)$class, wina$V14)) +(1 - sum(diag(conf_matrix)) / nrow(wina)) +(1 - sum(diag(conf_matrix)) / nrow(wina)) +pred_loo <- numeric(nrow(wina)) +for (i in 1:nrow(wina)) { +model_lda_i <- lda(V14 ~ V1 + V2 + V3, data = wina[-i, ]) +pred_loo[i] <- stats::predict(model_lda_i, wina[i, ])$class +} +table(wina$V14, pred_loo) +(1 - sum(diag(table(wina$V14, pred_loo))) / nrow(wina)) +# 10CV +v <- 10 +blad_i <- numeric(v) +krok <- floor(nrow(wina) / v) +permutacja <- sample(1:nrow(wina)) +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(wina)] +} +model_lda_i <- lda(V14 ~ V1 + V2 + V3, data = wina[-obs_temp, ]) +pred_i <- stats::predict(model_lda_i, wina[obs_temp, ])$class +blad_i[i] <- sum(pred_i != wina$V14[obs_temp]) +} +sum(blad_i) / nrow(wina) +# bootstrap +n_boot <- 100 +temp_boot <- numeric(n_boot) +set.seed(1234) +for (i in 1:n_boot) { +numery <- sample(1:nrow(wina), replace = TRUE) +model_lda_i <- lda(V14 ~ V1 + V2 + V3, data = wina[numery, ]) +temp_boot[i] <- mean(stats::predict(model_lda_i, wina[-numery, ])$class != wina[-numery, ]$V14) +} +mean(temp_boot) +# w pakiecie caret dla sprawdzenia +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) +wybrane <- wina[c(20, 50, 150, 100), 1:3] +rownames(wybrane) <- 1:4 +library(knitr) +kable(wybrane, align = c('c', 'c', 'c')) +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) diff --git a/zajecia14/Readme.md b/zajecia14/Readme.md new file mode 100644 index 0000000..03297af --- /dev/null +++ b/zajecia14/Readme.md @@ -0,0 +1,21 @@ +# Zajęcia 14 +Klasyfikacja + + +## Estymacja błędu +Dzielimy liczbę błędów przez sumę liczby klasyfikacji. + + +## Tabela krzyżowa +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](krzyzowa.png) + + +## Sprawdzian krzyżowy +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) + + +## Notatki +- 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". \ No newline at end of file diff --git a/zajecia14/Zajęcia14.pdf b/zajecia14/Zajęcia14.pdf new file mode 100644 index 0000000..d4c7f96 Binary files /dev/null and b/zajecia14/Zajęcia14.pdf differ diff --git a/zajecia14/classification.pdf b/zajecia14/classification.pdf new file mode 100644 index 0000000..dc0230a Binary files /dev/null and b/zajecia14/classification.pdf differ diff --git a/zajecia14/krzyzowa.png b/zajecia14/krzyzowa.png new file mode 100644 index 0000000..d2b26c0 Binary files /dev/null and b/zajecia14/krzyzowa.png differ diff --git a/zajecia14/zadania.R b/zajecia14/zadania.R new file mode 100644 index 0000000..9ea357c --- /dev/null +++ b/zajecia14/zadania.R @@ -0,0 +1,146 @@ +# ZAD 1 +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) + + + +# w pakiecie caret dla sprawdzenia +install.packages("caret") +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(Species ~ ., data = iris, method = 'lda', trControl = ctrl_boot) +train(Species ~ ., data = iris, method = 'lda', trControl = ctrl_loo) +train(Species ~ ., data = iris, method = 'lda', trControl = ctrl_10CV) + +# ZAD 2 +wina <- read.table('http://ls.home.amu.edu.pl/data_sets/wina.txt') +head(wina) +cat("...") +wina$V14 <- as.factor(wina$V14) + +dim(wina) +table(wina$V14) + +library(MASS) +model_lda <- lda(V14 ~ V1 + V2 + V3, data = wina) +model_lda$prior +model_lda$means +model_lda$scaling + +head(stats::predict(model_lda)$posterior) +head(stats::predict(model_lda)$class) +(conf_matrix <- table(stats::predict(model_lda)$class, wina$V14)) + + + +(1 - sum(diag(conf_matrix)) / nrow(wina)) + +pred_loo <- numeric(nrow(wina)) +for (i in 1:nrow(wina)) { + model_lda_i <- lda(V14 ~ V1 + V2 + V3, data = wina[-i, ]) + pred_loo[i] <- stats::predict(model_lda_i, wina[i, ])$class +} +table(wina$V14, pred_loo) +(1 - sum(diag(table(wina$V14, pred_loo))) / nrow(wina)) + + + +# 10CV +v <- 10 +blad_i <- numeric(v) +krok <- floor(nrow(wina) / v) +permutacja <- sample(1:nrow(wina)) +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(wina)] + } + model_lda_i <- lda(V14 ~ V1 + V2 + V3, data = wina[-obs_temp, ]) + pred_i <- stats::predict(model_lda_i, wina[obs_temp, ])$class + blad_i[i] <- sum(pred_i != wina$V14[obs_temp]) +} +sum(blad_i) / nrow(wina) + + + +# bootstrap +n_boot <- 100 +temp_boot <- numeric(n_boot) +set.seed(1234) +for (i in 1:n_boot) { + numery <- sample(1:nrow(wina), replace = TRUE) + model_lda_i <- lda(V14 ~ V1 + V2 + V3, data = wina[numery, ]) + temp_boot[i] <- mean(stats::predict(model_lda_i, wina[-numery, ])$class != wina[-numery, ]$V14) +} +mean(temp_boot) + + + +# w pakiecie caret dla sprawdzenia +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) + + +wybrane <- wina[c(20, 50, 150, 100), 1:3] +rownames(wybrane) <- 1:4 +library(knitr) +kable(wybrane, align = c('c', 'c', 'c')) + + + +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) + + + diff --git a/zajecia14/zajecia14.Rproj b/zajecia14/zajecia14.Rproj new file mode 100644 index 0000000..8e3c2eb --- /dev/null +++ b/zajecia14/zajecia14.Rproj @@ -0,0 +1,13 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX