[WEKA] java에서 weka 사용하기 / 분류·클러스터 구현 템플릿 및 예제

 

 

  WEKA 라이브러리 톺아보기

자주 사용하는 패키지

 

패키지 설명
Weka.core 일반적인 컴포넌트들을 포함하는 패키지, 속성, 데이터셋, 컨버터, 행렬조작과 같은 모델링 관련 클래스 포함
weka.classifiers 다양한 분류 알고리즘을 구현
weka.clusters 다양한 클러스터링 알고리즘 구현
weka.attributeseletion 속성 선택을 위한 알고리즘 포함
weka.associations 연관 규칙을 찾기 위한 알고리즘 포함
weka.filters 데이터 셋에 적용하기 위한 필터 관련 패키지
weka.gui 각종 GUI에 대한 API

 

자주 사용하는 컴포넌트

  • Instances :  데이터 세트

  • Filter : 데이터 전처리 시 사용

  • Attribute selection : 데이터셋에서 관련없는 속성 삭제

  • Classifier/Clusterer : 데이터처리 모델

  • Evaluating : classifier/clusterer 잘되었는지 평가

 

 

  WEKA API 이용하여 구현하기

구현 순서

① Instances 클래스를 이용하여 데이터셋 로딩

② 전처리(속성 선택)

③ 모델에 적용할 필터 선택

④ 분류/클러스터 모델 구축

⑤ 모델 평가

 

자바 프로젝트에 WEKA 라이브러리 추가하기

 

 

1. https://waikato.github.io/weka-wiki/downloading_weka/에서 OS에 맞게 weka.jar파일 다운로드

2. 자바 프로젝트 [Properties] - [Java Build Path] - [Add External JARs]에서 weka.jar파일 추가하기

 

 

기본 템플릿

 

1. 데이터 로드  

2. 모델 구축 
  2-1. 옵션 설정 
  2-2. 모델에 옵션 붙이기 
  2-3. 모델에 데이터 입력 

3. 평가  
  3-1. 평가 모델에 테스터 데이터 입력 
  3-2. Cross validation 혹은 train/test random split 

4. 결과 출력 

 

구현 예제

 분류 [ classifier.java ]

// 1. 데이터 로드
Instances data = (new DataSource(args[0])).getDataSet(); 
data.setClassIndex(data.numAttributes() - 1);	// 0 ~ AttriNum (Class 제외)

// 2. 모델 구축
String[] classifierOp = new String[1];
classifierOp[0] = "-U";            	// option

J48 tree = new J48();        		// new instance of tree
tree.setOptions(classifierOp);     	// set the options
tree.buildClassifier(data);  	 	// build classifier

// 3. 평가
Evaluation eval = new Evaluation(data);
eval.crossValidateModel(tree, data, 10, new Random(1));

 

 

클러스터링 [ clusterer.java ]

// 1. 데이터 로드
Instances data = (new DataSource(args[0])).getDataSet(); 
data.setClassIndex(data.numAttributes() - 1);	// 0 ~ AttriNum (Class 제외)

// 2. 모델 구축
String[] clustererOp = new String[2]; 		// option
clustererOp[0] = "-I";                	 	// max. iterations
clustererOp[1] = "100";

EM clusterer = new EM();				 // new instance of clusterer
clusterer.setOptions(clustererOp);		// set the options
clusterer.buildClusterer(dataClusterer); 	// build classifier

// 3. 평가
ClusterEvaluation eval = new ClusterEvaluation();
eval.setClusterer(clusterer);
eval.evaluateClusterer(data);

 

 

 

 

참고

Weka in java 메뉴얼

https://weka.wikispaces.com/Use+Weka+in+your+Java+code

 

Weka API docs

http://weka.sourceforge.net/doc.dev/

 

 


 

궁금한 사항은 댓글로 남겨주세요💃💨💫
좋아요와 구독(로그인X)은 힘이 됩니다 🙈🙉

 

 

반응형
그리드형

댓글

❤️김세인트가 사랑으로 키웁니다❤️