저는 Java에 익숙하지 않고 단순한 NaiveBayes 분류자를 작성하여 연습합니다. 저는 여전히 객체 인스턴스화에 익숙하지 않고 HashMap의 HashMap을 초기화하기 위해해야 할 일이 무엇인지 궁금합니다. 새로운 관측을 분류 자에 삽입 할 때 주어진 클래스에서 보이지 않는 피쳐 이름에 대해 새로운 HashMap을 만들 수 있지만 초기화해야합니까?Java - HashMaps의 HashMap 초기화
import java.util.HashMap;
public class NaiveBayes {
private HashMap<String, Integer> class_counts;
private HashMap<String, HashMap<String, Integer>> class_feature_counts;
public NaiveBayes() {
class_counts = new HashMap<String, Integer>();
// do I need to initialize class_feature_counts?
}
public void insert() {
// todo
// I think I can create new hashmaps on the fly here for class_feature_counts
}
public String classify() {
// stub
return "";
}
// Naive Scoring:
// p(c | f_1, ... f_n) =~ p(c) * p(f_1|c) ... * p(f_n|c)
private double get_score(String category, HashMap features) {
// stub
return 0.0;
}
public static void main(String[] args) {
NaiveBayes bayes = new NaiveBayes();
// todo
}
}
이 질문은 Naive Bayes 분류 자와 관련이 없으므로 일부 컨텍스트를 제공 할 것이라고 생각했습니다.
"_... 초기화해야합니까? _"** 예 **. – jlordo
그리고 HashMaps의 HashMap은 일반적으로 객체와 캡슐화가 없다는 표시입니다. –
멋지다, 나는 그것을 알 수있다. 조언이 있니? 내가 생각하고있는 방식은 2 단계 해시를 갖는 것입니다. 예를 들어 이것이 스팸 탐지 일 경우'{spam : { "은행 계좌": 3, "viagra": 9}'당신의 생각은 무엇입니까? ? –