r - rpart caret“参数参数不匹配”错误
问题描述
我在使用插入符号包 rpart 模型时遇到问题。当我运行第 1 部分中的代码时,我收到以下错误:
第1部分
library(rpart)
library(caret)
creditNames <- c("Checking", "Duration", "CreditHistory", "Purpose",
"CreditAmount", "Savings", "Employment",
"InstallmentRate", "GenderMarital", "OtherDebtors",
"YearsAtResidence", "RealEstate", "Age",
"OtherInstallment", "Housing", "ExistingCredit",
"Job", "NumLiable", "Phone", "Foreign", "Credit")
url="http://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/german.data"
credit_data <- read.table(url, sep=" ", header = FALSE,
col.names = creditNames,
stringsAsFactors = FALSE)
creditHistory <- c(A30="All Paid", A31="All Paid This Bank",
A32="Up To Date", A33="Late Payment",
A34="Critical Account")
credit_data$CreditHistory <- as.factor(creditHistory[credit_data$CreditHistory])
credit_data$Credit <- ifelse(credit_data$Credit == 1, "Good", "Bad")
credit_data$Credit <- factor(credit_data$Credit, levels = c("Good", "Bad"))
fitControl <- trainControl(method = 'cv', number = 6)
Grid <- expand.grid(
cp=.02)
vars <- names(credit_data)[c(5,13,3,7)]
samp.f <- as.formula(paste(names(credit_data)[21], paste(vars, collapse = " + "),sep="~"))
myvars <- c("Credit", "CreditAmount", "Age") #"CreditHistory", , "Employment"
samp.m <- train(samp.f,
data=credit_data,
method='rpart',
trControl = fitControl,
tuneLength=20,
metric = "Accuracy",
tuneGrid = Grid,
na.action = na.omit,
params=list(split='information'))
Fold1 的模型拟合失败:cp=0.02 错误(函数(公式、数据、权重、子集、na.action = na.rpart、:参数参数不匹配)
但是,当我运行第 2 部分中的代码时,我没有收到错误消息。
第2部分
for (test_cp in seq(.001,.02,.001)){
test<-rpart(samp.f, dat=credit, cp=test_cp, maxdepth=5)
}
有什么建议么?
我正在运行以下设置:
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
other attached packages:
[1] caret_6.0-79 ggplot2_2.2.1 lattice_0.20-35 rpart_4.1-13
解决方案
该rpart
函数没有 params 选项,但有一个 parms 选项。所以在火车上你需要使用 parms 而不是 params。
rpart(公式,数据,权重,子集,na.action = na.rpart,方法,模型 = FALSE,x = FALSE,y = TRUE,参数,控制,成本,...)
samp.m <- train(samp.f,
data=credit_data,
method='rpart',
trControl = fitControl,
tuneLength=20,
metric = "Accuracy",
tuneGrid = Grid,
na.action = na.omit,
#--># parms=list(split='information'))
推荐阅读
- ios - Swift 和 Objc 互操作性 - 可用性不仅仅在 objc 中起作用
- c# - 嵌套的 Try/Catch 块
- c++ - Boost.Test 的数据测试用例真的需要 C++11 吗?
- javascript - 我有这个表格,但我无法通过验证
- d3.js - D3 - 如何将“x”坐标“rect”值的开始设置为“x”轴上的匹配时间/日期
- c# - 如何将 Google Can Stoage 作为文件提供程序链接到 ASP.NET Core 2.2 项目?
- java - Java中如何避免数组越界异常
- ruby-on-rails - 如何在 Rails 中为部分参数提供默认值?
- php - 将控制器中阵列上的循环连接到刀片中的按钮
- python-3.x - Anaconda 中的 Jupyter Notebook 未加载