2013-03-13 111 views
1

我目前正在开发一个项目,我必须比较使用不同算法生成的分类模型。我想知道我怎么可以保存在R.使用C5.0包产生的规则/树的文本版本从C5.0打印规则/树输出R

目前,我可以去设置和培养模式如下:

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" 

任何意见总是赞赏。

回答

2
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") 
+0

真棒。谢谢! – 2013-03-13 18:00:34