2013-03-13 103 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