|
582 | 582 | fit <- e1071::naiveBayes(formula, data = dataset, laplace = options[["smoothingParameter"]])
|
583 | 583 | predictions <- as.factor(max.col(predict(fit, newdata = grid, type = "raw")))
|
584 | 584 | levels(predictions) <- unique(dataset[, options[["target"]]])
|
| 585 | + } else if (type == "logistic") { |
| 586 | + if (classificationResult[["family"]] == "binomial") { |
| 587 | + fit <- glm(formula, data = dataset, family = "binomial") |
| 588 | + predictions <- as.factor(round(predict(fit, grid, type = "response"), 0)) |
| 589 | + levels(predictions) <- unique(dataset[, options[["target"]]]) |
| 590 | + } else { |
| 591 | + fit <- VGAM::vglm(formula, data = dataset, family = "multinomial") |
| 592 | + logodds <- predict(fit, newdata = grid) |
| 593 | + ncategories <- ncol(logodds) + 1 |
| 594 | + probabilities <- matrix(0, nrow = nrow(logodds), ncol = ncategories) |
| 595 | + for (i in seq_len(ncategories - 1)) { |
| 596 | + probabilities[, i] <- exp(logodds[, i]) |
| 597 | + } |
| 598 | + probabilities[, ncategories] <- 1 |
| 599 | + row_sums <- rowSums(probabilities) |
| 600 | + probabilities <- probabilities / row_sums |
| 601 | + predicted_columns <- apply(probabilities, 1, which.max) |
| 602 | + categories <- levels(dataset[[options[["target"]]]]) |
| 603 | + predictions <- as.factor(categories[predicted_columns]) |
| 604 | + } |
585 | 605 | }
|
586 | 606 | shapes <- rep(21, nrow(dataset))
|
587 | 607 | if (type == "svm") {
|
|
0 commit comments