【发布时间】:2016-05-19 09:18:12
【问题描述】:
我正在使用 R 中包含的 Auto 数据集在 R 中执行一些逻辑回归实验。
我已经将训练部分 (80%) 和测试部分 (20%) 分别归一化每个部分。
我可以毫无问题地创建模型:
mlr<-glm(mpg ~
displacement + horsepower + weight, data =train)
我什至可以用训练集预测train$mpg:
trainpred<-predict(mlr,train,type="response")
并以此计算样本误差:
etab <- table(trainpred, train[,1])
insampleerror<-sum(diag(etab))/sum(etab)
当我想用测试集进行预测时,问题就来了。我使用以下行:
testpred<-predict(model_rl,test,type="response")
这给了我这个警告:
'newdata' 有 79 行,但找到的变量有 313 行
但它不起作用,因为testpred 的长度与trainpred 相同(应该更小)。当我想使用 testpred 计算测试中的错误时,使用以下行:
etabtest <- table(testpred, test[,1])
我收到以下错误:
错误表(testpred, test[, 1]) :
所有参数的长度必须相同
我做错了什么?
【问题讨论】:
-
一件事可能不会产生影响:将回归更改为
mlr<-glm(mpg ~ displacement + horsepower + weight, data =train)。如果您指定了 data 参数,则不需要train$。更重要的是,您可能会检查这是否会创建逻辑回归。我认为它实际上是OLS。您必须设置链接和家庭参数。 SO上有很多例子。
标签: r machine-learning logistic-regression predict