【发布时间】:2013-10-14 04:50:49
【问题描述】:
我正在使用来自 Kaggle 的 Titanic 数据集,并想学习一个简单的逻辑回归模型。
我读入了训练和测试数据,train$Survived、train$Sex、test$Survived 和 test$Sex 都是因素。
我想执行一个非常简单的逻辑回归,其中性别是唯一的自变量。
fit <- glm(formula = Survived ~ Sex, family = binomial)
对我来说看起来不错:
> fit
Call: glm(formula = Survived ~ Sex, family = binomial)
Coefficients:
(Intercept) Sexmale
1.057 -2.514
Degrees of Freedom: 890 Total (i.e. Null); 889 Residual
Null Deviance: 1187
Residual Deviance: 917.8 AIC: 921.8
问题是,我无法将此学习模型应用于测试数据。当我执行以下操作时:
predict(fit, train$Sex)
我得到一个包含 891 个值的向量,它是训练集中的训练样本数量。
我似乎找不到任何有关如何正确执行此操作的信息。
任何帮助将不胜感激!
【问题讨论】:
-
在您的
fit代码中,数据在哪里?predict(fit, newdata = test)将完成这项工作。 -
谢谢,这成功了! predict 的文档中没有提到这一点,仅在 predict.glm 下... Predict 似乎输出的是浮点数,而不是最初用于学习模型的“标签”。有什么办法可以纠正这个吗? (原来我的 train$Survived 是整数类型...让我尝试使用因子...)不走运,仍然作为输出浮动...
-
是的,您必须为此使用
predict.glm。我错过了.glm。很抱歉。 -
你可以使用
predict.glm(..., type = "response")。像这样,您最终得到的概率表明您的记录最有可能是女性(高值)还是男性(低值)。 -
谢谢,这样更好。不过,如果有一种输出预测类别的方法,那就太好了。猜测对于可能有多个标签的逻辑回归非常有用
标签: r machine-learning logistic-regression prediction kaggle