[WEKA] java에서 weka 사용하기 / 분류·클러스터 구현 템플릿 및 예제
- 컴퓨터공학과/그외
- 2020. 4. 26.
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/
더 많은 시리즈 보기
👉 [WEKA] Waikato 대학의 Data Mining with WEKA 강의 수강하기 / Certification 받기(Feat. Prof. Ian Witten)
👉 [WEKA] java에서 weka 사용하기 / 분류·클러스터 구현 템플릿 및 예제
👉 [WEKA]WEKA에서 외부 라이브러리 사용하기(feat. SVM모델) / libsvm classes not in CLASSPATH! 에러해결
👉 [WEKA] WEKA사용하기 - Experimenter모드
👉 [WEKA] WEKA Clustering
👉 [WEKA] Semi-superivsed leanrning & Collective classification
궁금한 사항은 댓글로 남겨주세요💃💨💫
좋아요와 구독(로그인X)은 힘이 됩니다 🙈🙉
'컴퓨터공학과 > 그외' 카테고리의 다른 글
네이티브 앱 vs.웹 앱 - 사용자 경험(UX)에 비추어 본 모바일 앱의 발전 방향 (0) | 2020.04.30 |
---|---|
UNICODE 특장점, 유니코드 변환 방식(UTF-8과 UTF-16 특장점, 비교, 표현방법) / 한글 유니코드 (0) | 2020.04.27 |
검색엔진 서버 - 아파치 솔라·루씬·넛치 알아보기(인덱서, 서처, 크롤러 특장점/기능/검색방법) (0) | 2020.04.22 |
IEEE Citation Reference. 참고문헌 표기법. (0) | 2020.03.15 |
[Refactoring] 6. 타입 코드 (1) | 2015.11.18 |