2013-03-13 2 views
1

의 출력 현재 다른 알고리즘을 사용하여 생성 된 분류 모델을 비교해야하는 프로젝트에서 작업하고 있습니다. 나는 R.에서 C5.0 패키지를 사용하여 생산되는 규칙/트리의 텍스트 버전을 절약 할 수있는 방법 궁금C5.0의 인쇄 규칙/트리 R

현재 다음과 같이 내가 설정하고 모델을 훈련에 대해 갈 수

:

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

나는 다음 호출하여 전체 버전을 얻을 수 있습니다 : 나는 형식의 텍스트 파일로 저장하는 방법 확실하지 오전하지만

summary(c50model) 

이 명령은 명령 창에서 모델의 좋은 출력을 생성합니다.

또한 C50 패키지는 c50model$tree에 rules 파일의 문자 버전을 생성하고 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

굉장합니다. 고맙습니다! –