在R中使用逻辑回归模型获取测试误差

我在R中使用R自带的Auto数据集进行逻辑回归实验。

我已经将数据集分为训练部分(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])

我得到了以下错误:

在table(testpred, test[, 1])中出错:
所有参数必须具有相同的长度

我做错了什么?


回答:

如果有人遇到相同的问题,我来回答我自己的问题:

当我在glm中设置参数时,我是在指定我想预测的内容,即使用train数据预测Auto$mpg标签,因此,我的glm调用必须是:

attach(Auto)mlr<-glm(mpg ~ displacement + horsepower + weight, data=Auto, subset=indexes_train)

现在,如果我调用predicttable等,就不会有结构大小的问题。修正这个错误后,我的代码就可以正常工作了。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注