knitr::opts_chunk$set(echo = TRUE)
library(tidyverse) library(tidymodels) library(here) library(hearrthstone) library(kknn)
dat <- read_csv(here("dev", "data", "df_decks_dummy.csv")) card_names <- names(dat)[-c(1,2)]
dat <- dat %>% mutate_all(~replace_na(., 0)) %>% filter(!str_detect(deckname," Deck")) classes <- c("Druid", "Demon Hunter", "Mage", "Hunter", "Shaman", "Rogue", "Warrior", "Warlock", "Priest", "Paladin")
dat %>% pc_df("Hunter") %>% select(1:10,deckname)
my_pcs <- prcomp(cards_matrix) druid_pcs <- prcomp(druid_matrix) dh_pcs <- prcomp(dh_matrix) mage_pcs <- prcomp(mage_matrix) warrior_pcs <- prcomp(warrior_matrix) shaman_pcs <- prcomp(shaman_matrix) rogue_pcs <- prcomp(rogue_matrix) hunter_pcs <- prcomp(hunter_matrix) warlock_pcs <- prcomp(warlock_matrix) paladin_pcs <- prcomp(paladin_matrix) druid_pc_df <- druid_pcs$x %>% as_tibble() %>% mutate( deckname = filter(dat, Class == "Druid")$deckname ) dh_pc_df <- dh_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) mage_pc_df <- mage_pcs$x %>% as_tibble() %>% mutate( deckname = filter(dat, Class == "Mage")$deckname ) warrior_pc_df <- warrior_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) shaman_pc_df <- shaman_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) rogue_pc_df <- rogue_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) hunter_pc_df <- hunter_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) paladin_pc_df <- paladin_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) warlock_pc_df <- warlock_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname ) pc_df <- my_pcs$x %>% as_tibble() %>% mutate( deckname = dat$deckname )
mage_pc_df %>% ggplot() + geom_boxplot(aes(x = deckname, y = PC2)) enframe(my_pcs$rotation[,"PC2"]) %>% arrange(desc(value)) enframe(my_pcs$rotation[,"PC2"]) %>% arrange(value)
dat_split <- dat %>% filter(Class == "Druid") %>% select(-Class) %>% mutate( deckname = as_factor(deckname) ) %>% vfold_cv(v = 5) as.data.frame(dat_split$splits[2])
class <- "Druid" specify_class <- function(class){ deck dat_split <- dat %>% filter(Class == class) %>% mutate( deckname = as_factor(deckname), Class = as_factor(Class) ) %>% vfold_cv(v = 5) data <- dat_split %>% mutate(df_ana = map(splits, analysis), df_ass = map(splits, assessment)) map_dfr((1:nrow(data)),~predictions_tree(as.data.frame(data$df_ana[[.x]]),as.data.frame(data$df_ana[[.x]]),class)) }
class <- "Druid" cards_matrix <- function(dat,class){ matrix <- dat %>% filter(Class == class) %>% select(contains("name_")) %>% mutate_all(~replace_na(., 0)) %>% as.matrix() return(matrix) } pc_df <- function(dat,class){ pcs <- prcomp(cards_matrix(dat,class)) pc_df <- pcs$x %>% as_tibble() %>% mutate( deckname = filter(dat, Class == class)$deckname ) return(pc_df) }
predictions_tree <- function(training,test,class){ ctree <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") tree_fit <- ctree %>% fit(deckname ~ ., training) my_preds <- tree_fit %>% predict(new_data = test) %>% mutate(true_class = test$deckname) accuracy <- my_preds %>% yardstick::accuracy(truth = true_class, estimate = .pred_class) prediction_accuracy <- tibble(Class = class,accuracy = accuracy[[1,3]], count = nrow(test)) return(prediction_accuracy) }
predictions_knn <- function(training,test,class,pc = FALSE){ knn <- nearest_neighbor(neighbors = 3)%>% set_engine("kknn") %>% set_mode("classification") if(pc){ neighbor_fit <- knn %>% fit(deckname ~ ., training) } else if(!pc){ neighbor_fit <- knn %>% fit(deckname ~ ., training) } my_preds <- neighbor_fit %>% predict(new_data = test) %>% mutate(true_class = test$deckname) accuracy <- my_preds %>% yardstick::accuracy(truth = true_class, estimate = .pred_class) prediction_accuracy <- tibble(Class = class,accuracy = accuracy[[1,3]], count = nrow(test)) return(prediction_accuracy) }
accuracy_cv_table <- function(class,model = "tree"){ dat_split <- dat %>% mutate( deckname = as_factor(deckname), Class = as_factor(Class) ) %>% filter(Class == class) if(model != "knn_pc"){ dat_split <- dat_split %>% vfold_cv(v = 5, strata = deckname) } else if(model == "knn_pc"){ dat_split <- dat_split %>% pc_df(class) %>% select(1:10,deckname) %>% vfold_cv(v = 5, strata = deckname) } data <- dat_split %>% mutate(df_ana = map(splits, analysis), df_ass = map(splits, assessment)) cv_store <- c() counts <- c() for(i in 1:nrow(data)){ if(model == "tree"){ preds <- predictions_tree(data$df_ana[[i]],data$df_ass[[i]],class) } else if(model == "knn" ){ preds <- predictions_knn(data$df_ana[[i]],data$df_ass[[i]],class,FALSE) } else if(model == "knn_pc"){ preds <- predictions_knn(data$df_ana[[i]],data$df_ass[[i]],class,TRUE) } cv_store[i] <- preds$accuracy counts[i] <- nrow(data$df_ass[[i]]) } cv_store <- cv_store %>% unlist() accuracy_table <- tibble(class, avg_test = mean(counts), min_acc=min(cv_store), max_acc=max(cv_store), mean_acc = mean(cv_store), sd_acc = sd(cv_store)) return(accuracy_table) } accuracy_cv_table_tune <- function(class,model = "tree", depth = 30, min_n = 2, k = NULL){ dat_split <- dat %>% mutate( deckname = as_factor(deckname), Class = as_factor(Class) ) %>% filter(Class == class) if(model != "knn_pc"){ dat_split <- dat_split %>% vfold_cv(v = 5, strata = deckname) } else if(model == "knn_pc"){ dat_split <- dat_split %>% pc_df(class) %>% select(1:10,deckname) %>% vfold_cv(v = 5, strata = deckname) } data <- dat_split %>% mutate(df_ana = map(splits, analysis), df_ass = map(splits, assessment)) cv_store <- c() counts <- c() for(i in 1:nrow(data)){ if(model == "tree"){ preds <- predictions_tree_tune(data$df_ana[[i]],data$df_ass[[i]],class,depth = depth, min_n = min_n) } else if(model == "knn" ){ preds <- predictions_knn_tune(data$df_ana[[i]],data$df_ass[[i]],class,FALSE, k = k) } else if(model == "knn_pc"){ preds <- predictions_knn_tune(data$df_ana[[i]],data$df_ass[[i]],class,TRUE, k = k ) } cv_store[i] <- preds$accuracy counts[i] <- nrow(data$df_ass[[i]]) } cv_store <- cv_store %>% unlist() accuracy_table <- tibble(class, avg_test = mean(counts), min_acc=min(cv_store), max_acc=max(cv_store), mean_acc = mean(cv_store), sd_acc = sd(cv_store)) return(accuracy_table) }
tree <- map_dfr(classes,~accuracy_cv_table(.x,"tree")) knn <- map_dfr(classes,~accuracy_cv_table(.x,"knn")) knn_pc <- map_dfr(classes,~accuracy_cv_table(.x,"knn_pc"))
bind_rows(tree %>% mutate(model_type = "tree"), knn %>% mutate(model_type = "knn"), knn_pc %>% mutate(model_type = "knn_pc"))
set.seed(300) tune_classes_tree <- list() for(i in 1:length(classes)){ ctree <- decision_tree(tree_depth = 30, min_n = tune(), cost_complexity = tune()) %>% set_engine("rpart") %>% set_mode("classification") tree_grid <- grid_regular(min_n(), cost_complexity(), levels = 5) colnames(dat) <- make.names(colnames(dat)) folds <- vfold_cv(dat %>% filter(Class == classes[i]) %>% select(-Class) %>% mutate(deckname = as.factor(deckname)),v = 3, strata = deckname) tree_wf <- workflow() %>% add_model(ctree) %>% add_formula(deckname ~ .) tree_res <- tree_wf %>% tune_grid( resamples = folds, grid = tree_grid ) tune_classes_tree[[i]]<- tree_res %>% collect_metrics() %>% mutate(model_type = "tree") } names(tune_classes_tree) <- classes
set.seed(300) tune_classes_kknn <- list() for(i in 1:length(classes)){ knn_tune <- nearest_neighbor( neighbors = tune()) %>% set_engine("kknn") %>% set_mode("classification") kknn_grid <- grid_regular(neighbors(), levels = 5) colnames(dat) <- make.names(colnames(dat)) folds <- vfold_cv(dat %>% filter(Class == classes[i]) %>% select(-Class) %>% mutate(deckname = as.factor(deckname)), v = 3,strata = deckname) knn_wf <- workflow() %>% add_model(knn_tune) %>% add_formula(deckname ~ .) kknn_res <- knn_wf %>% tune_grid( resamples = folds, grid = kknn_grid ) tune_classes_kknn[[i]] <- kknn_res %>% collect_metrics() %>% mutate(model_type = "kknn") } names(tune_classes_kknn) <- classes tune_classes_kknn[["Demon Hunter"]]
set.seed(300) tune_classes_PCA <- list() for(i in 1:length(classes)){ knn_tune <- nearest_neighbor( neighbors = tune()) %>% set_engine("kknn") %>% set_mode("classification") kknn_grid <- grid_regular(neighbors(), levels = 5) colnames(dat) <- make.names(colnames(dat)) folds <- vfold_cv(dat %>% pc_df(classes[i]) %>% select(1:10,deckname) %>% mutate(deckname = as.factor(deckname)), v = 3,strata = deckname) knn_wf <- workflow() %>% add_model(knn_tune) %>% add_formula(deckname ~ .) kknn_res <- knn_wf %>% tune_grid( resamples = folds, grid = kknn_grid ) tune_classes_PCA[[i]] <- kknn_res %>% collect_metrics() %>% mutate(model_type = "PCA") } names(tune_classes_PCA) <- classes
dh_acc <- bind_rows(tune_classes_tree[["Demon Hunter"]], tune_classes_kknn[["Demon Hunter"]], tune_classes_PCA[["Demon Hunter"]]) druid_acc <-bind_rows(tune_classes_tree[["Druid"]], tune_classes_kknn[["Druid"]], tune_classes_PCA[["Druid"]]) hunter_acc <- bind_rows(tune_classes_tree[["Hunter"]], tune_classes_kknn[["Hunter"]], tune_classes_PCA[["Hunter"]]) mage_acc <- bind_rows(tune_classes_tree[["Mage"]], tune_classes_kknn[["Mage"]], tune_classes_PCA[["Mage"]]) paladin_acc <- bind_rows(tune_classes_tree[["Paladin"]], tune_classes_kknn[["Paladin"]], tune_classes_PCA[["Paladin"]]) priest_acc <- bind_rows(tune_classes_tree[["Priest"]], tune_classes_kknn[["Priest"]], tune_classes_PCA[["Priest"]]) rogue_acc <- bind_rows(tune_classes_tree[["Rogue"]], tune_classes_kknn[["Rogue"]], tune_classes_PCA[["Rogue"]]) warlock_acc <- bind_rows(tune_classes_tree[["Warlock"]], tune_classes_kknn[["Warlock"]], tune_classes_PCA[["Warlock"]]) warrior_acc <- bind_rows(tune_classes_tree[["Warrior"]], tune_classes_kknn[["Warrior"]], tune_classes_PCA[["Warrior"]]) shaman_acc <- bind_rows(tune_classes_tree[["Shaman"]], tune_classes_kknn[["Shaman"]], tune_classes_PCA[["Shaman"]])
dh_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean)) %>% filter(model_type != "PCA") druid_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) ) %>% filter(model_type != "PCA") hunter_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) ) %>% filter(model_type != "PCA") warlock_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA") mage_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA") paladin_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA") priest_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA") rogue_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA") warrior_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA") shaman_acc %>% filter(model_type != "PCA") %>% filter( .metric == "accuracy") %>% filter(mean == max(mean) )%>% filter(model_type != "PCA")
store_plots_tree <- list() for (i in 1:length(classes)){ plot <- tune_classes_tree[[classes[i]]]%>% filter(.metric == 'accuracy') %>% ggplot(aes(x= min_n, y = mean, color = as.factor(tree_depth))) + geom_line(size = 1.5, alpha = 0.6) + geom_point(size = 2) + facet_wrap(~ .metric, scales = "free", nrow = 2) store_plots_tree[[i]] <- plot } names(store_plots_tree) <- classes
dat_split %>% pc_df(Druid) %>% select(1:10,deckname)
counter <- 1 accuracy_table <- tibble("class", "avg_test" , "min_acc", "max_acc") for(i in c(5,10,15,20,25,30)){ dat_split <- dat %>% mutate( deckname = as_factor(deckname), Class = as_factor(Class) ) %>% filter(Class == class) if(model != "knn_pc"){ dat_split <- dat_split %>% vfold_cv(v = 5, strata = deckname) } else if(model == "knn_pc"){ dat_split <- dat_split %>% pc_df(class) %>% select(1:10,deckname) %>% vfold_cv(v = 5, strata = deckname) } data <- dat_split %>% mutate(df_ana = map(splits, analysis), df_ass = map(splits, assessment)) cv_store <- c() counts <- c() for(i in 1:nrow(data)){ preds <- predictions_tree_tune(data$df_ana[[i]],data$df_ass[[i]],class, depth = i) cv_store[i] <- preds$accuracy counts[i] <- nrow(data$df_ass[[i]]) } cv_store <- cv_store %>% unlist() accuracy_table <- tibble(class, avg_test = mean(counts), min_acc=min(cv_store), max_acc=max(cv_store)) }
dat_split <- dat %>% mutate( deckname = as_factor(deckname), Class = as_factor(Class) ) %>% filter(Class == class) %>% select(-Class) dat_split <- dat_split %>% select(where( ~ !is.numeric(.x) || sum(.x, na.rm = TRUE) > 0)) %>% initial_split(strata = deckname) dat_train <- training(dat_split) dat_test <- testing(dat_split) training <- dat_train test <- dat_test accuracy_table <- function(class){ dat_split <- dat %>% mutate( deckname = as_factor(deckname), Class = as_factor(class) ) %>% filter(Class == class) %>% initial_split() dat_train <- training(dat_split) dat_test <- testing(dat_split) predictions_tree(dat_train,dat_test,class) } classes <- c("Druid", "Demon Hunter", "Mage", "Hunter", "Shaman", "Rogue", "Warrior", "Warlock", "Priest", "Paladin") classification_accuracy <- map_dfr(classes, ~accuracy(.x)) sum(classification_accuracy$accuracy*classification_accuracy$count)/sum(classification_accuracy$count)
classify <- function(deckcode){ tree <- nearest_neighbor(neighbors = 5) %>% set_engine("kknn") %>% set_mode("classification") dummy <- get_dummys(deckcode,"deck") tree_fit <- ctree %>% fit(as.factor(deckname) ~ ., dat) my_preds <- tree_fit %>% predict(new_data = bind_rows(dat,dummy) %>% filter(deckname =="deck")) return(my_preds) } deckcode <- "AAECAZICHkD+AcQG5Ai5lAOvogPvogP0ogP8owPbpQP2rQP9rQOMrgORsQP5tQPougPsugPuugObzgP1zgOj0QPw1AOd2AOJ4AOK4AOV4AOk4QPR4QOL5AOM5AMAAA==" class <- classify("AAECAaIHBKeoA/vEA9nRA4TkAw20AY+XA/uaA/6aA/WnA62oA7euA865A9C5A6TRA+XTA+fdA4LkAwA=") class
#druid druid_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") druid_fit <- druid_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Druid")) #dh dh_model <- nearest_neighbor(neighbors = 3) %>% set_engine("kknn") %>% set_mode("classification") dh_fit <- dh_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Demon Hunter") %>% select(-Class)) #mage mage_model <- decision_tree(tree_depth = 15, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") mage_fit <- mage_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Mage")) #hunter hunter_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") hunter_fit <- hunter_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Hunter")) #shaman shaman_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") shaman_fit <- shaman_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Shaman")) #rogue rogue_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") rogue_fit <- rogue_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Rogue")) #warrior warrior_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") warrior_fit <- warrior_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Warrior")) #warlock warlock_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") warlock_fit <- warlock_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Warlock")) #priest priest_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") priest_fit <- priest_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Priest")) #paladin paladin_model <- decision_tree(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") paladin_fit <- paladin_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Paladin"))
classify <- function(deckcode){ dummy <- get_dummys(deckcode,"deck") dummy <- bind_rows(dat %>% filter(Class == dummy$Class),dummy) %>% filter(deckname =="deck") %>% mutate_all(~replace_na(., 0)) if(dummy$Class =="Druid"){ classification <- druid_fit %>% predict(new_data = dummy) } else if(dummy$Class =="Demon Hunter"){ classification <- dh_fit %>% predict(new_data = dummy) } else if(dummy$Class == "Mage"){ classification <- mage_fit %>% predict(new_data = dummy) } else if(dummy$Class == "Hunter"){ classification <- hunter_fit %>% predict(new_data = dummy) } else if(dummy$Class == "Shaman"){ classification <- shaman_fit %>% predict(new_data = dummy) } else if(dummy$Class == "Rogue"){ classification <- rogue_fit %>% predict(new_data = dummy) } else if(dummy$Class == "Warrior"){ classification <- warrior_fit %>% predict(new_data = dummy) } else if(dummy$Class == "Warlock"){ classification <- warlock_fit %>% predict(new_data = dummy) }else if(dummy$Class == "Priest"){ classification <- priest_fit %>% predict(new_data = dummy) }else if(dummy$Class == "Paladin"){ classification <- paladin_fit %>% predict(new_data = dummy) } classification <- as.character(classification$.pred_class) return(classification) }
classify("AAECAea5AwAP/acD+a4Di7oD4LwD174D3r4D98gD8skD3MwDgtADxtEDzd0Dz90D2d4DyuMDAA==") dummy <- get_dummys("AAECAf0GBsUE2wbcBvqkA/zeA/bjAwzVA4oHoaEDrMsD7NEDzNIDzdIDxt4D5uED9eMD+OMDkuQDAA==","deck") deckcode <- "AAECAea5AwAP/acD+a4Di7oD4LwD174D3r4D98gD8skD3MwDgtADxtEDzd0Dz90D2d4DyuMDAA==" dummy <- get_dummys(deckcode,"deck") dummy <- bind_rows(dat %>% filter(Class == dummy$Class),dummy) %>% filter(deckname =="deck") %>% mutate_all(~replace_na(., 0))
dat %>% filter(Class == "Warlock") %>% group_by(deckname) %>% summarise(count = n())
sleepy_classify <- function(deckcode){ Sys.sleep(.5) classify(deckcode) } df_lineup <- read_csv("lineup_details.csv") wider <- df_lineup %>% filter(Tournament == 1) %>% mutate(Date = as.character(Date)) %>% pivot_wider(c(Player,Tournament), values_from = 4:5) %>% head(30) tournament_1_lineups <- wider %>% mutate(`Deck Code_` = map_chr(`Deck Code_`, paste, collapse = "SPLIT"), Date_ = map_chr(`Date_`,unique)) %>% separate(`Deck Code_`,sep = "SPLIT", into = c("Deck1","Deck2","Deck3")) %>% mutate(Date_ = as.Date(Date_)) %>% rename(Date = Date_) %>% mutate(`Deck 1 Pred` = map_chr(Deck1,sleepy_classify)) tournament_1_lineups_deck_2 <- tournament_1_lineups %>% mutate(`Deck 2 Pred` = map_chr(Deck2,sleepy_classify)) Sys.sleep(5) tournament_1_lineups_deck_3 <- tournament_1_lineups_deck_2 %>% mutate(`Deck 3 Pred` = map_chr(Deck3,sleepy_classify)) write_csv(tournament_1_lineups_deck_3, here("dev" ,"data", "lineupdecks.csv"))
mage_model <- nearest_neighbor(neighbors = 5) %>% set_engine("kknn") %>% set_mode("classification") mage_fit <- mage_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Mage") # %>% pc_df("Mage") %>% select(1:10,deckname) %>% select(-Class) ) deckcode <- "AAECAf0EAsW4A5LLAw6rBLQE5gSWBaQHvAifmwP/nQPBuAPgzAPHzgPNzgP30QOF5AMA" dummy <- get_dummys(deckcode,"deck") dummy <- bind_rows(dat %>% filter(Class == dummy$Class),dummy) %>% # pc_df("Mage") %>% filter(deckname =="deck") classification <- mage_fit %>% predict(new_data = dummy)
deckcode <- "AAECAea5AwbMugPevgPaxgPyyQP21gPF3QMM/acD+a4D4LwD2cYD98gD3MwD+84DgtADz90DyuMD8+MDkOQDAA==" dummy <- get_dummys(deckcode,"deck") dummy <- bind_rows(dat %>% filter(Class == dummy$Class),dummy) %>% # pc_df("Mage") %>% filter(deckname =="deck") paladin_model <- nea(tree_depth = 30, min_n = 2) %>% set_engine("rpart") %>% set_mode("classification") paladin_fit <- paladin_model %>% fit(as.factor(deckname) ~ ., dat %>% filter(Class == "Paladin"))
### Mozaki OTK Mage # Class: Mage # Format: Standard # Year of the Phoenix # # 2x (1) Ray of Frost # 2x (1) Primordial Studies # 2x (1) Mirror Image # 2x (1) Magic Trick # 2x (1) Devolving Missiles # 2x (1) Brain Freeze # 2x (1) Arcane Missiles # 2x (2) Sorcerer's Apprentice # 2x (2) Incanter's Flow # 2x (2) Frostbolt # 1x (2) Evocation # 2x (2) Cram Session # 2x (2) Conjure Mana Biscuit # 2x (3) Arcane Intellect # 1x (5) Mozaki, Master Duelist # 2x (6) Gadgetzan Auctioneer # AAECAf0EAsW4A5LLAw6rBLQE5gSWBaQHvAifmwP/nQPBuAPgzAPHzgPNzgP30QOF5AMA # To use this deck, copy it to your clipboard and create a new deck in Hearthstone # Find this deck on https://hsreplay.net/decks/tVtyquZMyjdsgLrkmUv8zd/
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.