RPTree 코드분석 2013.01.21(월) Dblab 김태훈
contents learn.c RPtree generateUniform 예제 learnRPtree.c Projection 계산 RPNode 구조도 learnRPnode : alpha 가중치 계산 조건 비교 Alpha, Median 계산 Work to do Future work
learn.c – RPtree 로드 initTreeMem() : RPTREE 초기화 If { … } : 사용자 입력 컴포넌트 일 때, 트리 구조 생성 트리 파일 존재시 로드 readTree(FILE*, RPTREE*) : tree 파일에서 트리 로드 75번째 라인
learnRPtree.c - rptree 초기화 20개의 분할기준선의 3개의 벡터를 생성 learnRPTree.c 25번째 라인
generateUniform 예제1
generateUniform 예제2 분석 데이터 삽입 예제 Data 3 개 VECT_LEN = 2 output
learn.c – 열기 옵션 판독 datafile : 바이너리, 혹은 아스키코드 열기 모드 95번째 라인
learn.c – data 읽기 파일에서 트리 데이터 로드 -20.251151 14.868531 56.792454 learn.c – data 읽기 X length y length z length 파일에서 트리 데이터 로드 data_pt[i] : datafile에서 읽은 값들이 순차적으로 저장
learn.c – data 읽기 (계속) learnRPTree(RPTree*, data_pt) RPTree* : 초기화된 트리 Data_pt : 읽은 x,y,z data
learnRPtree.C – learnRPTree 데이터 계산(벡터 내적 합) 계속 void learnRPTree(RPTree* tree, t_data* data)] 벡터 내적 총합 data Proj_data[j] data[i] tree->projection[j][i] -20.251151 14.868531 56.792454 learnRPtree.C 247라인
learnRPtree.C – learnRPTree 데이터 계산(벡터 내적 합) 출력 결과
learnRPtree.C – learnRPTree 계속 RPTree Node n = &(tree->nodes[ndx]) : rptree 노드
rPTree, RPNode 구조(learnRPtree.h) (nodes) double 3 (projections) 20 … double total 3 double mean double proj_sum 20 d proj_sum_sq 20 double smallbin [20][3] double largebin [20][3] Int proj_to_use Int proj_type double threshold Int node ndx Int is leaf * … … … 303라인
learnRPtree.C – learnRPnode 계속 alpha : 학습 가중치 데이터 If(…) : 학습 가중치 데이터 값을 계산하는 조건
alpha값을 직접 계산한 예제
learnRPtree.C – learnRPnode 계속2 n->mean[i] = … : 벡터 평균값 업데이트
mean값 계산 예제
Work to do update_stats(n,proj_data[p],p,alpha) 이하의 코드 분석중
FUTURE WORK update_stats(n,proj_data[p],p,alpha) 만남을 통해서 해결