私は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
}
}
注、私はいくつかのコンテキストを提供するだろうと思いました。
「_...初期化する必要がありますか?」「はい」**。 – jlordo
そして、HashMapsのHashMapは通常、オブジェクトとカプセル化がないというサインです。 –
クール、私はそれを感謝することができます。助言がありますか?私がこれについて考えてきたやり方は、2段階のハッシュを持つことです。たとえば、これがスパム検出であれば、{spam:{"銀行口座":3、 "viagra":9} 'あなたの考えは? ? –