我正在尝试构建一个模型,以预测电子商务网站上的产品是否会被售出,输出结果为1或0。
我的数据包含一些分类变量,其中一个变量有大量水平,几个是二元变量,另外一个是连续变量(价格),输出变量为1或0,表示产品清单是否被售出。
以下是我的代码:
inTrainingset<-createDataPartition(C$Sale, p=.75, list=FALSE)
CTrain<-C[inTrainingset,]
CTest<-C[-inTrainingset,]
gbmfit<-gbm(Sale~., data=C,distribution="bernoulli",n.trees=5,interaction.depth=7,shrinkage= .01,)
plot(gbmfit)
gbmTune<-train(Sale~.,data=CTrain, method="gbm")
ctrl<-trainControl(method="repeatedcv",repeats=5)
gbmTune<-train(Sale~.,data=CTrain,
method="gbm",
verbose=FALSE,
trControl=ctrl)
ctrl<-trainControl(method="repeatedcv", repeats=5, classProbs=TRUE, summaryFunction = twoClassSummary)
gbmTune<-trainControl(Sale~., data=CTrain,
method="gbm",
metric="ROC",
verbose=FALSE ,
trControl=ctrl)
grid<-expand.grid(.interaction.depth=seq(1,7, by=2), .n.trees=seq(100,300, by=50), .shrinkage=c(.01,.1))
gbmTune<-train(Sale~., data=CTrain,
method="gbm",
metric="ROC",
tunegrid= grid,
verebose=FALSE,
trControl=ctrl)
set.seed(1)
gbmTune <- train(Sale~., data = CTrain,
method = "gbm",
metric = "ROC",
tuneGrid = grid,
verbose = FALSE,
trControl = ctrl)
我遇到了两个问题。第一个问题是当我尝试添加summaryFunction=twoClasssummary并进行调整时,出现以下情况:
Error in trainControl(Sale ~ ., data = CTrain, method = "gbm", metric = "ROC", :
unused arguments (data = CTrain, metric = "ROC", trControl = ctrl)
如果我决定绕过summaryFunction,那么第二个问题是当我尝试运行模型时,会出现以下错误:
Error in evalSummaryFunction(y, wts = weights, ctrl = trControl, lev = classLevels, :
train()'s use of ROC codes requires class probabilities. See the classProbs option of trainControl()
In addition: Warning message:
In train.default(x, y, weights = w, ...) :
cannnot compute class probabilities for regression
我尝试在Excel中将输出变量从数值1或0更改为文本值,但这没有任何影响。
请帮忙解决它将此模型解释为回归模型的问题,或者是我遇到的第一个错误信息。
谢谢!
Will
will@nubimetrics.com
data()
来查看caret
中的数据集,例如GermanCredit
。 - Hack-Rgbm
是什么?它不是来自于caret
包吗?更新:啊,我明白了,它来自于gbm
包,似乎是梯度提升。 - Hack-R