You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用caret包rpart模型时遇‘Argument params not matched’错误求助

问题分析与解决办法

嘿,我来帮你搞定这个问题——你遇到的Argument params not matched错误其实是个参数传递的小坑!

错误根源

caret的train()函数根本没有params这个参数,你把要传给rpart的split='information'参数放错地方啦。train()会通过可变参数...把额外参数直接传给底层的建模函数(也就是rpart),所以不需要用params来打包这些参数。

快速修正

把你train()调用里的params=list(split='information')删掉,换成直接写split='information'就行。另外注意你定义的myvars变量现在没用到,要么用上要么清理掉,避免冗余。

修正后的核心代码如下:

samp.m <- train(samp.f, 
                data=credit_data, 
                method='rpart', 
                trControl = fitControl, 
                tuneLength=20, 
                metric = "Accuracy", 
                tuneGrid = Grid, 
                na.action = na.omit, 
                split='information')  # 直接把rpart的参数放在这里

额外小贴士

如果之后需要给rpart传递更多控制类参数(比如maxdepth、minsplit这类),有两种方式:

  • 直接加在train()的参数列表里,和split一样;
  • 用rpart.control()创建一个控制对象,然后通过train()的control参数传递,比如:
    # 先创建rpart的控制参数
    rpart_ctrl <- rpart.control(maxdepth=5, minsplit=10)
    # 再传入train
    samp.m <- train(samp.f, 
                    data=credit_data, 
                    method='rpart', 
                    trControl = fitControl, 
                    tuneGrid = Grid, 
                    control = rpart_ctrl,
                    split='information')
    

你单独跑rpart循环没问题,是因为直接调用rpart时可以直接指定参数,但train()有自己的参数规则,不能随便加它不认识的参数~

内容的提问来源于stack exchange,提问作者ktj1989

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:32:15