在R

时间:2016-05-19 09:18:13

标签: r machine-learning logistic-regression predict

我在R中使用R中包含Auto数据集的逻辑回归进行了一些实验。

我获得培训部分(80%)和测试部分(20%)逐个标准化每个部分。

我可以在没有任何问题的情况下创建模型:

mlr<-glm(train$mpg ~ 
train$displacement + train$horsepower + train$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")

这给了我这个警告:

  

&#39; newdata&#39;有79行,但找到的变量有313行

但它不起作用,因为testpred具有相同的trainpred长度(应该更少)。当我想使用testpred计算测试中的错误时使用以下行:

etabtest <- table(testpred, test[,1])

我收到以下错误:

  

表格错误(testpred,test [,1]):
          所有参数必须具有相同的长度

我做错了什么?

2 个答案:

答案 0 :(得分:0)

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

当我将参数放在glm中时,我说的是我想要预测的内容,这是带有train数据的Auto $ mpg标签,因此,我的glm调用必须是:

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

如果现在我拨打predicttable等,则不存在结构大小问题。修改这个错误对我有用。

答案 1 :(得分:0)

正如imo所说: “更重要的是,您可能会检查是否创建了逻辑回归。我认为它实际上是OLS。您必须设置链接和族参数。”

设置家族='二项式'