【问题标题】:How to do modify an existing function from a function?如何从函数修改现有函数?
【发布时间】:2017-01-29 18:20:40
【问题描述】:

我正在尝试增加目前在 C50 包中设置为 100 的试验参数限制。我尝试使用修复来做到这一点。

library(C50)
data(churn)
fix(C5.0.default)  # i change the maxtrials <- 200
treeModel <- C5.0(x = churnTrain[, -20], y = churnTrain$churn, trials = 150)

然后,当试验少于 200 时,我得到以下错误。

could not find function "makeNamesFile"

我重新启动 R,然后尝试使用 fixInNamespace 并将试验次数更改为 200。

fixInNamespace("C5.0.default", pos="package:C50")    
treeModel <- C5.0(x = churnTrain[, -20], y = churnTrain$churn, trials = 150)

该模型适用于低于 100 的试验,但对高于 100 的试验给出跟随错误。这是 C5.0 在用户输入高于 100 的试验时给出的标准错误。

number of boosting iterations must be between 1 and 100

我想增加 C5 模型的试验次数(增强)。我怎么做?这可能是一个实现限制,但由于 xgboost 可以处理超过 100 次提升迭代,因此 C5 可能有办法处理这个问题。

我可以通过修复调用将迭代次数增加到 100 次以上。但问题是我需要运行 C50 包源版本中的所有 R 脚本。我能做些什么来避免这种情况。我尝试从源代码安装 C50 包并尝试过,但没有成功。

【问题讨论】:

  • 请问您是从哪里得到CS50 package的?
  • 请解释“不[原文如此!] 工作”是什么意思。 fixInNamespace("C5.0.default", pos="package:C50") 在我的系统上运行良好。
  • 泛型称为C5.0 而不是C5。怎么调用函数?
  • 我无法重现此内容。因此,您需要提供一个可重现的示例。

标签: r methods decision-tree


【解决方案1】:

通过调整this 链接中的源代码,我可以获得超过 100 条线索。您需要获取 R 文件,然后您可以更改默认的跟踪数量以获得超过 100 次试验。

# Allow for more than 100 Boosting
setwd('Path to R files')
files <- list.files(pattern = "\\.R$")
lapply(files, source)
fix(C5.0.default)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    • 2021-11-23
    • 2011-05-07
    相关资源
    最近更新 更多