我一直在使用ada
R套餐,最近一直使用caret
。根据文档,caret
的{{1}}函数应该有一个使用ada的选项。但是,当我使用与train()
电话中相同的语法时,插入符号正在嘲笑我。
以下是使用ada()
示例数据集的演示。
wine
我猜测火车()需要额外的输入,但是抛出的警告并没有给我任何关于缺失的提示。另外,我可能会错过一个依赖项,但没有暗示应该在那里......
答案 0 :(得分:2)
查找?train
并搜索ada
您会看到:
Method Value: ada from package ada with tuning parameters: iter, maxdepth, nu (classification only)
因此,您必须错过nu
参数和maxdepth
参数。
答案 1 :(得分:2)
所以这似乎有效:
wineTrainInd <- wine_train[!colnames(wine_train) %in% "good"]
wineTrainDep <- as.factor(wine_train$good)
results_ada = train(x = wineTrainInd, y = wineTrainDep, method="ada")
results_ada
Boosted Classification Trees
5199 samples
9 predictors
2 classes: 'Bad', 'Good'
No pre-processing
Resampling: Bootstrapped (25 reps)
Summary of sample sizes: 5199, 5199, 5199, 5199, 5199, 5199, ...
Resampling results across tuning parameters:
iter maxdepth Accuracy Kappa Accuracy SD Kappa SD
50 1 0.732 0.397 0.00893 0.0294
50 2 0.74 0.422 0.00853 0.0187
50 3 0.747 0.437 0.00759 0.0171
100 1 0.736 0.411 0.0065 0.0172
100 2 0.742 0.428 0.0075 0.0173
100 3 0.748 0.442 0.00756 0.0158
150 1 0.737 0.417 0.00771 0.0184
150 2 0.745 0.435 0.00851 0.0198
150 3 0.752 0.449 0.00736 0.016
Tuning parameter 'nu' was held constant at a value of 0.1
Accuracy was used to select the optimal model using the largest value.
The final values used for the model were iter = 150, maxdepth = 3 and nu
= 0.1.
原因在于另一个问题:
caret::train: specify model-generation-parameters
我认为当train
试图自己找到最佳调整参数时,您将调整参数作为参数传递。如果您确实想要定义自己的参数,可以为网格搜索定义参数网格。
答案 2 :(得分:1)
wine$good
中的数据类型是什么?如果它是factor
,请尝试明确提及它是:
wine$good <- as.factor(wine$factor)
stopifnot(is.factor(wine$good))
原因:通常,R包需要一些帮助来区分分类与回归场景,并且在插入符中可能存在一些通用代码,这些代码可能错误地将该练习识别为回归问题(忽略了ada仅进行分类的事实) )。
答案 3 :(得分:0)
请在tuneGrid中包含参数
Grid <- expand.grid(maxdepth=25,nu=2,iter=100)
results_ada = train(good~., data=wine_train, method="ada",
trControl=cv_opts,tuneGrid=Grid)
这样可行。