Java - 나이브 베이즈(Naive Bayesian) 분류
요즘 필드에서 파이썬 활용 기계학습 프로젝트 중이라 정신이 없네요.
프로젝트 수행 중에 갑자기 자바(Java)로 나이브 베이지안 알고리즘을 활용해야 되는 파트가 있어서 관련
라이브러리를 검색 중에 성공적으로 프로젝트 완성까지 사용한 오픈소스 사용방법을 간단하게 포스팅
해봅니다.
나이브 베이즈 분류에 관한 자세한 설명은 하단 링크 블로그를 방문하시면 자세한 설명이 나와 있으니
참고하시기 바랍니다.
그럼 하단에서 사용법을 알아보도록 하겠습니다.
나이브 베이즈(Naive Bayes) 추천 블로그 : 클릭 이동
나이브 베이즈(Naive Bayes) 추천 블로그 : 클릭 이동
Java 나이브 베이즈 분류(Classification) - 나이브 베이즈 소스 코드
디테일한 사용을 위해서는 하단에 관련 레퍼런스를 꼭 읽어보시기 바라며, 하단에 예제를 통해서
모델 학습 및 분류 예제를 쉽게 사용해 볼 수 있습니다.
main.java
1234567891011121314151617181920212223242526272829303132333435363738 import java.util.Arrays; import de.daslaboratorium.machinelearning.classifier.bayes.BayesClassifier;import de.daslaboratorium.machinelearning.classifier.Classifier; public class RunnableExample { public static void main(String[] args) { final Classifier<String, String> bayes = new BayesClassifier<String, String>(); final String[] positiveText = "나는 맑은 날을 좋아한다".split("\\s"); bayes.learn("Positive", Arrays.asList(positiveText)); final String[] negativeText = "나는 비가 싫다".split("\\s"); bayes.learn("Negative", Arrays.asList(negativeText)); final String[] unknownText1 = "오늘은 맑은 날이다".split("\\s"); final String[] unknownText2 = "오늘 비가 온다".split("\\s"); System.out.println( bayes.classify(Arrays.asList(unknownText1)).getCategory()); System.out.println( bayes.classify(Arrays.asList(unknownText2)).getCategory()); System.out.println( bayes.classify(Arrays.asList(unknownText1))); System.out.println( bayes.classify(Arrays.asList(unknownText2))); ((BayesClassifier<String, String>) bayes).classifyDetailed( Arrays.asList(unknownText1)); bayes.setMemoryCapacity(500); } } cs
- 3,4 라인 : Java 나이브 베이즈 관련 클래스 import
- 13 라인 : 긍정어(Positive) 관련 학습데이터(문장) 작성- 16 라인 : 부정어(Negatie) 관련 학습데이터(문장) 작성- 14,17 라인 : 분류 모델 예측을 위한 훈련 실행- 19,20 라인 : 분류 결과 및 정확도 확인을 위한 샘플 데이터 작성
- 27,29 라인 : Classifier(분류) 결과 확인 및 텍스트 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import java.util.Arrays; import de.daslaboratorium.machinelearning.classifier.bayes.BayesClassifier; import de.daslaboratorium.machinelearning.classifier.Classifier; public class RunnableExample { public static void main(String[] args) { final Classifier<String, String> bayes = new BayesClassifier<String, String>(); final String[] positiveText = "나는 맑은 날을 좋아한다".split("\\s"); bayes.learn("Positive", Arrays.asList(positiveText)); final String[] negativeText = "나는 비가 싫다".split("\\s"); bayes.learn("Negative", Arrays.asList(negativeText)); final String[] unknownText1 = "오늘은 맑은 날이다".split("\\s"); final String[] unknownText2 = "오늘 비가 온다".split("\\s"); System.out.println( bayes.classify(Arrays.asList(unknownText1)).getCategory()); System.out.println( bayes.classify(Arrays.asList(unknownText2)).getCategory()); System.out.println( bayes.classify(Arrays.asList(unknownText1))); System.out.println( bayes.classify(Arrays.asList(unknownText2))); ((BayesClassifier<String, String>) bayes).classifyDetailed( Arrays.asList(unknownText1)); bayes.setMemoryCapacity(500); } } | cs |
- 3,4 라인 : Java 나이브 베이즈 관련 클래스 import
- 13 라인 : 긍정어(Positive) 관련 학습데이터(문장) 작성
- 27,29 라인 : Classifier(분류) 결과 확인 및 텍스트 출력
Java 나이브 베이즈 Github 주소 및 레퍼런스 - 다운로드
Java 나이브 베이즈 Github 주소 및 레퍼런스 - 다운로드
Java 나이브 베이즈 분류(Classification) - 실제 실행 화면
아래 이미지로 실제 실행 화면을 확인하실 수 있습니다. 메이븐(Maven) 또는 JAR 임포트(Import) 방식으로
설치 후 실행 가능합니다.
실제 실행 화면
마무리
이번 포스팅에서는 Java 기반 활용한 나이브베이즈(Naive Bayesian) 분류(Classification) 오픈소스
사용 방법을 알아보았습니다.
나이브 베이즈 모델은 훈련(Train)과 예측 수행 속도가 타 알고리즘에 비해 상당히 빠른 것이 장점이며,
소수의 데이터 모델에서도 비교적 매개변수에 크게 영향을 받지 않고 괜찮은 정확도를 제공하고 있어 많이
사용하는 알고리즘이라고 볼 수 있습니다.
확률 모델 생성을 통한 스팸, 뉴스 등 분류 작업 분야에서 좋은 성능을 보여주고 있다고 볼 수 있습니다.
파이썬 뿐만 아니라 Golang, Java 등으로 나이브 베이즈의 기본 알고리즘에 입각해서 직접 코드를 작성
해보는 것도 좋은 학습이 될 것이라 생각이 됩니다.
다음 포스팅을 기약하며 이만 마무리하겠습니다.
소스코드 다운로드 : Java-Naive-Bayes.zip
'언어 > Java' 카테고리의 다른 글
Java(자바) 알고리즘 - 로지스틱회귀(Logistic Regression) 오픈소스 및 예제 (0) | 2018.10.18 |
---|---|
Java(자바) 디자인패턴 - 팩토리(Factory Method) 패턴 설명 및 예제소스 (7) | 2018.05.21 |
Java(자바) 디자인패턴 - 템플릿 메소드(Template Method) 패턴 설명 및 예제소스 (1) | 2018.05.18 |
Java(자바) 디자인패턴 - 어댑터(Adapter) 패턴 설명 및 예제소스 (0) | 2018.05.15 |
Java(자바) 디자인패턴 - 전략(Strategy) 패턴 설명 및 예제소스 (3) | 2018.04.18 |