I'm working on a case study from this MIT course. I'm practicing classification problems.
Here is the code for my model. (The dataset can be accessed from the link. I can add it to this post)
idx <- sample(seq(1, 3), size = nrow(Book), replace = TRUE,
prob = c(.45, .35, .2))
train <- Book[idx == 1,]
val <- Book[idx == 2,]
test <- Book[idx == 3,]
glm.fit1 <- glm(Florence ~., family = binomial,
data = train)
summary(glm.fit1)
glm.probs1 <- predict(glm.fit1, test, type='response')
glm.pred1 <- rep("0",nrow(test))
glm.pred1[glm.probs1 >.5] <- "1"
This is the confusion matrix
> table(glm.pred1, test$Florence)
glm.pred1 0 1
0 787 73
1 0 1
I have tried a few subsets of predictors and they have performed poorly.
I checked for linearity relationship between the logit of the outcome and each predictor variables.
# Select only numeric predictors
num.train <- num_vars(train)
# Bind the logit and tidying the data for plot
num.train <- num.train %>%
mutate(logit = log(probabilities/(1-probabilities))) %>%
gather(key = "predictors", value = "predictor.value",
-logit)
ggplot(num.train, aes(logit, predictor.value)) +
geom_point(size = 0.5, alpha = 0.5) +
geom_smooth(method = "loess") +
theme_bw() +
facet_wrap(~predictors, scales = "free_y")
The correlation between my predictors and response are largely weak and the relationships appear to be mostly non-linear. How do you adjust them to fit the assumptions for logistic regression?