【问题标题】:Printing Rules / Tree from C5.0 Output in R从 R 中的 C5.0 输出打印规则/树
【发布时间】:2016-11-25 18:37:44
【问题描述】:

我目前正在从事一个项目,我必须比较使用不同算法生成的分类模型。我想知道如何保存使用 R 中的 C5.0 包生成的规则/树的文本版本。

目前我可以按如下方式设置和训练模型:

c50model = C5.0(x=X, y=Y, rules=TRUE)

然后我可以通过调用获得完整版本:

summary(c50model)

此命令在命令窗口中生成了一个很好的模型输出,但我不确定如何将它保存到格式化的文本文件中。

我还知道 C50 包会在c50model$tree 中生成规则文件的字符版本,在c50model$tree 中生成树文件的字符串版本。理想情况下,我想将这些文件的内容打印到一个文本文件中,以便以后可以轻松地将其合并到研究论文中。然而不幸的是,这些字段的输出总是采用一种奇怪的格式......例如:

 "id=\"See5/C5.0 2.07 GPL Edition 2013-03-13\"\nentries=\"1\"\nrules=\"6\" default=\"0\"\nconds=\"2\" cover=\"322\" ok=\"321\" lift=\"1.55321\" class=\"0\"\ntype=\"2\" att=\"UniformityOfCellSize\" cut=\"3\" result=\"<\"\ntype=\"2\" att=\"BareNuclei\" cut=\"2\" result=\"<\"\nconds=\"2\" cover=\"305\" ok=\"304\" lift=\"1.55268\" class=\"0\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\"<\"\ntype=\"2\" att=\"BareNuclei\" cut=\"3\" result=\"<\"\nconds=\"2\" cover=\"310\" ok=\"307\" lift=\"1.54282\" class=\"0\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\"<\"\ntype=\"2\" att=\"NormalNucleoli\" cut=\"2\" result=\"<\"\nconds=\"2\" cover=\"137\" ok=\"132\" lift=\"2.65679\" class=\"1\"\ntype=\"2\" att=\"BareNuclei\" cut=\"3\" result=\">\"\ntype=\"2\" att=\"NormalNucleoli\" cut=\"2\" result=\">\"\nconds=\"2\" cover=\"179\" ok=\"170\" lift=\"2.62324\" class=\"1\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\">\"\ntype=\"2\" att=\"BareNuclei\" cut=\"2\" result=\">\"\nconds=\"2\" cover=\"175\" ok=\"166\" lift=\"2.61978\" class=\"1\"\ntype=\"2\" att=\"UniformityOfCellSize\" cut=\"3\" result=\">\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\">\"\n"

任何建议都会受到赞赏。

【问题讨论】:

    标签: r


    【解决方案1】:
    string <- id=\"See5/C5.0 2.07 GPL Edition 2013-03-13\"\nentries=\"1\"\nrules=\"6\" default=\"0\"\nconds=\"2\" cover=\"322\" ok=\"321\" lift=\"1.55321\" class=\"0\"\ntype=\"2\" att=\"UniformityOfCellSize\" cut=\"3\" result=\"<\"\ntype=\"2\" att=\"BareNuclei\" cut=\"2\" result=\"<\"\nconds=\"2\" cover=\"305\" ok=\"304\" lift=\"1.55268\" class=\"0\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\"<\"\ntype=\"2\" att=\"BareNuclei\" cut=\"3\" result=\"<\"\nconds=\"2\" cover=\"310\" ok=\"307\" lift=\"1.54282\" class=\"0\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\"<\"\ntype=\"2\" att=\"NormalNucleoli\" cut=\"2\" result=\"<\"\nconds=\"2\" cover=\"137\" ok=\"132\" lift=\"2.65679\" class=\"1\"\ntype=\"2\" att=\"BareNuclei\" cut=\"3\" result=\">\"\ntype=\"2\" att=\"NormalNucleoli\" cut=\"2\" result=\">\"\nconds=\"2\" cover=\"179\" ok=\"170\" lift=\"2.62324\" class=\"1\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\">\"\ntype=\"2\" att=\"BareNuclei\" cut=\"2\" result=\">\"\nconds=\"2\" cover=\"175\" ok=\"166\" lift=\"2.61978\" class=\"1\"\ntype=\"2\" att=\"UniformityOfCellSize\" cut=\"3\" result=\">\"\ntype=\"2\" att=\"UniformityOfCellShape\" cut=\"2\" result=\">\"\n"
    

    如果要txt文件输出:

    write(string, file="string.txt")
    

    您会注意到,每次看到\n 字符时都会换行,并且所有引号都通过在它们前面加上\ 进行转义。 print 不会对它们做任何事情,但 cat 会。如果您想事先查看文件中的内容,可以使用:

    cat(string)
    

    或者,如果您只想要摘要的输出:

    write(capture.output(summary(c50model)), "c50model.txt")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 2016-09-20
      • 2021-12-16
      • 1970-01-01
      • 2019-01-30
      • 2022-11-19
      • 2021-03-21
      相关资源
      最近更新 更多