많은 나무에 대해 xgboost.dump 텍스트 파일이 있습니다. 모든 경로를 찾아 각 경로의 값을 가져 오려고합니다. 다음은 나무 중 하나입니다. ,xgboost.dump에서 이진 트리의 모든 경로를 찾으십시오.
tree[0]:
0:[a<0.966398] yes=1,no=2,missing=1
1:[b<0.323071] yes=3,no=4,missing=3
3:[c<0.461248] yes=7,no=8,missing=7
7:leaf=0.00972768
8:leaf=-0.0179376
4:[a<0.379082] yes=9,no=10,missing=9
9:leaf=0.0146003
10:leaf=0.0454369
2:[b<0.322352] yes=5,no=6,missing=5
5:[c<0.674868] yes=11,no=12,missing=11
11:leaf=0.0497964
12:leaf=0.00953781
6:[f<0.598267] yes=13,no=14,missing=13
13:leaf=0.0504545
14:leaf=0.0867654
나는 이미
array([[ 0, 1, 3, 7],
[ 0, 1, 3, 8],
[ 0, 1, 4, 9],
[ 0, 1, 4, 10],
[ 0, 2, 5, 11],
[ 0, 2, 5, 12],
[ 0, 2, 6, 13],
[ 0, 2, 6, 14]])
등의 가능한 모든 경로를 나열하는 것을 시도했다
path1, a<0.966398, b<0.323071, c<0.461248, leaf = 0.00097268
path2, a<0.966398, b<0.323071, c>0.461248, leaf = -0.0179376
path3, a<0.966398, b>0.323071, a<0.379082, leaf = 0.0146003
path4, a<0.966398, b>0.323071, a>0.379082, leaf = 0.0454369
path5, a>0.966398, b<0.322352, c<0.674868, leaf = 0.0497964
path6, a>0.966398, b<0.322352, c>0.674868, leaf = 0.00953781
path7, a>0.966398, b>0.322352, f<0.598267, leaf = 0.0504545
path8, a>0.966398, b>0.322352, f>0.598267, leaf = 0.0864654
에 모든 경로를 변환 할 그러나 MAX_DEPTH 높은되면이 방법은 오류로 이어질 것 일부 지점은 성장을 멈추고 길은 잘못 될 것입니다. 그래서 실제, 올바른 경로를 생성하려면 텍스트 파일에서 yes, no를 구문 분석해야합니다. 제안 사항이 있으십니까? 감사합니다.