在 R 中的逻辑回归模型中获取测试错误
Get test error in a logistic regression model in R
我正在使用 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' had 79 rows but variables found have 313 rows
但它不起作用,因为 testpred
与 trainpred
的长度相同(应该更少)。当我想使用 testpred
和以下行计算测试中的错误时:
etabtest <- table(testpred, test[,1])
我收到以下错误:
Error en table(testpred, test[, 1]) :
all arguments must have the same length
我做错了什么?
如果有人有同样的问题,我会回答我自己的问题:
当我将参数放入 glm
时,我说的是我想要预测的内容,这是带有 train
数据的 Auto$mpg 标签,因此,我的 glm
调用必须是:
attach(Auto)
mlr<-glm(mpg ~
displacement + horsepower + weight, data=Auto, subset=indexes_train)
如果我现在调用 predict
、table
等,则结构大小没有任何问题。修改这个错误对我有用。
正如我所说:
"More importantly, you might check that this creates a logistic regression. I think it is actually OLS. You have to set the link and family arguments."
设置家庭='binomial'
我正在使用 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' had 79 rows but variables found have 313 rows
但它不起作用,因为 testpred
与 trainpred
的长度相同(应该更少)。当我想使用 testpred
和以下行计算测试中的错误时:
etabtest <- table(testpred, test[,1])
我收到以下错误:
Error en table(testpred, test[, 1]) :
all arguments must have the same length
我做错了什么?
如果有人有同样的问题,我会回答我自己的问题:
当我将参数放入 glm
时,我说的是我想要预测的内容,这是带有 train
数据的 Auto$mpg 标签,因此,我的 glm
调用必须是:
attach(Auto)
mlr<-glm(mpg ~
displacement + horsepower + weight, data=Auto, subset=indexes_train)
如果我现在调用 predict
、table
等,则结构大小没有任何问题。修改这个错误对我有用。
正如我所说: "More importantly, you might check that this creates a logistic regression. I think it is actually OLS. You have to set the link and family arguments."
设置家庭='binomial'