Why use glm?
glm() is a more advanced version of lm() that allows for more varied types of regression models, aside from plain vanilla ordinary least squares regression
Be sure to pass the argument family = "binomial" to glm() to specify that you want to do logistic (rather than linear) regression. For example:
# Fit glm model: model, using trainSet: `train`
model <- glm(Class ~ ., family = 'binomial', train)
# Predict on test: p, use testSet: `test`
p <- predict(model, test, type = "response")
Don’t worry about warnings like glm.fit: algorithm did not converge or glm.fit: fitted probabilities numerically 0 or 1 occurred. These are common on smaller datasets and usually don’t cause any issues. They typically mean your dataset is perfectly seperable, which can cause problems for the math behind the model, but R’s glm() function is almost always robust enough to handle this case with no problems.
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMgV2h5IHVzZSBgZ2xtYD8gCmBnbG0oKWAgaXMgYSBtb3JlIGFkdmFuY2VkIHZlcnNpb24gb2YgYGxtKClgIHRoYXQgYWxsb3dzIGZvciBtb3JlIHZhcmllZCB0eXBlcyBvZiByZWdyZXNzaW9uIG1vZGVscywgYXNpZGUgZnJvbSBwbGFpbiB2YW5pbGxhIG9yZGluYXJ5IGxlYXN0IHNxdWFyZXMgcmVncmVzc2lvbgoKQmUgc3VyZSB0byBwYXNzIHRoZSBhcmd1bWVudCBgZmFtaWx5ID0gImJpbm9taWFsImAgdG8gYGdsbSgpYCB0byBzcGVjaWZ5IHRoYXQgeW91IHdhbnQgdG8gZG8gbG9naXN0aWMgKHJhdGhlciB0aGFuIGxpbmVhcikgcmVncmVzc2lvbi4gRm9yIGV4YW1wbGU6CgpgYGB7ciwgZXZhbD1GfQoKCiMgRml0IGdsbSBtb2RlbDogbW9kZWwsIHVzaW5nIHRyYWluU2V0OiBgdHJhaW5gCm1vZGVsIDwtIGdsbShDbGFzcyB+IC4sIGZhbWlseSA9ICdiaW5vbWlhbCcsIHRyYWluKQoKIyBQcmVkaWN0IG9uIHRlc3Q6IHAsIHVzZSB0ZXN0U2V0OiBgdGVzdGAKcCA8LSBwcmVkaWN0KG1vZGVsLCB0ZXN0LCB0eXBlID0gInJlc3BvbnNlIikKYGBgCkRvbid0IHdvcnJ5IGFib3V0IHdhcm5pbmdzIGxpa2UgZ2xtLmZpdDogYWxnb3JpdGhtIGRpZCBub3QgY29udmVyZ2Ugb3IgZ2xtLmZpdDogZml0dGVkIHByb2JhYmlsaXRpZXMgbnVtZXJpY2FsbHkgMCBvciAxIG9jY3VycmVkLiBUaGVzZSBhcmUgY29tbW9uIG9uIHNtYWxsZXIgZGF0YXNldHMgYW5kIHVzdWFsbHkgZG9uJ3QgY2F1c2UgYW55IGlzc3Vlcy4gVGhleSB0eXBpY2FsbHkgbWVhbiB5b3VyIGRhdGFzZXQgaXMgcGVyZmVjdGx5IHNlcGVyYWJsZSwgd2hpY2ggY2FuIGNhdXNlIHByb2JsZW1zIGZvciB0aGUgbWF0aCBiZWhpbmQgdGhlIG1vZGVsLCBidXQgUidzIGdsbSgpIGZ1bmN0aW9uIGlzIGFsbW9zdCBhbHdheXMgcm9idXN0IGVub3VnaCB0byBoYW5kbGUgdGhpcyBjYXNlIHdpdGggbm8gcHJvYmxlbXMuCgoK