C5.0(링크)은 C4.5(Weka에서 J48)의 확장 버전으로, 기본적으로 Linux/Unix 기반입니다. 이를 Visual Studio 기반의 Windows에서 빌드하기 위해서는 다음과 같은 몇몇 작업이 필요합니다.
(주의) 본 공유된 소스는 C5.0의 License(GPL)을 따릅니다. 라이센스 정책 위반을 알려주신다면, 삭제토록 하겠으며, 누군가 본 소스를 사용하고, 배포시에는 C5.0에 해당되는 GPL License를 따라야 합니다. 자세한건 C5.0의 License를 검토하시기 바랍니다.
- c5.0.zip에 있는 c50이 Library source이므로, 사용할 project directory에 복사한다.
대략 아래와 같은 모습이다.
붉은색 부분이 C5.0의 source code로, 링크에서 C5.0항목에서 다운로드된 것을 압축 해제한 것이다. 현재 2.07 GPL Version이다.
c50
├─compat
│ └─sys
│ compat.c
│ time.h
│ unistd.h
│
└─source
attwinnow.c
c50.c
classify.c
confmat.c
construct.c
contin.c
defns.i
discr.c
extern.i
formrules.c
formtree.c
getdata.c
getnames.c
global.c
gpl.txt
implicitatt.
info.c
Makefile
mcost.c
modelfiles.c
p-thresh.c
prune.c
report.c
rules.c
ruletree.c
siftrules.c
sort.c
subset.c
text.i
trees.c
update.c
utility.c
xval
xval.c
- 다음과 같은 항목에 대해 VC Project에 Add files 한다.
- 다음과 같은 항목에 대해 VC Project에 Add files한다. (compat\sys\compat.c)
- /c50/source/c50.c를 c5.0.c로 복사하고, 해당 파일을 main 함수가 포함된 파일로 대체한다. 일단, WinMain 이 포함된 파일은 .c로 하고, #include <sys/resource.h>에 해당되는 함수는 주석 처리한다.
대략 아래와 같은 코드이다.
...
Attribute Att;
// struct rlimit RL;
/* Make sure there is a largish runtime stack */
// getrlimit(RLIMIT_STACK, &RL);
//
// RL.rlim_cur = Max(RL.rlim_cur, 20 * 1024 * 1024);
//
// if ( RL.rlim_max > 0 ) /* -1 if unlimited */
// {
// RL.rlim_cur = Min(RL.rlim_max, RL.rlim_cur);
// }
//
// setrlimit(RLIMIT_STACK, &RL);
... |
- Project setting -> C/C++ -> General -> Additional Include Directory는 아래와 같다.
즉, /c50/source와 /c50/compat에 대한 상대 경로를 입력한다. - Precompile header 오류등은 해당 옵션을 Off (Project setting -> C/C++ -> Precompiled Headers -> Create/Use Precompiled Header ==> Not Using ...)
E:\Temp\_c50_\Release>c5.0.exe -f vote
C5.0 [Release 2.07 GPL Edition] Mon Apr 06 17:13:39 2015
-------------------------------
Options:
Application `vote'
Class specified by attribute `Class'
Read 435 cases (17 attributes) from vote.data
Decision tree:
physician-fee-freeze = n: democrat (253.4/3.7)
physician-fee-freeze = y:
:...synfuels-corporation-cutback = n: republican (145.7/4)
synfuels-corporation-cutback = y:
:...mx-missile = y: democrat (6/1)
mx-missile = n:
:...adoption-of-the-budget-resolution = n: republican (22.6/3.3)
adoption-of-the-budget-resolution = y: democrat (7.2/2.2)
Evaluation on training data (435 cases):
Decision Tree
----------------
Size Errors
5 14( 3.2%) <<
(a) (b) <-classified as
---- ----
261 6 (a): class democrat
8 160 (b): class republican
Attribute usage:
97% physician-fee-freeze
40% synfuels-corporation-cutback
11% mx-missile
9% adoption-of-the-budget-resolution
Time: 0.0 secs
E:\Temp\_c50_\Release>pause
계속하려면 아무 키나 누르십시오 . . . |
익숙한 Tree 구문이 datamining 결과로 표현됩니다. 참고로, vote.tree 파일도 생성되니, 내용확인이 가능합니다.
data file format에 관련해서는, 링크를 참고하시기 바랍니다.
'Research > data mining' 카테고리의 다른 글
dlib를 가지고 SVM(support vector machine) 구현하여 기계 학습(machine learning) 하기 (데이터마이닝, data mining) (5) | 2014.04.07 |
---|